Spec-Zone.ru › MySQL 8.4

3.7 Модернизация бинарных или основанных на пакетах установок MySQL на Unix/Linux

В этом разделе описано, как модернизировать бинарные и основанные на пакетах установки MySQL на Unix/Linux. Описаны методы модернизации на месте и логической модернизации.

  • Модернизация на месте

  • Логическая модернизация

  • Модернизация MySQL Cluster

Модернизация на месте

Модернизация на месте включает в себя остановку старого сервера MySQL, замену старых бинарных файлов или пакетов MySQL на новые, перезапуск MySQL в существующем каталоге данных и модернизацию любых оставшихся частей существующей установки, требующих модернизации. Подробности о том, что может потребовать модернизации, см. в разделе 3.4 «Что модернизирует процесс модернизации MySQL».

Примечание

Если вы модернизируете установку, первоначально созданную путём установки нескольких пакетов RPM, модернизируйте все пакеты, а не только некоторые. Например, если вы ранее установили пакеты RPM сервера и клиента, не модернизируйте только пакет сервера.

Для некоторых платформ Linux установка MySQL из пакетов RPM или Debian включает поддержку systemd для управления запуском и остановкой сервера MySQL. На этих платформах mysqld_safe не установлен. В таких случаях для запуска и остановки сервера используйте systemd вместо методов, используемых в следующих инструкциях. См. раздел 2.5.9 «Управление сервером MySQL с помощью systemd».

Для модернизации установок MySQL Cluster см. также Модернизацию MySQL Cluster.

Для выполнения модернизации на месте:

  1. Просмотрите информацию в разделе 3.1 «Перед началом».

  2. Убедитесь в готовности вашей установки к модернизации, выполнив предварительные проверки в разделе 3.6 «Подготовка вашей установки к модернизации».

  3. Если вы используете XA-транзакции с InnoDB, запустите XA RECOVER перед модернизацией, чтобы проверить наличие не подтверждённых XA-транзакций. Если результаты возвращаются, либо подтвердите, либо откатите XA-транзакции, выпустив XA COMMIT или XA ROLLBACK оператор.

  4. Если вы обычно запускаете свой сервер MySQL с настройкой innodb_fast_shutdown установленной на значение 2 (холодная остановка), настройте его на выполнение быстрой или медленной остановки, выполнив любой из этих операторов:

    SET GLOBAL innodb_fast_shutdown = 1; -- fast shutdown
    SET GLOBAL innodb_fast_shutdown = 0; -- slow shutdown
    

    При быстрой или медленной остановке InnoDB оставляет свои журналы отката и файлы данных в состоянии, с которым можно справиться в случае различий в формате файлов между выпусками.

  5. Остановите старый сервер MySQL. Например:

    mysqladmin -u root -p shutdown
    
  6. Модернизируйте бинарные файлы или пакеты MySQL. Если вы модернизируете бинарную установку, распакуйте новый пакет бинарной дистрибуции MySQL. См. Получение и распаковка дистрибутива. Для установок на основе пакетов установите новые пакеты.

  7. Запустите сервер MySQL 8.4, используя существующий каталог данных. Например:

    mysqld_safe --user=mysql --datadir=/path/to/existing-datadir &
    

    Если существуют зашифрованные InnoDB табличные пространства, используйте опцию --early-plugin-load для загрузки плагина keyring.

    Когда вы запускаете сервер MySQL 8.4, он автоматически определяет, присутствуют ли таблицы словаря данных. Если нет, сервер создаёт их в каталоге данных, заполняет их метаданными и затем переходит к обычной последовательности запуска. Во время этого процесса сервер модернизирует метаданные всех объектов базы данных, включая базы данных, табличные пространства, системные и пользовательские таблицы, представления и хранимые программы (хранимые процедуры и функции, триггеры и события планировщика событий). Сервер также удаляет файлы, которые ранее использовались для хранения метаданных. Например, после модернизации с MySQL 8.3 на MySQL 8.4 вы можете заметить, что у таблиц больше нет файлов .frm.

    Если этот шаг завершится неудачно, сервер отменяет все изменения в каталоге данных. В этом случае вам следует удалить все файлы журнала переписывания, запустить сервер MySQL 8.3 в том же каталоге данных и исправить причину любых ошибок. Затем выполните ещё одну медленную остановку сервера 8.3 и запустите сервер MySQL 8.4, чтобы попробовать снова.

  8. На предыдущем шаге сервер модернизирует словарь данных по мере необходимости, внося любые необходимые изменения в mysql системную базу данных между MySQL 8.3 и MySQL 8.4, чтобы вы могли воспользоваться новыми привилегиями или возможностями. Он также обновляет базу данных Performance Schema, INFORMATION_SCHEMA и sys для MySQL 8.4 и проверяет все пользовательские базы данных на несовместимость с текущей версией MySQL.

Примечание

Процесс модернизации не модернизирует содержимое таблиц часовых поясов. Инструкции по модернизации см. в разделе 7.1.15 «Поддержка часовых поясов сервера MySQL».

Логическое обновление

Логическое обновление включает экспорт SQL из старого экземпляра MySQL с использованием резервной копии или утилиты экспорта, такой как mysqldump, установку нового сервера MySQL и применение SQL к новому экземпляру MySQL. Подробности о том, что может потребовать обновления, см. в разделе 3.4 «Что обновляется в процессе обновления MySQL».

Примечание

Для некоторых платформ Linux установка MySQL из пакетов RPM или Debian включает поддержку systemd для управления запуском и остановкой сервера MySQL. На этих платформах mysqld_safe не установлена. В таких случаях для запуска и остановки сервера используйте systemd вместо методов, используемых в следующих инструкциях. См. раздел 2.5.9 «Управление сервером MySQL с помощью systemd».

Предупреждение

Применение SQL, извлеченного из предыдущей версии MySQL, к новой версии MySQL может привести к ошибкам из-за несовместимостей, введенных новыми, измененными, устаревшими или удаленными функциями и возможностями. Следовательно, SQL, извлеченный из предыдущей версии MySQL, может потребовать модификации для обеспечения логического обновления.

Чтобы выявить несовместимости перед обновлением до последней версии MySQL 8.4, выполните шаги, описанные в разделе 3.6 «Подготовка вашей установки к обновлению».

Для выполнения логического обновления:

  1. Просмотрите информацию в разделе 3.1 «Перед началом».

  2. Экспортируйте существующие данные из предыдущей установки MySQL:

    mysqldump -u root -p
      --add-drop-table --routines --events
      --all-databases --force > data-for-upgrade.sql
    
    Примечание

    Используйте опции --routines и --events с mysqldump (как показано выше), если ваши базы данных включают хранимые программы. Опция --all-databases включает все базы данных в дампе, включая базу данных mysql, которая содержит системные таблицы.

    Важно

    Если у вас есть таблицы, содержащие сгенерированные столбцы, используйте утилиту mysqldump, поставляемую с MySQL 5.7.9 или более поздней версией, для создания файлов дампов. Утилита mysqldump, поставляемая в более ранних версиях, использует неправильный синтаксис для определений столбцов, сгенерированных (Bug #20769542). Вы можете использовать таблицу Информационной схемы COLUMNS для определения таблиц со сгенерированными столбцами.

  3. Остановите старый сервер MySQL. Например:

    mysqladmin -u root -p shutdown
    
  4. Установите MySQL 8.4. Инструкции по установке см. в главе 2 «Установка MySQL».

  5. Инициализируйте новый каталог данных, как описано в разделе 2.9.1 «Инициализация каталога данных». Например:

    mysqld --initialize --datadir=/path/to/8.4-datadir
         

    Скопируйте временный пароль 'root'@'localhost', отображаемый на экране или записанный в журнал ошибок, для последующего использования.

  6. Запустите сервер MySQL 8.4, используя новый каталог данных. Например:

    mysqld_safe --user=mysql --datadir=/path/to/8.4-datadir &
    
  7. Сбросьте пароль root:

    $> mysql -u root -p
    Enter password: ****  <- enter temporary root password
    
    mysql> ALTER USER USER() IDENTIFIED BY 'your new password';
         
  8. Загрузите ранее созданный файл дампа в новый сервер MySQL. Например:

    mysql -u root -p --force < data-for-upgrade.sql
    
    Примечание

    Не рекомендуется загружать файл дампа, когда включены GTID на сервере (gtid_mode=ON), если ваш файл дампа включает системные таблицы. mysqldump выдает инструкции DML для системных таблиц, использующих нетранзакционный движок MyISAM, и это сочетание недопустимо при включенных GTID. Также имейте в виду, что загрузка файла дампа с включенными GTID на один сервер в другой сервер с включенными GTID приводит к генерации разных идентификаторов транзакций.

  9. Выполните все оставшиеся операции обновления:

    Остановите сервер, затем перезапустите его с параметром --upgrade=FORCE для выполнения оставшихся задач обновления:

    mysqladmin -u root -p shutdown
    mysqld_safe --user=mysql --datadir=/path/to/8.4-datadir --upgrade=FORCE &
    

    При перезапуске с --upgrade=FORCE сервер вносит все необходимые изменения в схему системы mysql между MySQL 8.3 и MySQL 8.4, чтобы вы могли воспользоваться новыми привилегиями или возможностями. Он также обновляет схему Performance Schema, INFORMATION_SCHEMA и sys до актуальной версии MySQL 8.4 и проверяет все схемы пользователей на несовместимости с текущей версией MySQL.

Примечание

Процесс обновления не обновляет содержимое таблиц часовых поясов. Инструкции по обновлению см. в разделе 7.1.15 «Поддержка часовых поясов сервера MySQL».

Обновление MySQL Cluster

Информация в этом разделе является дополнением к процедуре обновления на месте, описанной в разделе по обновлению на месте, для использования в случае обновления MySQL Cluster.

Обновление MySQL Cluster можно выполнить как обычное поэтапное обновление, следуя стандартным трём упорядоченным шагам:

  1. Обновление узлов MGM.

  2. Поочередное обновление узлов данных.

  3. Поочередное обновление API-узлов (включая серверы MySQL).

Для обновления каждого отдельного mysqld требуется два шага:

  1. Импорт словаря данных.

    Запустите новый сервер с опцией --upgrade=MINIMAL, чтобы обновить словарь данных, но не системные таблицы.

    Для завершения этой фазы сервер MySQL должен быть подключен к NDB. Если существуют таблицы NDB или NDBINFO, и сервер не может подключиться к кластеру, он завершается с сообщением об ошибке:

    Failed to Populate DD tables.
    
  2. Обновите системные таблицы, перезапустив каждый отдельный mysqld без опции --upgrade=MINIMAL.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/upgrade-binary-package.html

Spec-Zone.ru

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