共有

はじめに

サービスを構成する際には、変更が影響を与える環境に適用する前に、その変更を検証することが重要です。これは、MySQLデータベースのような基幹サービスに加えられた変更には特に当てはまります。

多くの変更は意味的な正確性(構成が意図した意味を持つことを確認する)のために手動でチェックする必要がありますが、構文的な正確性(変更が期待される形式であることを確認する)のチェックは自動化できることがよくあります。これは限定的ではありますが、スペルミス、不正確な句読点、不正な形式の構成オプションなどを捕捉できる非常に役立つチェックであり、これらがないと新しい変更を組み込もうとしたときにサーバーが正しく起動しない可能性があります。

このショートガイドでは、組み込みオプションを使用してMySQLサーバー構成ファイルを検証する方法について説明します。これにより、サービスを再起動したときに、行った編集がMySQLに干渉しないことを確認できます。

MySQLサーバー構成ファイルの確認

MySQLサーバーを実行するために使用されるmysqldバイナリには、通常は使用しない多くのオプションが含まれています。その一つが--validate-configフラグです。

--validate-configフラグは、mysqldバイナリに構成ファイルを解析させてから終了させます。検証チェックは、次のように入力して実行できます。

mysqld --validate-config

問題が発見されなかった場合、プログラムはMySQLサーバーを起動しようとせずに、出力なしで正常に終了します。プロセスの終了コードを確認することで、正常に終了したことを検証できます。

echo $?
0

エラーが発見された場合、MySQLは実際の起動シナリオと同様にプロセスを中止し、問題が発生したファイルと行に関する情報を出力します。このプロセスと出力を確認するために、MySQL構成ファイルに構文エラーを追加できます。たとえば、次のようにします。

echo "hello there" | sudo tee --append /etc/mysql/my.cnf

再度構成を確認すると、コマンドは構成に追加した問題の行を出力します。

mysqld: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 23.
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!

終了コードもエラーが発生したことを検証します。

echo $?
1

sedを使用して、MySQL構成ファイルに追加した行を削除できます。削除が成功したことを確認するため、再度構成ファイルを検証してください。

sudo sed --in-place '/hello there/d' /etc/mysql/my.cnf
mysqld --validate-config

サーバー構成ファイルが再び構文的に正しいことが確認されました。

まとめ

このガイドでは、mysqldバイナリと--validate-configフラグを使用して、MySQLサーバーの構成ファイルのエラーを検証する方法について説明しました。これによりすべてのエラーを検出できるわけではありませんが、タイプミス、誤った構成文法、無効なオプションの防止に大いに役立ちます。データベースサービスを停止する前に、新しい構成が有効であることを確認するために、サーバーを再起動する前には常に--validate-configフラグを使用することをお勧めします。

著者について
Justin Ellingwood

ジャスティン・エリイングウッド

ジャスティンは2013年以来、データベース、Linux、インフラストラクチャ、開発者ツールについて執筆しています。現在はベルリンで妻と2匹のウサギと暮らしています。通常、三人称で書く必要がないため、関係者全員にとって安心です。
© . All rights reserved.