С 8.0. 16 , MySQL Server поддерживает опцию validate-config, которая позволяет проверять конфигурацию запуска на наличие проблем без запуска сервера в нормальном рабочем режиме:
validate-config может использоваться в любое время, но особенно полезен после обновления , чтобы проверить, не считают ли какие-либо опции, ранее использовавшиеся с более старым сервером, обновленным сервером устаревшими или устаревшими.
Сначала давайте немного информации о моей версии и конфигурации MySQL.
$ mysqld --help --verbose | head -n13 mysqld Ver 8.0.16 for Linux on x86_64 (MySQL Community Server - GPL) Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Starts the MySQL database server. Usage: mysqld [OPTIONS] Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
Мы используем MySQL 8.0.16.
Конфигурация параметров по умолчанию читается в указанном порядке из:
/etc/my.cnf
/etc/mysql/my.cnf
/usr/local/mysql/etc/my.cnf
~ / .My.cnf
Теперь давайте проверим конфигурацию запуска моего сервера MySQL:
$ mysqld --validate-config $
Никакой ошибки !
Никакого вывода, все выглядит хорошо.
Наш сервер запустится с этой конфигурацией.
В случае ошибки сервер завершает работу.
Вывод явно отличается:
$ mysqld --validate-config --fake-option 2019-06-05T15:10:08.653775Z 0 [ERROR] [MY-000068] [Server] unknown option '--fake-option'. 2019-06-05T15:10:08.653822Z 0 [ERROR] [MY-010119] [Server] Aborting
Обычно ваши параметры конфигурации записываются в вашем файле конфигурации (обычно с именем my.cnf).
Поэтому вы также можете использовать validate-config в этом контексте:
$ mysqld --defaults-file=/etc/my.cnf --validate-config $
Кроме того, вы можете справиться с многословием, используя log_error_verbosity:
С значением 2, в дополнение к ошибкам, мы сможем отображать предупреждения:
$ mysqld --defaults-file=/etc/my.cnf --validate-config --log_error_verbosity=2 2019-06-05T15:53:42.785422Z 0 [Warning] [MY-011068] [Server] The syntax 'expire-logs-days' is deprecated and will be removed in a future release. Please use binlog_expire_logs_seconds instead. 2019-06-05T15:53:42.785660Z 0 [Warning] [MY-010101] [Server] Insecure configuration for --secure-file-priv: Location is accessible to all OS users. Consider choosing a different directory.
Ничего особо серьезного, однако рекомендуется по возможности удалять предупреждения.
Поэтому мы исправили эти предупреждения:
$ mysqld --defaults-file=/etc/my.cnf --validate-config --log_error_verbosity=2 2019-06-05T16:04:32.363297Z 0 [ERROR] [MY-000067] [Server] unknown variable 'binlog_expire_logs_second=7200'. 2019-06-05T16:04:32.363369Z 0 [ERROR] [MY-010119] [Server] Aborting
К сожалению !!! Есть опечатка…: -0
Мы написали binlog_expire_logs_second вместо binlog_expire_logs_seconds.
(Мы забыли последние «s»)
В этом случае мой сервер MySQL не сможет запуститься.
Благодаря validate-config !
Теперь мы можем избежать неприятных ощущений при запуске сервера.
При правильном написании у нас теперь нет ошибок и предупреждений:
$ mysqld --defaults-file=/etc/my.cnf --validate-config --log_error_verbosity=2 $
Обратите внимание, что вы также можете использовать значение 3:
$ mysqld --defaults-file=/etc/my.cnf --validate-config --log_error_verbosity=3 2019-06-05T16:02:03.589770Z 0 [Note] [MY-010747] [Server] Plugin 'FEDERATED' is disabled. 2019-06-05T16:02:03.590719Z 0 [Note] [MY-010733] [Server] Shutting down plugin 'MyISAM' 2019-06-05T16:02:03.590763Z 0 [Note] [MY-010733] [Server] Shutting down plugin 'CSV'
validate-config удобен и может быть очень полезен.
Возможно, стоит включить его в процесс обновления.