このページは機械翻訳したものです。
MySQL 8.0.16 の時点で、MySQL Server は --validate-config
オプションをサポートしており、サーバーを通常の動作モードで実行せずに、起動構成の問題をチェックできます:
mysqld --validate-config
エラーが見つからない場合、サーバーは終了コード 0 で終了します。 エラーが見つかった場合、サーバーは診断メッセージを表示し、終了コード 1 で終了します。 例:
shell> mysqld --validate-config --no-such-option
2018-11-05T17:50:12.738919Z 0 [ERROR] [MY-000068] [Server] unknown
option '--no-such-option'.
2018-11-05T17:50:12.738962Z 0 [ERROR] [MY-010119] [Server] Aborting
エラーが検出されるとすぐにサーバーは終了します。 追加のチェックを実行するには、最初の問題を修正し、--validate-config
でサーバーを再度実行します。
前述の例では、--validate-config
を使用するとエラーメッセージが表示され、サーバーの終了コードは 1 です。 警告および情報メッセージは、log_error_verbosity
の値によっては表示されることもありますが、即時検証の終了や終了コード 1 は生成されません。 たとえば、このコマンドでは複数の警告が生成され、その両方が表示されます。 ただし、エラーは発生しないため、終了コードは 0 になります:
shell> mysqld --validate-config --log_error_verbosity=2
--read-only=s --transaction_read_only=s
2018-11-05T15:43:18.445863Z 0 [Warning] [MY-000076] [Server] option
'read_only': boolean value 's' was not recognized. Set to OFF.
2018-11-05T15:43:18.445882Z 0 [Warning] [MY-000076] [Server] option
'transaction-read-only': boolean value 's' was not recognized. Set to OFF.
このコマンドでは同じ警告が生成されますが、エラーも生成されるため、エラーメッセージが警告とともに表示され、終了コードは 1 です:
shell> mysqld --validate-config --log_error_verbosity=2
--no-such-option --read-only=s --transaction_read_only=s
2018-11-05T15:43:53.152886Z 0 [Warning] [MY-000076] [Server] option
'read_only': boolean value 's' was not recognized. Set to OFF.
2018-11-05T15:43:53.152913Z 0 [Warning] [MY-000076] [Server] option
'transaction-read-only': boolean value 's' was not recognized. Set to OFF.
2018-11-05T15:43:53.164889Z 0 [ERROR] [MY-000068] [Server] unknown
option '--no-such-option'.
2018-11-05T15:43:53.165053Z 0 [ERROR] [MY-010119] [Server] Aborting
--validate-config
オプションのスコープは、通常の起動プロセスを実行せずにサーバーが実行できる構成チェックに制限されます。 そのため、構成チェックではストレージエンジンやその他のプラグインやコンポーネントなどは初期化されず、初期化されていないサブシステムに関連付けられたオプションも検証されません。
--validate-config
はいつでも使用できますが、アップグレード後に特に役立ちます。古いサーバーで以前に使用されていたオプションが、アップグレードされたサーバーで非推奨または廃止とみなされているかどうかを確認する場合に役立ちます。 たとえば、tx_read_only
システム変数は MySQL 5.7 で非推奨になり、8.0 で削除されました。 MySQL 5.7 サーバーが my.cnf
ファイルでそのシステム変数を使用して実行され、MySQL 8.0 にアップグレードされたとします。 --validate-config
でアップグレードされたサーバーを実行して構成を確認すると、次の結果が生成されます:
shell> mysqld --validate-config
2018-11-05T10:40:02.712141Z 0 [ERROR] [MY-000067] [Server] unknown variable
'tx_read_only=ON'.
2018-11-05T10:40:02.712178Z 0 [ERROR] [MY-010119] [Server] Aborting
--validate-config
を --defaults-file
オプションとともに使用すると、特定のファイル内のオプションのみを検証できます:
shell> mysqld --defaults-file=./my.cnf-test --validate-config
2018-11-05T10:40:02.712141Z 0 [ERROR] [MY-000067] [Server] unknown variable
'tx_read_only=ON'.
2018-11-05T10:40:02.712178Z 0 [ERROR] [MY-010119] [Server] Aborting
--defaults-file
を指定する場合は、コマンドラインの最初のオプションにする必要があることに注意してください。 (オプションの順序を逆にして前述の例を実行すると、--defaults-file
自体が不明であることを示すメッセージが生成されます。)