Spec-Zone.ru › MariaDB

mariadb-upgrade

mariadb-upgrade — это инструмент, который проверяет и обновляет ваши таблицы до последней версии.

MariaDB начиная с 10.4.6

Начиная с MariaDB 10.4.6, mariadb-upgrade является символической ссылкой на mysql_upgrade, инструмент, который проверяет и обновляет ваши таблицы до последней версии.

MariaDB начиная с 10.5.2

Начиная с MariaDB 10.5.2, mysql_upgrade является символической ссылкой, а mariadb-upgrade — именем исполняемого файла.

MariaDB начиная с 10.2.42

Начиная с mysql_upgrade / mariadb-upgrade 2.0, пользователю, выполняющему инструмент обновления, необходимо иметь права записи в datadir/mysql_upgrade_info, чтобы инструмент мог записать текущую версию MariaDB в файл. mysql-upgrade была обновлена в MariaDB 10.2.42, MariaDB 10.3.33, MariaDB 10.4.23, MariaDB 10.5.14, MariaDB 10.6.6, MariaDB 10.7.2 и более поздних версиях.

Вы должны запустить mariadb-upgrade после обновления с одной основной версии MySQL/MariaDB на другую, например, с MySQL 5.0 до MariaDB 10.4 или MariaDB 10.4 до MariaDB 10.5. Вы также должны использовать mariadb-upgrade после прямой «горизонтальной» миграции, например, с MySQL 5.5.40 до MariaDB 5.5.40. Также безопасно запускать mariadb-upgrade для незначительных обновлений, так как при отсутствии несовместимостей ничего не меняется.

Он должен выполняться пользователем с правами записи в каталоге данных.

mariadb-upgrade выполняется после запуска нового сервера MariaDB. Запуск его до остановки старой версии не навредит и позволит убедиться в его работе и заранее выяснить аутентификацию для него.

Рекомендуется сделать резервную копию всех баз данных перед запуском mariadb-upgrade.

В большинстве случаев mariadb-upgrade займет всего несколько секунд. Основная работа mariadb-upgrade заключается в:

  • Обновлении системных таблиц в базе данных mysql до последней версии (обычно это добавление новых полей в несколько таблиц).
  • Проверке актуальности всех таблиц (выполняется CHECK TABLE table_name FOR UPGRADE). Для таблиц, которые не актуальны, выполняется ALTER TABLE table_name FORCE для их обновления. Таблица считается неактуальной, если:
    • Таблица использует индекс, для которого произошла смена кодировки (редко)
    • Изменение формата в хранилище требует обновления (очень редко)

Использование mariadb-upgrade

mariadb-upgrade [--force] [--user=# --password=# 
  --host=hostname --port=# --socket=#
  --protocol=tcp|socket|pipe|memory 
  --verbose] [OTHER_OPTIONS]

mariadb-upgrade — в основном фреймворк для вызова mariadb-check. mariadb-upgrade работает, выполняя следующие операции:

# Find out path to datadir
echo "show show variables like 'datadir'" | mysql
mariadb-check --no-defaults --check-upgrade --auto-repair --databases mysql
mysql_fix_privilege_tables
mariadb-check --no-defaults --all-databases --fix-db-names --fix-table-names
mariadb-check --no-defaults --check-upgrade --all-databases --auto-repair

Параметры подключения, задаваемые для mariadb-upgrade, передаются в mariadb-check и mysql.

Сценарий mysql_fix_privilege_tables фактически не вызывается; он включён в состав mariadb-upgrade

Если у вас возникла проблема с mariadb-upgrade, попробуйте запустить его в очень подробном режиме:

mariadb-upgrade --verbose --verbose other-options

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

Параметры

mariadb-upgrade поддерживает следующие параметры:

Вариант Описание Версия
-?, --help Отобразить это сообщение справки и выйти.
--basedir=path Старый вариант, принятый для обратной совместимости, но игнорируется.
--character-sets-dir=path Старый вариант, принятый для обратной совместимости, но игнорируется.
check-if-upgrade-is-needed Быстро проверить, нужна ли модернизация. Возвращает 0, если да, и 1, если нет. 2.0
--compress=name Старый вариант, принятый для обратной совместимости, но игнорируется.
--datadir=name Старый вариант, принятый для обратной совместимости, но игнорируется.
-# [name], --debug[=name] Для отладочных сборок вывести отладочный журнал.
--debug-check Проверить использование памяти и открытых файлов при выходе.
-T, --debug-info Вывести некоторую отладочную информацию при выходе.
--default-character-set=name Старый вариант, принятый для обратной совместимости, но игнорируется.
-f, --force Вынудить выполнение mariadb-check, даже если mariadb-upgrade уже было выполнено для текущей версии MariaDB. Игнорирует mysql_upgrade_info.
-h, --host=name Подключиться к MariaDB на указанном хосте.
-p, --password[=name] Пароль для подключения к серверу. Если пароль не задан, он запрашивается в командной строке (что следует считать небезопасным). Вы можете использовать файл параметров, чтобы избежать ввода пароля в командной строке.
-P, --port=name Номер порта для подключения или 0 для использования по умолчанию, в порядке предпочтения: my.cnf, переменная среды MYSQL_TCP_PORT переменная среды, /etc/services, встроенный по умолчанию (3306).
--protocol=name Протокол для подключения (tcp, socket, pipe, memory).
--silent Вывести меньше информации.
-S, --socket=name Для подключений к localhost, файл Unix-сокет для использования или, в Windows, имя именованной трубы для использования.
--ssl Включает TLS. TLS также включён, даже без установки этого параметра, когда заданы определённые другие параметры TLS. Начиная с MariaDB 10.2, параметр --ssl по умолчанию не включает проверку сертификата сервера. Для проверки сертификата сервера необходимо указать параметр --ssl-verify-server-cert.
--ssl-ca=name Определяет путь к файлу PEM, который должен содержать один или несколько сертификатов X509 для доверенных центров сертификации (ЦС) для использования с TLS. Этот параметр требует использования абсолютного пути, а не относительного. Более подробная информация представлена в разделе Обзор безопасных подключений: Центры сертификации (ЦС). Этот параметр подразумевает параметр --ssl.
--ssl-capath=name Определяет путь к каталогу, содержащему один или несколько файлов PEM, каждый из которых должен содержать один сертификат X509 для доверенного центра сертификации (ЦС) для использования с TLS. Этот параметр требует использования абсолютного пути, а не относительного. Каталог, указанный этим параметром, должен быть обработан командой openssl rehash. Более подробная информация представлена в разделе Обзор безопасных подключений: Центры сертификации (ЦС). Этот параметр поддерживается только в том случае, если клиент был скомпилирован с OpenSSL или yaSSL. Если клиент был скомпилирован с GnuTLS или Schannel, то этот параметр не поддерживается. Дополнительная информация о используемых библиотеках на платформах представлена в разделе TLS и криптографические библиотеки, используемые MariaDB. Этот параметр подразумевает параметр --ssl.
--ssl-cert=name Определяет путь к файлу сертификата X509 для использования с TLS. Этот параметр требует использования абсолютного пути, а не относительного. Этот параметр подразумевает параметр --ssl.
--ssl-cipher=name Список разрешенных шифров или наборов шифров для использования с TLS. Этот параметр подразумевает параметр --ssl.
--ssl-crl=name Определяет путь к файлу PEM, который должен содержать один или несколько аннулированных сертификатов X509 для использования с TLS. Этот параметр требует использования абсолютного пути, а не относительного. Более подробная информация представлена в разделе Обзор безопасных подключений: списки аннулированных сертификатов (CRL). Этот параметр поддерживается только в том случае, если клиент был скомпилирован с OpenSSL или Schannel. Если клиент был скомпилирован с yaSSL или GnuTLS, то этот параметр не поддерживается. Дополнительная информация о используемых библиотеках на платформах представлена в разделе TLS и криптографические библиотеки, используемые MariaDB.
--ssl-crlpath=name Определяет путь к каталогу, содержащему один или несколько файлов PEM, каждый из которых должен содержать один аннулированный сертификат X509 для использования с TLS. Этот параметр требует использования абсолютного пути, а не относительного. Каталог, указанный этим параметром, должен быть обработан командой openssl rehash. Более подробная информация представлена в разделе Обзор безопасных подключений: списки аннулированных сертификатов (CRL). Этот параметр поддерживается только в том случае, если клиент был скомпилирован с OpenSSL. Если клиент был скомпилирован с yaSSL, GnuTLS или Schannel, то этот параметр не поддерживается. Дополнительная информация о используемых библиотеках на платформах представлена в разделе TLS и криптографические библиотеки, используемые MariaDB.
--ssl-key=name Определяет путь к файлу закрытого ключа для использования с TLS. Этот параметр требует использования абсолютного пути, а не относительного. Этот параметр подразумевает параметр --ssl.
--ssl-verify-server-cert Включает проверку сертификата сервера. Этот параметр отключён по умолчанию.
-t, --tmpdir=name Директория для временных файлов.
-s, --upgrade-system-tables Модернизировать только таблицы системы в базе данных mysql. Таблицы в других базах данных не проверяются и не изменяются.
-u, --user=name Пользователь для входа, если это не текущий пользователь.
-v, --verbose Отобразить больше информации о процессе, используя его дважды, отобразятся аргументы подключения; используя его трижды, будут выведены все команды CHECK, RENAME и ALTER TABLE, используемые во время фазы проверки; используя его четыре раза, также будут выведены все команды mariadb-check.
-V, --version Вывести информацию о версии и выйти.
-k, --version-check Запустить эту программу только в том случае, если её «версия сервера» совпадает с версией сервера, к которому она подключается. Примечание: «версия сервера» программы — это версия сервера MariaDB, с которой она была скомпилирована/распространена. (По умолчанию включено; используйте --skip-version-check для отключения.)
--write-binlog Все команды, включая те, что выполняются mariadb-check, записываются в бинарный журнал. Отключено по умолчанию. До MariaDB 10.0.6 и MariaDB 5.5.34 это было включено по умолчанию, и --skip-write-binlog следует использовать, когда команды не должны отправляться реплицирующим серверам.

mariadb-upgrade 2.0

mariadb-upgrate/mysql_upgrade 2.0 было представлено в MariaDB 10.2.42, MariaDB 10.3.33, MariaDB 10.4.23, MariaDB 10.5.14, MariaDB 10.6.6, MariaDB 10.7.2.

Ранее инструмент сначала запускал процесс модернизации, а затем создавал файл datadir/mysql_upgrade_info. Если файл не мог быть создан из-за прав доступа (у mariadb-upgrade не было прав на создание файла), mariadb-upgrad выдавал ошибку, но это часто игнорировалось. Одним из последствий невозможности создания файла mysql_upgrade_info было то, что каждый новый запуск mariadb-upgrade должен был выполнять полную проверку модернизации, что может занять много времени, если таблиц много.

mariadb-upgrade 2.0 исправляет следующие проблемы:

  • Теперь datadir/mysql_upgrade_info создается в начале процесса обновления и блокируется. Это гарантирует, что два процесса mariadb-upgrade не могут выполняться параллельно, что может привести к тупиковым ситуациям (MDEV-27068). Одним из побочных эффектов этого является то, что mariadb-upgrade должен иметь права записи в datadir, что означает, что он должен выполняться как пользователь, установивший MariaDB, обычно 'mysql' или 'root' .
  • Можно использовать mariadb-upgrade --force --force для принудительного выполнения обновления, даже если не было изменения версии или если у вас нет прав записи в datadir. Обратите внимание, что если этот параметр используется, следующее выполнение mariadb-upgrade предположит, что произошло изменение основной версии, и обновление должно быть выполнено (снова).
  • Обновление будет выполнено только в случае изменения основной версии сервера (10.4.X -> 10.5.X). Это позволит избежать ненужных обновлений.
  • Добавлен новый параметр: --check-if-upgrade-is-needed. Если он используется, mariadb-upgrade вернёт 0, если произошло изменение основной версии, и следует запустить mariadb-upgrade. Если обновление не требуется, будет возвращено 1.
  • --verbose записывает больше информации, включая информацию о том, с какой версии на какую версию будет выполнено обновление.
  • Улучшены сообщения, когда нет необходимости запускать mariadb-upgrade.

Файлы параметров

Помимо считывания параметров из командной строки, mariadb-upgrade также может считывать параметры из файлов параметров. Если в файле параметров mariadb-upgrade будет передан неизвестный параметр, он будет проигнорирован.

Следующие параметры относятся к тому, как инструменты командной строки MariaDB обрабатывают файлы параметров. Они должны быть указаны в качестве первого аргумента в командной строке:

Параметр Описание
--print-defaults Вывести список аргументов программы и выйти.
--no-defaults Не читать параметры по умолчанию из какого-либо файла параметров.
--defaults-file=# Читать параметры по умолчанию только из указанного файла №.
--defaults-extra-file=# Прочитать этот файл после чтения глобальных файлов.
--defaults-group-suffix=# В дополнение к группам параметров по умолчанию, также прочитать группы параметров с этим суффиксом.

В MariaDB 10.2 и более поздних версиях mariadb-upgrade связан с MariaDB Connector/C. Однако MariaDB Connector/C пока не обрабатывает разбор файлов параметров для этого клиента. Это всё ещё выполняется кодом разбора файла параметров сервера. Подробнее см. MDEV-19035.

Группы параметров

mariadb-upgrade считывает параметры из следующих групп параметров из файлов параметров:

Группа Описание
[mysql_upgrade] Параметры, считываемые mariadb-upgrade, включая как MariaDB Server, так и MySQL Server.
[mariadb-upgrade] Параметры, считываемые mariadb-upgrade. Доступно начиная с MariaDB 10.4.6.
[client] Параметры, считываемые всеми клиентами MariaDB и MySQL клиентскими программами, включая как MariaDB, так и MySQL клиенты. Например, mysqldump.
[client-server] Параметры, считываемые всеми программами клиентов MariaDB и MariaDB Server. Это полезно для параметров, таких как сокет и порт, которые являются общими для сервера и клиентов.
[client-mariadb] Параметры, считываемые всеми программами клиентов MariaDB.

Отличия между mysql_upgrade в MariaDB и MySQL

На данный момент, начиная с MariaDB 5.1.50:

  • MariaDB корректно обработает длинные имена таблиц.
  • MariaDB конвертирует таблицы InnoDB (нет необходимости в создании дампов/восстановления или ALTER TABLE).
  • MariaDB преобразует старые архивные таблицы в новый формат 5.1.
  • "mysql_upgrade --verbose" выполнит "mariadb-check --verbose", чтобы предоставить больше информации о происходящем. Выполнение с 3 раза --verbose в MariaDB 10.0 выведет все команды CHECK, RENAME и ALTER TABLE, которые были выполнены.
  • Таблица mysql.event обновляется в режиме реального времени; не требуется перезапуск сервера для использования событий, если таблица событий изменилась (MariaDB 10.0.22 и MariaDB 10.1.9).
  • Более подробный вывод.

Ускорение обновления mariadb

- Если вы уверены, что все ваши таблицы обновлены до текущей версии, вы можете запустить mariadb-upgrade ---upgrade-system-tables, что исправит только таблицы системы в базе данных mysql для совместимости с последней версией.

Основная причина запуска mariadb-upgrade для всех ваших таблиц заключается в проверке того, что:

  • Не произошло никаких изменений в формате таблиц между версиями.
    • Это не происходило с MariaDB 5.1.
  • Если некоторые таблицы используют индекс, для которого был изменён порядок сортировки.
    • Это не происходило с MariaDB 5.5.

Если вы на 100% уверены, что это относится к вам, вы можете просто запустить mariadb-upgrade с параметром ---upgrade-system-tables.

Симптомы, указывающие на то, что mariadb-upgrade не был запущен, когда это было необходимо

  • Ошибки в файле журнала ошибок, указывающие на то, что некоторые системные таблицы не содержат всех необходимых столбцов.
  • Обновления или поиск могут не найти запись, которую пытаются обновить или найти.
  • CHECKSUM TABLE может указывать неверную контрольную сумму для таблиц MyISAM или Aria.
  • Сообщение об ошибке "Невозможно загрузить mysql.proc. Вероятно, таблица повреждена".

Для решения таких проблем запустите mariadb-upgrade, mariadb-check, CHECK TABLE и при необходимости REPAIR TABLE на неправильной таблице.

Другие использования

  • mariadb-upgrade пересоздаст любые отсутствующие таблицы в базе данных mysql. Он не будет изменять данные в существующих таблицах.

См. также

  • mariadb-check
  • CHECK TABLE
  • REPAIR TABLE
  • Понижение между основными версиями MariaDB
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не предварительно проверяется MariaDB. Мнения, информация и мнения, выраженные в данном контенте, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/mariadb-upgrade/

Spec-Zone.ru

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