Spec-Zone.ru › MySQL 5.7

4.4.7 mysql_upgrade — Проверка и обновление таблиц MySQL

Каждый раз при обновлении MySQL следует выполнить mysql_upgrade, который ищет несовместимости с обновлённым сервером MySQL:

  • Он обновляет системные таблицы в схеме mysql, чтобы вы могли воспользоваться новыми привилегиями или возможностями, которые могли быть добавлены.

  • Он обновляет схему Performance Schema и схему sys.

  • Он проверяет схемы пользователей.

Если mysql_upgrade обнаруживает возможную несовместимость таблицы, он выполняет проверку таблицы и, если проблемы обнаружены, пытается восстановить таблицу. Если таблицу нельзя восстановить, см. Раздел 2.10.12, «Восстановление или ремонт таблиц или индексов» для стратегий ручного ремонта таблиц.

mysql_upgrade общается напрямую с сервером MySQL, отправляя ему SQL-команды, необходимые для выполнения обновления.

Важно

В MySQL 5.7.11 значение по умолчанию для --early-plugin-load является именем файла библиотеки плагина keyring_file, что приводит к загрузке этого плагина по умолчанию. В MySQL 5.7.12 и более поздних версиях значение по умолчанию для --early-plugin-load пустое; для загрузки плагина keyring_file необходимо явно указать опцию со значением, содержащим имя файла библиотеки плагина keyring_file.

Шифрование табличного пространства InnoDB требует, чтобы плагин keyring был загружен до инициализации InnoDB, поэтому это изменение значения по умолчанию для --early-plugin-load создаёт несовместимость при обновлении с 5.7.11 до 5.7.12 или выше. Администраторы, у которых зашифрованы InnoDB табличные пространства, должны предпринять явные действия, чтобы обеспечить постоянную загрузку плагина keyring: Запустите сервер с опцией --early-plugin-load, в которой указан имя файла библиотеки плагина. Для дополнительной информации см. Раздел 6.4.4.1, «Установка плагина Keyring».

Важно

Если вы обновляетесь до MySQL 5.7.2 или более поздней версии с версии, более старой, чем 5.7.2, изменение в таблице mysql.user требует специальной последовательности шагов для выполнения обновления с помощью mysql_upgrade. Подробности см. в Разделе 2.10.3, «Изменения в MySQL 5.7».

Примечание

В Windows необходимо запускать mysql_upgrade с правами администратора. Это можно сделать, запустив командную строку как администратор и выполнив команду. В противном случае обновление может не выполниться должным образом.

Внимание

Всегда создавайте резервную копию текущей установки MySQL до выполнения обновления. См. Раздел 7.2, «Методы резервного копирования базы данных».

Некоторые несовместимости при обновлении могут потребовать специальной обработки до обновления вашей установки MySQL и запуска mysql_upgrade. См. Раздел 2.10, «Обновление MySQL» для получения инструкций по определению, применяются ли такие несовместимости к вашей установке, и как их обрабатывать.

Используйте mysql_upgrade следующим образом:

  1. Убедитесь, что сервер запущен.

  2. Вызовите mysql_upgrade для обновления системных таблиц в схеме mysql и проверки и ремонта таблиц в других схемах:

    mysql_upgrade [options]
    
  3. Остановите сервер и перезапустите его, чтобы изменения в системных таблицах вступили в силу.

Если у вас несколько экземпляров сервера MySQL, которые нужно обновить, вызовите mysql_upgrade с параметрами подключения, подходящими для подключения к каждому из требуемых серверов. Например, для серверов, работающих на локальном хосте на портах от 3306 до 3308, обновите каждый из них, подключившись к соответствующему порту:

mysql_upgrade --protocol=tcp -P 3306 [other_options]
mysql_upgrade --protocol=tcp -P 3307 [other_options]
mysql_upgrade --protocol=tcp -P 3308 [other_options]

Для подключений к локальному хосту в Unix, опция --protocol=tcp принудительно подключается с использованием TCP/IP вместо файла сокета Unix.

По умолчанию, mysql_upgrade выполняется как пользователь MySQL root. Если пароль root истек при запуске mysql_upgrade, отображается сообщение, сообщающее об истечении срока действия пароля и о том, что mysql_upgrade завершился неудачно. Чтобы исправить это, сбросьте пароль root, чтобы он не истекал, и снова запустите mysql_upgrade. Сначала подключитесь к серверу как root:

$> mysql -u root -p
Enter password: ****  <- enter root password here

Сбросьте пароль с помощью ALTER USER:

mysql> ALTER USER USER() IDENTIFIED BY 'root-password';

Затем выйдите из mysql и снова запустите mysql_upgrade:

$> mysql_upgrade [options]
Примечание

Если вы запускаете сервер с системной переменной disabled_storage_engines, установленной для отключения определённых движков хранения (например, MyISAM), mysql_upgrade может завершиться ошибкой, подобной этой:

mysql_upgrade: [ERROR] 3161: Storage engine MyISAM is disabled
(Table creation is disallowed).

Для обработки этого перезапустите сервер с отключённой disabled_storage_engines. Затем вы, вероятно, сможете успешно запустить mysql_upgrade. После этого перезапустите сервер с disabled_storage_engines, установленной в её исходное значение.

Если не вызван с опцией --upgrade-system-tables, mysql_upgrade обрабатывает все таблицы во всех схемах пользователей при необходимости. Проверка таблиц может занять много времени. Каждая таблица блокируется и недоступна для других сеансов во время обработки. Операции проверки и ремонта могут быть длительными, особенно для больших таблиц. Проверка таблиц использует опцию FOR UPGRADE инструкции CHECK TABLE. Подробности об этом см. Раздел 13.7.2.2, «CHECK TABLE Statement».

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

mysql_upgrade сохраняет номер версии MySQL в файле с именем mysql_upgrade_info в каталоге данных. Это используется для быстрой проверки того, все ли таблицы проверялись для этого выпуска, чтобы пропустить проверку таблиц. Чтобы проигнорировать этот файл и выполнить проверку независимо, используйте опцию --force.

END_OF_DOCUMENT_MARKER

mysql_upgrade проверяет строки таблицы системы mysql.user и, для любой строки с пустым столбцом plugin, устанавливает этот столбец в значение 'mysql_native_password' или 'mysql_old_password', в зависимости от формата хэша значения столбца Password.

Поддержка хэширования паролей версии до 4.1 и mysql_old_password была удалена, поэтому mysql_upgrade устанавливает пустые значения plugin в значение 'mysql_native_password', если учетные данные используют формат хэша, совместимый с этим плагином. Строки с хэшем пароля версии до 4.1 необходимо обновлять вручную. Инструкции по обновлению учетных записей см. в Разделе 6.4.1.3, «Миграция от хэширования паролей версии до 4.1 и плагина mysql_old_password».

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

Если не вызван с опцией --skip-sys-schema, mysql_upgrade устанавливает схему sys, если она не установлена, и обновляет ее до текущей версии в противном случае. Возникает ошибка, если существует схема sys, но нет представления version, предполагается, что ее отсутствие указывает на схему, созданную пользователем:

A sys schema exists with no sys.version view. If
you have a user created sys schema, this must be renamed for the
upgrade to succeed.

Для обновления в этом случае сначала удалите или переименуйте существующую схему sys.

mysql_upgrade проверяет таблицы InnoDB с разбиением, созданные с помощью общего обработчика разбиения, и пытается обновить их до нативного разбиения InnoDB. (Ошибка #76734, Ошибка #20727344) Вы можете обновить такие таблицы по отдельности в клиенте mysql с помощью SQL-запроса ALTER TABLE ... UPGRADE PARTITIONING.

mysql_upgrade поддерживает следующие опции, которые могут быть указаны в командной строке или в группах [mysql_upgrade] и [client] файла опций. Сведения о файлах опций, используемых программами MySQL, см. в Разделе 4.2.2.2, «Использование файлов опций».

Таблица 4.12 Параметры mysql_upgrade

Таблица 4.12 Параметры mysql_upgrade
Имя параметра Описание Введен
--bind-address Использование указанного сетевого интерфейса для подключения к MySQL Server
--character-sets-dir Директория, в которой установлены наборы символов
--compress Сжатие всей информации, передаваемой между клиентом и сервером
--debug Запись отладочного журнала
--debug-check Вывод отладочной информации при завершении программы
--debug-info Вывод отладочной информации, статистики памяти и ЦП при завершении программы
--default-auth Плагин аутентификации для использования
--default-character-set Укажите набор символов по умолчанию
--defaults-extra-file Чтение указанного файла параметров дополнительно к обычным файлам параметров
--defaults-file Чтение только указанного файла параметров
--defaults-group-suffix Значение суффикса группы параметров
--force Вынужденное выполнение, даже если mysql_upgrade уже был выполнен для текущей версии MySQL
--help Отображение сообщения справки и выход
--host Хост, на котором расположен сервер MySQL
--login-path Чтение параметров пути входа из .mylogin.cnf
--max-allowed-packet Максимальная длина пакета для отправки или получения от сервера
--net-buffer-length Размер буфера для связи TCP/IP и сокета
--no-defaults Не читать файлы параметров
--password Пароль для подключения к серверу
--pipe Подключение к серверу с использованием именованной трубы (только Windows)
--plugin-dir Директория, в которой установлены плагины
--port Номер TCP/IP порта для подключения
--print-defaults Вывод параметров по умолчанию
--protocol Протокол транспорта для использования
--shared-memory-base-name Имя общей памяти для подключений с общей памятью (только Windows)
--skip-sys-schema Не устанавливать или обновлять схему sys
--socket Файл Unix-сокет или именованная труба Windows для использования
--ssl Включить шифрование соединения
--ssl-ca Файл, содержащий список доверенных сертификатов SSL-Центров сертификации
--ssl-capath Директория, содержащая файлы сертификатов доверенных SSL-Центров сертификации
--ssl-cert Файл, содержащий X.509 сертификат
--ssl-cipher Разрешенные шифры для шифрования соединения
--ssl-crl Файл, содержащий списки отзыва сертификатов
--ssl-crlpath Директория, содержащая файлы списков отзыва сертификатов
--ssl-key Файл, содержащий X.509 ключ
--ssl-mode Требуемое состояние безопасности соединения с сервером 5.7.11
--ssl-verify-server-cert Проверка имени хоста по имени сервера в сертификате Common Name
--tls-version Разрешенные TLS-протоколы для зашифрованных подключений 5.7.10
--upgrade-system-tables Обновить только системные таблицы, а не схемы пользователей
--user Имя пользователя MySQL для подключения к серверу
--verbose Режим подробного вывода
--version-check Проверка правильности версии сервера
--write-binlog Запись всех операторов в двоичный журнал

  • --help

    Формат командной строки --help

    Отобразить краткое сообщение справки и выйти.

  • --bind-address=ip_address

    Формат командной строки --bind-address=ip_address

    На компьютере с несколькими сетевыми интерфейсами, используйте этот параметр для выбора интерфейса, используемого для подключения к серверу MySQL.

  • --character-sets-dir=dir_name

    Формат командной строки --character-sets-dir=dir_name
    Тип Имя каталога

    Каталог, где установлены наборы символов. См. Раздел 10.15, «Настройка наборов символов».

  • --compress, -C

    Формат командной строки --compress[={OFF|ON}]
    Тип Булево
    Значение по умолчанию OFF

    Сжать всю информацию, передаваемую между клиентом и сервером, если это возможно. См. Раздел 4.2.6, «Управление сжатием соединения».

  • --debug[=debug_options], -# [debug_options]

    Формат командной строки --debug[=#]
    Тип Строка
    Значение по умолчанию d:t:O,/tmp/mysql_upgrade.trace

    Записать отладочный журнал. Типичная строка debug_options — d:t:o,file_name. По умолчанию d:t:O,/tmp/mysql_upgrade.trace.

  • --debug-check

    Формат командной строки --debug-check
    Тип Булево

    Вывести некоторые отладочные данные при завершении программы.

  • --debug-info, -T

    Формат командной строки --debug-info
    Тип Булево
    Значение по умолчанию FALSE

    Вывести отладочную информацию и статистику использования памяти и процессора при завершении программы.

  • --default-auth=plugin

    Формат командной строки --default-auth=plugin
    Тип Строка

    Подсказка о том, какой плагин проверки подлинности клиента использовать. См. Раздел 6.2.13, «Подключаемые механизмы аутентификации».

  • --default-character-set=charset_name

    Формат командной строки --default-character-set=name
    Тип Строка

    Используйте charset_name в качестве набора символов по умолчанию. См. Раздел 10.15, «Настройка наборов символов».

  • --defaults-extra-file=file_name

    Формат командной строки --defaults-extra-file=file_name
    Тип Имя файла

    Прочитать этот файл параметров после глобального файла параметров, но (на Unix) перед файлом параметров пользователя. Если файл не существует или недоступен, произойдет ошибка. Если file_name не является абсолютным именем пути, оно интерпретируется относительно текущей директории.

    Дополнительную информацию об этом и других параметрах файла параметров см. в Разделе 4.2.2.3, «Параметры командной строки, влияющие на обработку файла параметров».

  • --defaults-file=file_name

    Формат командной строки --defaults-file=file_name
    Тип Имя файла

    Используйте только указанный файл параметров. Если файл не существует или недоступен, произойдет ошибка. Если file_name не является абсолютным именем пути, оно интерпретируется относительно текущей директории.

    Дополнительную информацию об этом и других параметрах файла параметров см. в Разделе 4.2.2.3, «Параметры командной строки, влияющие на обработку файла параметров».

  • --defaults-group-suffix=str

    Формат командной строки --defaults-group-suffix=str
    Тип Строка

    Читать не только обычные группы параметров, но и группы с обычными именами и суффиксом str. Например, mysql_upgrade обычно читает группы [client] и [mysql_upgrade]. Если этот параметр задан как --defaults-group-suffix=_other, mysql_upgrade также читает группы [client_other] и [mysql_upgrade_other].

    Дополнительную информацию об этом и других параметрах файла параметров см. в Разделе 4.2.2.3, «Параметры командной строки, влияющие на обработку файла параметров».

  • --force

    Формат командной строки --force
    Тип Булево

    Игнорировать файл mysql_upgrade_info и принудительно выполнить операцию, даже если mysql_upgrade уже был выполнен для текущей версии MySQL.

  • --host=host_name, -h host_name

    Формат командной строки --host=name
    Тип Строка

    Подключиться к серверу MySQL на указанном хосте.

  • --login-path=name

    Формат командной строки --login-path=name
    Тип Строка

    Прочитать параметры из указанного пути входа в файле пути входа .mylogin.cnf. «Путь входа» — это группа параметров, содержащая параметры, которые определяют, к какому серверу MySQL подключиться и под какой учетной записью авторизоваться. Для создания или изменения файла пути входа используйте утилиту mysql_config_editor. См. Раздел 4.6.6, «mysql_config_editor — Утилита конфигурации MySQL».

    Дополнительную информацию об этом и других параметрах файла параметров см. в Разделе 4.2.2.3, «Параметры командной строки, влияющие на обработку файла параметров».

  • --max-allowed-packet=value

    Формат командной строки --max-allowed-packet=value
    Тип Integer
    Значение по умолчанию 25165824
    Минимальное значение 4096
    Максимальное значение 2147483648

    Максимальный размер буфера для связи клиент/сервер. Значение по умолчанию — 24 МБ. Минимальное и максимальное значения — 4 КБ и 2 ГБ соответственно.

  • --net-buffer-length=value

    Формат командной строки --net-buffer-length=value
    Тип Integer
    Значение по умолчанию 1047552
    Минимальное значение 4096
    Максимальное значение 16777216

    Начальный размер буфера для связи клиент/сервер. Значение по умолчанию — 1 МБ − 1 КБ. Минимальное и максимальное значения — 4 КБ и 16 МБ соответственно.

  • --no-defaults

    Формат командной строки --no-defaults

    Не читать никакие файлы параметров. Если запуск программы завершается неудачно из-за чтения неизвестных параметров из файла параметров, --no-defaults можно использовать, чтобы предотвратить их чтение.

    Исключением является то, что файл .mylogin.cnf считывается во всех случаях, если он существует. Это позволяет указывать пароли более безопасным способом, чем в командной строке, даже при использовании --no-defaults. Чтобы создать .mylogin.cnf, используйте утилиту mysql_config_editor. См. Раздел 4.6.6, «mysql_config_editor — Утилита конфигурации MySQL».

    Для получения дополнительной информации об этом и других параметрах файла параметров см. Раздел 4.2.2.3, «Параметры командной строки, влияющие на обработку файлов параметров».

  • --password[=password], -p[password]

    Формат командной строки --password[=name]
    Тип String

    Пароль учетной записи MySQL, используемой для подключения к серверу. Значение пароля является необязательным. Если он не указан, mysql_upgrade запрашивает его. Если указан, не должно быть пробела между --password= или -p и последующим паролем. Если параметр пароля не указан, по умолчанию пароль не отправляется.

    Указание пароля в командной строке следует считать небезопасным. Чтобы избежать указания пароля в командной строке, используйте файл параметров. См. Раздел 6.1.2.1, «Рекомендации для конечных пользователей по безопасности паролей».

    Чтобы явно указать, что пароля нет и что mysql_upgrade не должен запрашивать его, используйте параметр --skip-password.

  • --pipe, -W

    Формат командной строки --pipe
    Тип String

    В Windows подключается к серверу с использованием именованного канала. Этот параметр применим только в том случае, если сервер был запущен с включенной системной переменной named_pipe для поддержки соединений с использованием именованных каналов. Кроме того, пользователь, устанавливающий соединение, должен быть членом группы Windows, указанной в системной переменной named_pipe_full_access_group.

  • --plugin-dir=dir_name

    Формат командной строки --plugin-dir=dir_name
    Тип Directory name

    Каталог, в котором следует искать подключаемые модули. Укажите этот параметр, если используется параметр --default-auth для указания подключаемого модуля аутентификации, но mysql_upgrade не находит его. См. Раздел 6.2.13, «Подключаемая аутентификация».

  • --port=port_num, -P port_num

    Формат командной строки --port=#
    Тип Numeric

    Для соединений TCP/IP номер порта, который нужно использовать.

  • --print-defaults

    Формат командной строки --print-defaults

    Вывести имя программы и все параметры, которые она получает из файлов параметров.

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    Формат командной строки --protocol=name
    Тип String

    Транспортный протокол, используемый для подключения к серверу. Он полезен, когда другие параметры подключения обычно приводят к использованию протокола, отличного от того, который вам нужен. Подробные сведения о допустимых значениях см. в Разделе 4.2.5, «Транспортные протоколы соединения».

  • --shared-memory-base-name=name

    Формат командной строки --shared-memory-base-name=name
    Специфично для платформы Windows

    В Windows имя разделяемой памяти, используемое для соединений, устанавливаемых с использованием разделяемой памяти с локальным сервером. Значение по умолчанию — MYSQL. Имя разделяемой памяти учитывает регистр.

    Этот параметр применим только в том случае, если сервер был запущен с включенной системной переменной shared_memory для поддержки соединений с использованием разделяемой памяти.

  • --skip-sys-schema

    Формат командной строки --skip-sys-schema
    Тип Boolean
    Значение по умолчанию FALSE

    По умолчанию mysql_upgrade устанавливает схему sys, если она не установлена, и обновляет ее до текущей версии в противном случае. Параметр --skip-sys-schema подавляет это поведение.

  • --socket=path, -S path

    Формат командной строки --socket={file_name|pipe_name}
    Тип String

    Для соединений с localhost, файл сокета Unix, который нужно использовать, или, в Windows, имя именованного канала, который нужно использовать.

    В Windows этот параметр применим только в том случае, если сервер был запущен с включенной системной переменной named_pipe для поддержки соединений с использованием именованных каналов. Кроме того, пользователь, устанавливающий соединение, должен быть членом группы Windows, указанной в системной переменной named_pipe_full_access_group.

  • --ssl*

    Параметры, начинающиеся с --ssl, определяют, использовать ли шифрование при подключении к серверу, и указывают, где найти ключи и сертификаты SSL. См. Параметры командной строки для шифрованных подключений.

  • --tls-version=protocol_list

    Формат командной строки --tls-version=protocol_list
    Введён в 5.7.10
    Тип Строка
    Значение по умолчанию (≥ 5.7.28) TLSv1,TLSv1.1,TLSv1.2
    Значение по умолчанию (≤ 5.7.27)

    TLSv1,TLSv1.1,TLSv1.2 (OpenSSL)

    TLSv1,TLSv1.1 (yaSSL)

    Допустимые протоколы TLS для шифрованных подключений. Значение представляет собой список одного или нескольких имён протоколов, разделённых запятыми. Протоколы, которые можно указать для этого параметра, зависят от используемой SSL-библиотеки при компиляции MySQL. Подробнее см. Раздел 6.3.2, «Протоколы и шифры TLS шифрованных подключений».

    Этот параметр был добавлен в MySQL 5.7.10.

  • --upgrade-system-tables, -s

    Формат командной строки --upgrade-system-tables
    Тип Булево

    Обновить только системные таблицы в схеме mysql, не обновлять схемы пользователей.

  • --user=user_name, -u user_name

    Формат командной строки --user=name
    Тип Строка

    Имя пользователя учётной записи MySQL, используемой для подключения к серверу. Имя пользователя по умолчанию — root.

  • --verbose

    Формат командной строки --verbose
    Тип Булево

    Режим подробных сообщений. Выводить больше информации о действиях программы.

  • --version-check, -k

    Формат командной строки --version-check
    Тип Булево

    Проверить версию сервера, к которому подключается mysql_upgrade, чтобы убедиться, что она совпадает с версией, для которой была построена mysql_upgrade. Если нет, mysql_upgrade завершается. Этот параметр включён по умолчанию; чтобы отключить проверку, используйте --skip-version-check.

  • --write-binlog

    Формат командной строки --write-binlog
    Тип Булево
    Значение по умолчанию OFF

    По умолчанию ведение бинарного журнала mysql_upgrade отключено. Вызовите программу с --write-binlog, если нужно записать её действия в бинарный журнал.

    Если на сервере включены глобальные идентификаторы транзакций (GTID) (gtid_mode=ON), не включайте ведение бинарного журнала mysql_upgrade.

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

Spec-Zone.ru

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