3.7 Модернизация бинарных или основанных на пакетах установок MySQL на Unix/Linux
В этом разделе описано, как модернизировать бинарные и основанные на пакетах установки MySQL на Unix/Linux. Описаны методы модернизации на месте и логической модернизации.
Модернизация на месте
Модернизация на месте включает в себя остановку старого сервера 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.
Для выполнения модернизации на месте:
Просмотрите информацию в разделе 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 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, чтобы попробовать снова.
На предыдущем шаге сервер модернизирует словарь данных по мере необходимости, внося любые необходимые изменения в
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 «Подготовка вашей установки к обновлению».
Для выполнения логического обновления:
Просмотрите информацию в разделе 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, поставляемая в более ранних версиях, использует неправильный синтаксис для определений столбцов, сгенерированных (Bug #20769542). Вы можете использовать таблицу Информационной схемы
COLUMNSдля определения таблиц со сгенерированными столбцами. -
Остановите старый сервер MySQL. Например:
mysqladmin -u root -p shutdown
Установите MySQL 8.4. Инструкции по установке см. в главе 2 «Установка MySQL».
-
Инициализируйте новый каталог данных, как описано в разделе 2.9.1 «Инициализация каталога данных». Например:
mysqld --initialize --datadir=
/path/to/8.4-datadirСкопируйте временный пароль
'root'@'localhost', отображаемый на экране или записанный в журнал ошибок, для последующего использования. -
Запустите сервер MySQL 8.4, используя новый каталог данных. Например:
mysqld_safe --user=mysql --datadir=
/path/to/8.4-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/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 можно выполнить как обычное поэтапное обновление, следуя стандартным трём упорядоченным шагам:
Обновление узлов 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.