Как обновить СУБД MariaDB 10.1 до 10.6 на Debian 9?

При импорте базы данных на сервер где используется версия MariaDB более низкой версии могут возникнуть непредвиденные ситуации, например, ошибка с сообщением «Specified key was too long; max key length is 767 bytes». В данном случае подобную ошибку вызвал импорт дампа БД с версии 10.5 в версию которая поставлялась из репозиториев для Debian 9 — 10.1. Это связано с тем, что MariaDB 10.2 использует InnoDB в качестве механизма хранения по умолчанию, а не XtraDB, который использовался в MariaDB 10.1 и ранее

Решений на самом деле может существовать не одно. Фиксить можно по разному, но в данном случае будет рассмотрено обновление до нужной, актуальной версии СУБД.

Обновление СУБД MariaDB

Первым делом нам нужно изменить конфигурацию репозитория. Для каждого дистрибутива Linux (не подойдет для RHEL, CentOS, Fedora, SLES, OpenSUSE и других подобных дистрибутивов) подход будет свой. В данной статье я рассмотрю пример для Debian, Ubuntu.

подобрать под свою ОС поможет вот эта ссылка

В моем примере я использую вот этот скрипт:

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash

Он добавит и обновит репозитории. Получим:

[info] Checking for script prerequisites.
[info] Repository file successfully written to /etc/apt/sources.list.d/mariadb.list
[info] Adding trusted package signing keys...
[info] Running apt-get update...
[info] Done adding trusted package signing keys

Детально можно ознакомиться тут.

Затем нам нужно остановить наш сервер баз данных. Сделать это можно по разному, я реализую с помощью этой команды:

sudo systemctl stop mariadb.service

Затем проверьте текущий статус СУБД:

sudo systemctl status mariadb.service

Получим:

Status: "MariaDB server is down"

Удалите старую версию MariaDB. В Debian, Ubuntu и других подобных дистрибутивах Linux выполните следующее:

sudo apt-get remove mariadb-server

Установите новую версию MariaDB. Установка пакетов для MariaDB 10.4 и более свежих версий с APT выполните следующее:

sudo apt-get install mariadb-server galera-4 mariadb-client libmariadb3 mariadb-backup mariadb-common

Затем добавьте запуск (автозагрузка) сервера MariaDB при старте ОС (полезно при перезагрузках), далее запустите и проверьте текущий статус и версию.

sudo systemctl enable mariadb.service
sudo systemctl start mariadb.service
sudo systemctl status mariadb.service

Получим:

● mariadb.service - MariaDB 10.6.5 database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Thu 2021-11-11 07:25:17 UTC; 29s ago
     Docs: man:mariadbd(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 16727 (mariadbd)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─16727 /usr/sbin/mariadbd

И финальным действием выполните Апгрэйд:

mysql_upgrade

Концовочка вывода:

Phase 7/7: Running 'FLUSH PRIVILEGES'
OK

Это позволит обеспечить mysql полную совместимость системных таблиц в базе данных с новой версией, а также выполнит быструю проверку всех таблиц и пометит их, как совместимые с новой версией MariaDB.

🙂