3.7 Модернизация установок MySQL на основе двоичных файлов или пакетов в Unix/Linux
В данном разделе описывается, как обновить установку MySQL на основе двоичных файлов и пакетов в Unix/Linux. Описываются методы обновления на месте и логического обновления.
Обновление на месте
Обновление на месте предполагает остановку старого сервера 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.
Чтобы выполнить обновление на месте:
Изучите информацию в разделе 3.1 «Перед началом».
Убедитесь в готовности вашей установки к обновлению, выполнив предварительные проверки в разделе 3.6 «Подготовка установки к обновлению».
Если вы используете транзакции XA с
InnoDB, выполнитеXA RECOVERперед обновлением, чтобы проверить наличие незавершенных транзакций XA. Если возвращаются результаты, либо подтвердите, либо откатите транзакции XA, выпустив операторXA COMMITилиXA ROLLBACK.-
Если вы обычно запускаете сервер MySQL с настройкой
innodb_fast_shutdownустановленным на2(холодный останов), настройте его на быстрый или медленный останов, выполнив одно из этих утверждений:SET GLOBAL innodb_fast_shutdown = 1; -- fast shutdown SET GLOBAL innodb_fast_shutdown = 0; -- slow shutdown
При быстром или медленном останове
InnoDBоставляет файлы журналов отмены и файлы данных в состоянии, с которым можно справиться в случае различий в формате файлов между выпусками. -
Остановите старый сервер MySQL. Например:
mysqladmin -u root -p shutdown
Обновите двоичные файлы или пакеты MySQL. При обновлении двоичной установки распакуйте новый пакет дистрибутива двоичных файлов MySQL. См. Получение и распаковка дистрибутива. Для установок на основе пакетов установите новые пакеты.
-
Запустите сервер 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, чтобы попробовать еще раз.
На предыдущем шаге сервер по необходимости обновляет словарь данных, внося любые необходимые изменения в базу данных системы
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 «Подготовка вашей установки к обновлению».
Для выполнения логического обновления:
Просмотрите информацию в разделе 3.1 «Перед началом».
-
Экспортируйте существующие данные из предыдущей установки 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для определения таблиц с генерируемыми столбцами. -
Остановите старый сервер MySQL. Например:
mysqladmin -u root -p shutdown
Установите MySQL 9.2. Инструкции по установке см. в главе 2 «Установка MySQL».
-
Инициализируйте новый каталог данных, как описано в разделе 2.9.1 «Инициализация каталога данных». Например:
mysqld --initialize --datadir=
/path/to/9.2-datadirСкопируйте временный пароль
'root'@'localhost', отображаемый на экране или записанный в ваш журнал ошибок, для последующего использования. -
Запустите сервер MySQL 9.2, используя новый каталог данных. Например:
mysqld_safe --user=mysql --datadir=
/path/to/9.2-datadir& -
Сбросьте пароль
root:$>
mysql -u root -pEnter password:****<- enter temporary root passwordmysql>
ALTER USER USER() IDENTIFIED BY 'your new password'; -
Загрузите ранее созданный файл дампов в новый сервер MySQL. Например:
mysql -u root -p --force < data-for-upgrade.sql
ПримечаниеНе рекомендуется загружать файл дампов, когда на сервере включены GTID (
gtid_mode=ON), если ваш файл дампов включает системные таблицы. mysqldump выдает DML-инструкции для системных таблиц, которые используют нетранзакционный движок MyISAM, и это сочетание запрещено при включенных GTID. Также имейте в виду, что загрузка файла дампов с включенными GTID на другой сервер с включенными GTID приводит к генерации разных идентификаторов транзакций. -
Выполните остальные операции обновления:
Остановите сервер, затем перезапустите его с опцией
--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 можно выполнить как обычное поэтапное обновление, следуя обычным трём последовательным шагам:
Обновите узлы MGM.
Обновите узлы данных по одному.
Обновите узлы API по одному (включая серверы MySQL).
Для обновления каждого отдельного mysqld необходимо выполнить два шага:
-
Импортируйте словарь данных.
Запустите новый сервер с опцией
--upgrade=MINIMALдля обновления словаря данных, но не системных таблиц.Сервер MySQL должен быть подключен к
NDBдля завершения этой фазы. Если существуют какие-либо таблицыNDBилиNDBINFO, и сервер не может подключиться к кластеру, он завершается с сообщением об ошибке:Failed to Populate DD tables.
Обновите системные таблицы, перезапустив каждый отдельный mysqld без опции
--upgrade=MINIMAL.
© 2025 Oracle
Licensed under the GPLv2 License.