MySQL道普請便り

第169回 pt-variable-advisorを使ってみよう

この記事を読むのに必要な時間:およそ 1.5 分

本連載にて度々登場しているPercona Toolkitの中に,pt-variable-advisorというものがあります。これは,SHOW VARIABLESの結果をもとに設定の見直しを提案してくれるツールになります。今回は,このpt-variable-advisorを使って設定を見直していきましょう。

なお,今回使用するPercona Toolkitのバージョンは,2022年4月時点で最新の3.3.1です。また,使用しているMySQLは8.0.28を使用しています。

また,Percona Toolkitのインストール方法などは過去に説明していますので併せてご確認ください。

pt-variable-advisor

pt-variable-advisorは,SHOW VARIABLESの結果をもとに,ルールに従っておすすめしない設定がないかどうかを調べるツールになります。使い方は,pt-variable-advisorの引数にmysqlのhostを設定することで利用できます。

$ pt-variable-advisor 127.0.0.1 --port=3306 --user=root --ask-pass
Enter password:
# WARN delay_key_write: MyISAM index blocks are never flushed until necessary.

# NOTE max_binlog_size: The max_binlog_size is smaller than the default of 1GB.

〈省略〉

ポートやユーザーを設定する場合はmysqlコマンドと同様のオプションがあり,指定することで利用できます。

  • --port(-P)…接続するMySQLのポート
  • --user(-u)…接続するMySQLのユーザー名
  • --password(-p)/ --ask-pass …--passwordの場合は接続時のパスワードを設定,—ask-passの場合は実行後にパスワードを入力してから実行

実行すると,重要度,ルール名-N(Nは自然数⁠⁠,説明の3つが表示されます。

重要度

重要度はNOTE,WARN,CRIT(ICAL)の3つで表示されます。ルールが適用された場合にどれくらい重要かを判断する指標となります。

ルール名-N

ルール名-Nは,どのルールにマッチしたかが表示されます。-Nには数字が入り,1つの変数が複数のルール名にマッチした場合に数字が入ります。たとえば,sort_buffer_sizeの変数が複数のルールにマッチした場合はsort_buffer_size-1,sort_buffer_size-2と,2つ表示されます。

説明

マッチしたルールに対しての説明が表示されます。これの記述を参考に変更するかどうかを判断します。

実行

実際にinnodb_doublewrite = 0やinnodb_flush_log_at_trx_commit = 0を設定して,意図的に警告を出してみましょう。

# WARN innodb_doublewrite: InnoDB doublewrite is disabled.

# WARN innodb_flush_log_at_trx_commit-1: InnoDB is not configured in strictly ACID mode.
〈省略〉

変更した設定について警告が表示されるようになりました。このように,自身の設定に対して意図せず警告が出ているものは,修正することを考慮に入れると良いかと思います。

どのようなルールが表示されるかについてはpt-variable-advisorのドキュメントを参考にしてください。

特定のルールを無視したい場合は,--ignore-rulesにカンマ区切りでルール名を記述することで,無視させることもできます。

pt-variable-advisor 127.0.0.1 --port=3306 --user=root --ask-pass --ignore-rules="innodb_doublewrite,innodb_flush_log_at_trx_commit-1"

SHOW VARIABLESの結果ファイルから実行する

直接MySQLを実行せずにSHOW VARIABLESを出力した結果からでも,pt-variable-advisorを実行することができます。その場合はオプションとして--source-of-variablesに出力したファイルを指定します。例として,var.txtにSHOW VARIABLESの結果を出力してからpt-variable-advisorを実行してみます。

$ mysql -uroot -p -e "SHOW VARIABLES" > vars.txt
$ pt-variable-advisor --source-of-variables vars.txt

注意

環境によっては,意図してその設定をしているものもあるかもしれないので,⁠警告が出るから」とすべてアドバイス通りに修正をするのはおすすめしません。

また,MySQLは常に進化し続けており,pt-variable-advisorのアドバイスが古い可能性があるかもしれません。設定を変更する場合は,バージョンや環境を考慮して本当にその設定で問題ないか,十分に検討して設定するようにしてください。

まとめ

今回は,Percona Toolkitのpt-variable-advisorについて簡単に説明しました。実行自体は簡単であるため,あくまで参考程度に設定値の見直しに利用してみてください。

著者プロフィール

深町日出海(ふかまちひでみ)

GMOメディア株式会社のデータベースエンジニア。主にOracleとMySQLを担当。得意なプログラム言語はJava。MySQLの好きなところはTABLEやINDEXの識別子に64byteまで使えるところ。

Twitter:@lhfukamachi