После обновления сервера многие пользователи запускают его с неизмененным файлом конфигурации только для того, чтобы обнаружить, что некоторые устаревшие параметры, которые они использовали, больше не поддерживаются более поздней версией сервера, что приводит к отключению обновленного сервера. В других случаях изменение файла конфигурации сервера приводит к тому, что сервер отказывается запускаться, когда в файл конфигурации ошибочно введено неверное имя. В MySQL 5.7 пользователи полагались на сочетание параметров ‘help’ и ‘verbose’ вместе с конфигурациями сервера для проверки параметров.
./sql/mysqld --verbose --help --foo=bar To see what values a running MySQL server is using, type 'mysqladmin variables' instead of 'mysqld --verbose --help'. 2019-06-14T12:32:34.486721Z 0 [ERROR] Aborting
В MySQL 8.0.16 была введена новая опция «validate-config» , чтобы помочь пользователям быстро протестировать конфигурацию сервера без необходимости запуска сервера. Если проблем не найдено, сервер завершает работу с нулевым кодом выхода. Сервер завершит работу с ошибкой (ошибка № 1) при первом появлении недопустимой конфигурации. Например, давайте рассмотрим серверную опцию «tx_read_only», которая устарела в MySQL 5.7 и удалила MySQL 8.0:
./runtime_output_directory/mysqld --tx_read_only=on --validate-config 2019-06-2206-22T11:12:06.627242Z 0 [ERROR] [MY-000067] [Server] unknown variable 'tx_read_only=on'. 2019-06-2206-22T11:12:06.627273Z 0 [ERROR] [MY-010119] [Server] Aborting
Параметр validate-config также можно использовать с файлом конфигурации для проверки параметров, указанных в файле конфигурации. Например:
./runtime_output_directory/mysqld --defaults-file=/home/nisha/workspace1/my.cnf --validate-config 2019-06-10T13:09:22.324165Z 0 [ERROR] [MY-000067] [Server] unknown variable 'tx_read_only=1'. 2019-06-10T13:09:22.324248Z 0 [ERROR] [MY-010119] [Server] Aborting
Обратите внимание, что при использовании параметра defaults-file он должен быть первым параметром в командной строке, как показано выше.
Поскольку сервер завершает работу при первом появлении недопустимого значения, исправьте сообщенную проблему и повторите попытку, чтобы найти дальнейшие проблемы в настройках конфигурации.
По умолчанию сообщаются только сообщения об ошибках. Если пользователи также заинтересованы в предупреждениях и информационных сообщениях, необходимо упомянуть параметр log_error_verbosity со значением больше 1.
./runtime_output_directory/mysqld --log-error-verbosity=2 --validate-config --read_only=s --transaction_read_only=10 2019-06-09T05:12:12.124576Z 0 [Warning] [MY-000076] [Server] option 'read_only': boolean value 's' was not recognized. Set to OFF. 2019-06-09T05:12:12.124595Z 0 [Warning] [MY-000076] [Server] option 'transaction-read-only': boolean value '10' was not recognized. Set to OFF.
Как видно выше, выдается предупреждение о настройках конфигурации, и сервер завершает работу с нулем, поскольку ошибок нет. В приведенном ниже примере
упоминается недопустимое имя конфигурации, следовательно, об ошибках сообщается вместе с предупреждениями, и сервер завершает работу с кодом ошибки 1.
./runtime_output_directory/mysqld --log-error-verbosity=2 --validate-config --read_only=s --transaction_read_only=10 --foo=bar 2019-06-09T05:14:22.117432Z 0 [Warning] [MY-000076] [Server] option 'read_only': boolean value 's' was not recognized. Set to OFF. 2019-06-09T05:14:22.117446Z 0 [Warning] [MY-000076] [Server] option 'transaction-read-only': boolean value '10' was not recognized. Set to OFF. 2019-06-09T05:14:22.131557Z 0 [ERROR] [MY-000067] [Server] unknown variable 'foo=bar'. 2019-06-09T05:14:22.131647Z 0 [ERROR] [MY-010119] [Server] Aborting
Область действия ‘validate-config’ ограничена проверкой параметров, которые могут выполняться без обычного запуска сервера. Следовательно, опции, специфичные для механизмов хранения и плагинов, которые инициализируются во время обычного запуска сервера, не охватываются ‘ validate-config ‘. Информация о ‘ validate-config ‘ также может быть найдена в документации MySQL. Мы надеемся, что эта новая опция облегчит жизнь пользователям MySQL, особенно во время обновлений.