MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  サーバー構成の検証

5.1.3 サーバー構成の検証

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 自体が不明であることを示すメッセージが生成されます。)


関連キーワード:  サーバー, Server, 構成, 変数, validate, リファレンス, 検証, 実行, read, only