Spec-Zone.ru › MariaDB

Понижение версии MariaDB между основными версиями

Понижение версии MariaDB между основными версиями не поддерживается официально.

Для второстепенных версий поддержка понижения до более ранней версии gamma/RC/GA предоставляется, так как мы не изменяем формат хранения данных после Alpha и очень редко во время Beta (такая смена происходит только при критических ошибках). Существуют несколько редких случаев, когда в версии GA происходят несовместимые изменения, например, MariaDB 10.1.21 исправил ошибку несовместимости формата файла, которая препятствует понижению до более ранних релизов MariaDB 10.1. После MariaDB 10.1.21 подобных случаев в релизах GA не наблюдалось.

Основная причина, по которой понижение между основными версиями не работает, заключается в следующем:

  • Изменения в таблицах привилегий/статуса в схеме mysql. Такие изменения происходят между большинством основных версий, так как мы постоянно улучшаем систему привилегий.
  • Изменения, влияющие на способ хранения данных на диске. Это происходит реже и обычно специфично для таблицы. Например, если для таблицы в MariaDB 10.3 использовался Instant add column, то такая таблица не может быть открыта в MariaDB 10.2.
  • Между основными версиями часто происходят значительные изменения, даже если не используются новые функции. Например, как MariaDB 10.2, так и MariaDB 10.3 вводят новые версии журнала переигрывания.

Единственный надежный способ понизить версию — это восстановить из полной резервной копии, созданной до обновления, и запустить старую версию MariaDB. Необходимо, как минимум, создать резервную копию схемы mysql, так как большинство изменений при обновлении происходит в этом каталоге. Это может быть полезно, если нужно понизить версию до более ранней версии MariaDB. Подробнее об этом позже.

Некоторые пользователи сообщали об успешном понижении версии, но существует множество потенциальных проблем, и понижение между двумя основными версиями никак не тестируется разработчиками MariaDB.

В общем случае, можно понизить основную версию до более ранней, если на новой версии ещё не запускался mariadb-upgrade. Однако рекомендуется всегда использовать mariadb-upgrade после обновления до новой основной версии, так как в противном случае некоторые функции безопасности нового сервера могут не работать, а таблицы, имеющие индексы, использующие изменённую кодировку символов, могут работать неправильно.

Предполагая, что вам необходимо понизить до более ранней основной версии, вот список действий, которые необходимо выполнить:

  • Сервер MariaDB обязательно должен быть остановлен корректно. Это означает:
    • Следует убедиться, что innodb_fast_shutdown установлен в 0.
    • Используйте команду SHUTDOWN, mariadb-admin shutdown или официальные команды операционной системы, такие как systemctl stop mariadb.service.
  • Запустите старый сервер с параметром --skip-privilege-tables.
  • Используйте ALTER TABLE для восстановления таблиц схемы mysql до их первоначального определения или удалите и пересоздайте таблицы mysql. Вы можете найти старое определение, используя mariadb-install-db для создания отдельного временного каталога данных. Запуск сервера MariaDB в временном каталоге позволит вам использовать SHOW CREATE TABLE для поиска старого определения.
  • Выполните FLUSH PRIVILEGES для перезагрузки старых таблиц.

Случаи, когда вышеуказанное не сработает, — это случаи, когда формат таблицы изменился несовместимым образом. В этом случае затронутые таблицы могут быть неиспользуемы в более ранней версии.

Ниже приведён неполный список случаев, когда таблица не будет работоспособной в более ранней основной версии:

  • MariaDB 10.4 → MariaDB 10.3
    • Любая таблица InnoDB, где использовался ALTER TABLE ALGORITHM=INSTANT DROP COLUMN
    • В MariaDB 10.4 таблица MariaDB mysql.user была заменена на mysql.global_priv table, что может вызвать проблемы при понижении до 10.3.
  • MariaDB 10.3 → MariaDB 10.2
    • Любая таблица InnoDB, где использовался ALTER TABLE ALGORITHM=INSTANT ADD COLUMN.
Контент, воспроизведённый на этом сайте, является собственностью соответствующих владельцев, и этот контент не проходит предварительной проверки со стороны MariaDB. Мнения, информация и мнения, выраженные в этом контенте, не обязательно отражают взгляды MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/downgrading-between-major-versions-of-mariadb/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API