Spec-Zone.ru › MySQL 5.7

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».

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

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

  2. Настройте MySQL для выполнения медленной остановки, установив innodb_fast_shutdown в значение 0. Например:

    mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"
    

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

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

    mysqladmin -u root -p shutdown
    
  4. Обновите бинарную установку или пакеты MySQL. При обновлении бинарной установки распакуйте новый бинарный дистрибутив MySQL. См. Получение и распаковка дистрибутива. Для пакетированных установок установите новые пакеты.

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

    mysqld_safe --user=mysql --datadir=/path/to/existing-datadir &
    
  6. Выполните mysql_upgrade. Например:

    mysql_upgrade -u root -p
    

    mysql_upgrade проверяет все таблицы во всех базах данных на несовместимость с текущей версией MySQL. mysql_upgrade также обновляет базу данных системы mysql, чтобы вы могли использовать новые привилегии или возможности.

    Примечание

    mysql_upgrade не обновляет содержимое таблиц часовых поясов или вспомогательных таблиц. Инструкции по модернизации см. в Разделе 5.1.13, «Поддержка часовых поясов в сервере MySQL» и Разделе 5.1.14, «Поддержка справочной системы на стороне сервера».

  7. Остановите и перезапустите сервер 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».

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

  1. Просмотрите информацию в Разделе 2.10.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). Вы можете использовать таблицу Информационной схемы COLUMNS для определения таблиц со сгенерированными столбцами.

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

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

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

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

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

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

    mysqld_safe --user=mysql --datadir=/path/to/5.7-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. Запустите mysql_upgrade. Например:

    mysql_upgrade -u root -p
    

    mysql_upgrade проверяет все таблицы во всех базах данных на несовместимости с текущей версией MySQL. mysql_upgrade также обновляет базу данных mysql системы, чтобы вы могли воспользоваться новыми привилегиями или возможностями.

    Примечание

    mysql_upgrade не обновляет содержимое таблиц часовых поясов или справочных таблиц. Инструкции по обновлению см. в Разделе 5.1.13, «Поддержка часовых поясов сервера MySQL» и Разделе 5.1.14, «Поддержка справочной информации на стороне сервера».

  10. Остановите и перезапустите сервер MySQL, чтобы изменения, внесенные в системные таблицы, вступили в силу. Например:

    mysqladmin -u root -p shutdown
    mysqld_safe --user=mysql --datadir=/path/to/5.7-datadir &
    

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

Spec-Zone.ru

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