2.10.4 Модернизация бинарных или пакетированных установок MySQL на Unix/Linux
В этом разделе описано, как модернизировать бинарные и пакетированные установки MySQL на Unix/Linux. Описаны методы модернизации на месте и логическая модернизация.
Модернизация на месте
Модернизация на месте подразумевает остановку старого сервера MySQL, замену старых бинарных файлов или пакетов MySQL новыми, перезапуск MySQL в существующем каталоге данных и модернизацию оставшихся частей существующей установки, которые требуют модернизации.
Модернизировать экземпляр сервера MySQL следует только после его корректной остановки. Если экземпляр был некорректно остановлен, перезапустите экземпляр и остановите его с помощью innodb_fast_shutdown=0 перед модернизацией.
Если вы модернизируете установку, первоначально созданную путём установки нескольких пакетов RPM, обновите все пакеты, а не только некоторые. Например, если вы ранее установили серверные и клиентские пакеты RPM, не обновляйте только серверный пакет RPM.
На некоторых платформах Linux установка MySQL из пакетов RPM или Debian включает поддержку systemd для управления запуском и остановкой сервера MySQL. На этих платформах mysqld_safe не установлен. В таких случаях используйте systemd для запуска и остановки сервера вместо методов, используемых в следующих инструкциях. См. Раздел 2.5.10, «Управление сервером MySQL с помощью systemd».
Для выполнения модернизации на месте:
Если вы используете XA-транзакции с
InnoDB, выполнитеXA RECOVERперед модернизацией, чтобы проверить наличие незавершенных XA-транзакций. Если возвращаются результаты, либо подтвердите, либо откатите XA-транзакции, выдав командуXA COMMITилиXA ROLLBACK.-
Настройте MySQL для выполнения медленной остановки, установив
innodb_fast_shutdownв значение0. Например:mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"
При медленной остановке
InnoDBвыполняет полную очистку и слияние буфера изменений перед остановкой, что гарантирует полную подготовку файлов данных в случае различий в формате файлов между версиями. -
Остановите старый сервер MySQL. Например:
mysqladmin -u root -p shutdown
Обновите бинарную установку или пакеты MySQL. При обновлении бинарной установки распакуйте новый бинарный дистрибутив MySQL. См. Получение и распаковка дистрибутива. Для пакетированных установок установите новые пакеты.
-
Запустите сервер MySQL 5.7, используя существующий каталог данных. Например:
mysqld_safe --user=mysql --datadir=
/path/to/existing-datadir& -
Выполните mysql_upgrade. Например:
mysql_upgrade -u root -p
mysql_upgrade проверяет все таблицы во всех базах данных на несовместимость с текущей версией MySQL. mysql_upgrade также обновляет базу данных системы
mysql, чтобы вы могли использовать новые привилегии или возможности.Примечаниеmysql_upgrade не обновляет содержимое таблиц часовых поясов или вспомогательных таблиц. Инструкции по модернизации см. в Разделе 5.1.13, «Поддержка часовых поясов в сервере MySQL» и Разделе 5.1.14, «Поддержка справочной системы на стороне сервера».
-
Остановите и перезапустите сервер MySQL, чтобы изменения, внесённые в системные таблицы, вступили в силу. Например:
mysqladmin -u root -p shutdown mysqld_safe --user=mysql --datadir=
/path/to/existing-datadir&
Логическое обновление
Логическое обновление включает экспорт SQL из старого экземпляра MySQL с помощью средства резервного копирования или экспорта, такого как mysqldump или mysqlpump, установку нового сервера MySQL и применение SQL к новому экземпляру MySQL.
Для некоторых платформ Linux установка MySQL из пакетов RPM или Debian включает поддержку systemd для управления запуском и остановкой сервера MySQL. На этих платформах mysqld_safe не устанавливается. В таких случаях используйте systemd для запуска и остановки сервера вместо методов, используемых в следующих инструкциях. См. Раздел 2.5.10, «Управление сервером MySQL с помощью systemd».
Для выполнения логического обновления:
Просмотрите информацию в Разделе 2.10.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). Вы можете использовать таблицу Информационной схемы
COLUMNSдля определения таблиц со сгенерированными столбцами. -
Остановите старый сервер MySQL. Например:
mysqladmin -u root -p shutdown
Установите MySQL 5.7. Инструкции по установке см. в Главе 2, «Установка и обновление MySQL».
-
Инициализируйте новый каталог данных, как описано в Разделе 2.9.1, «Инициализация каталога данных». Например:
mysqld --initialize --datadir=
/path/to/5.7-datadirСкопируйте временный пароль
'root'@'localhost', отображаемый на экране или записанный в журнал ошибок, для дальнейшего использования. -
Запустите сервер MySQL 5.7, используя новый каталог данных. Например:
mysqld_safe --user=mysql --datadir=
/path/to/5.7-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 приводит к генерации разных идентификаторов транзакций. -
Запустите mysql_upgrade. Например:
mysql_upgrade -u root -p
mysql_upgrade проверяет все таблицы во всех базах данных на несовместимости с текущей версией MySQL. mysql_upgrade также обновляет базу данных
mysqlсистемы, чтобы вы могли воспользоваться новыми привилегиями или возможностями.Примечаниеmysql_upgrade не обновляет содержимое таблиц часовых поясов или справочных таблиц. Инструкции по обновлению см. в Разделе 5.1.13, «Поддержка часовых поясов сервера MySQL» и Разделе 5.1.14, «Поддержка справочной информации на стороне сервера».
-
Остановите и перезапустите сервер MySQL, чтобы изменения, внесенные в системные таблицы, вступили в силу. Например:
mysqladmin -u root -p shutdown mysqld_safe --user=mysql --datadir=
/path/to/5.7-datadir&
© 2025 Oracle
Licensed under the GPLv2 License.