データベースのサーバスペックを変更したのですが、各種の割り当てやパラメータチューニングをやり直す必要が出てきました。こういった際に、MySQLTunerを使うと、チューニングの手助けになります。今回は、MySQLTunerを使って簡単にデータベースチューニングを行なってみましたので、そのときのメモを記載します。
MySQLTunerとは
https://github.com/major/MySQLTuner-perl
スター数は、6,000を超えているオープンソースです。パラメータチューニングについて、こういう設定にした方がいいよとアドバイスをしてくれます。MySQL5.7まではフルサポートされており、MySQL8はパスワード認証の変更が大きくかかっているため、パスワードチェックのみ動かず、それ以外はサポートされています。
スター数についてもreadmeに記載がされていますが、リリースから今に至るまで、利用者が着実に増えてきているようです。
MySQLTunerのダウンロード
$ wget http://mysqltuner.pl/ -O mysqltuner.pl
................................................................................
................................................................................
................................................................................
2021-xx-xx xx:xx:xx (17.7 MB/s) - `mysqltuner.pl' へ保存完了 [227610/227610]
$ wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/basic_passwords.txt -O basic_passwords.txt
................................................................................
................................................................................
................................................................................
2021-xx-xx xx:xx:xx (85.7 MB/s) - `basic_passwords.txt' へ保存完了 [3988/3988]
$ wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/vulnerabilities.csv -O vulnerabilities.csv
--2021-xx-xx xx:xx:xx-- https://raw.githubusercontent.com/major/MySQLTuner-perl/master/vulnerabilities.csv
................................................................................
................................................................................
................................................................................
2021-xx-xx xx:xx:xx (35.8 MB/s) - `vulnerabilities.csv' へ保存完了 [1185249/1185249]
Readmeに沿って、上記3つをインストールしたら完了です。
MySQLTunerのチューニング診断
# perl mysqltuner.pl
こちらのコマンドで実行することができます。コマンドを実行すると、スタートします。
$ perl mysqltuner.pl
>> MySQLTuner 1.7.21 - Major Hayden <major@mhtx.net>
>> Bug reports, feature requests, and downloads at http://mysqltuner.pl/
>> Run with '--help' for additional options and output filtering
[--] Skipped version check for MySQLTuner script
Please enter your MySQL administrative login: xxxxxxxx
Please enter your MySQL administrative password: [OK] Currently running supported MySQL version 8.0.19
[OK] Operating on 64-bit architecture
MySQLにログインするためのIDとパスワードを聞かれますので、入力をしてください。
結果は下記のように出ました。
-------- Recommendations ---------------------------------------------------------------------------
General recommendations:
Control warning line(s) into /var/log/mysqld.log file
Control error line(s) into /var/log/mysqld.log file
Reduce your overall MySQL memory footprint for system stability
Dedicate this server to your database for highest performance.
We will suggest raising the 'join_buffer_size' until JOINs not using indexes are found.
See https://dev.mysql.com/doc/internals/en/join-buffer-size.html
(specially the conclusions at the bottom of the page).
Logファイルの中に、複数のwarningとerrorが出ていると指摘がありました。
Control warning line(s) into /var/log/mysqld.log file
Control error line(s) into /var/log/mysqld.log file
確認したところ、大きな問題になりそうな部分はなかったので、これで完了です。
MySQLTunerのメリットデメリット
MySQLTunerを使うと、MySQLサーバのチューニングの手掛かりにすることができます。また、MySQLTunerは読み取りのみ動くため、設定ファイルに勝手に書き込みが行なわれたり、更新がかかることはありません。なので、手軽に利用することができます。