Spec-Zone.ru › MySQL 9.2

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

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

  • Обновление на месте

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

  • Модернизация кластера MySQL

Обновление на месте

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

Примечание

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

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

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

Чтобы выполнить обновление на месте:

  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 9.2, используя существующий каталог данных. Например:

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

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

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

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

  8. На предыдущем шаге сервер по необходимости обновляет словарь данных, внося любые необходимые изменения в базу данных системы mysql между MySQL 9.1 и MySQL 9.2, чтобы вы могли воспользоваться новыми привилегиями или возможностями. Он также обновляет базу данных Performance Schema, INFORMATION_SCHEMA и sys для MySQL 9.2 и проверяет все пользовательские базы данных на несовместимость с текущей версией 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 9.2, выполните действия, описанные в разделе 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, предоставленная в более ранних версиях, использует неправильный синтаксис для определений столбцов с генерируемыми значениями (Ошибка #20769542). Вы можете использовать таблицу Information Schema COLUMNS для определения таблиц с генерируемыми столбцами.

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

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

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

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

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

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

    mysqld_safe --user=mysql --datadir=/path/to/9.2-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/9.2-datadir --upgrade=FORCE &
    

    При перезапуске с опцией --upgrade=FORCE, сервер внесёт все необходимые изменения в схему системы mysql между MySQL 9.1 и MySQL 9.2, чтобы вы могли воспользоваться новыми привилегиями или возможностями. Он также обновит схему Performance Schema, INFORMATION_SCHEMA и sys для MySQL 9.2 и проверит все пользовательские схемы на предмет несовместимости с текущей версией 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-9.2-en/upgrade-binary-package.html

Spec-Zone.ru

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