皆様あけましておめでとうございます。本年も「MySQL道普請便り」をよろしくおねがいします。
新年ということで、色合いを豊かにスローログを可視化してみようと思います。今回は、スローログを時に便利なツールであるAnemometerのラッパーであるanemoeaterについて紹介していきます。
Anemometerとanemoeaterに関して
Anemometerは、boxさんが作成されたスローログの可視化ツールで、ペルコナツールキットの1つであるpt-query-digest
を利用して、結果を綺麗に時系列で便利に表示するためのツールです。GitHubのリンクはこちらになります。
anemoeaterは、この連載の執筆者でもあるyoku0825さんが用意したラッパーツールで、Anemometerにある問題を幾つか解決するために作成されたものとなります。特にスローログファイルだけあれば表示できる点が非常に便利なので、皆さんも使ってみてください。GitHubのリンクはこちらになります。
環境設定
今回は、基本的にgitとdockerとperl環境を利用して進めていきます。今回もDockerHub上のMySQLイメージを利用して行います。バージョンは8.0.18を使用しています。また今回はスローログを出力したいため、my.cnfの設定を行います。docker run
コマンドを実行するディレクトリに以下のファイルを置いて、設定が有効になるようにしましょう。
一応各パラメータについて簡単に説明をしておくと、slow_query_log
を1にすることでスローログが出力されるようになります。slow_query_log-file
でスローログが出力される先を指定します。long_query_time
は、スローログに出力されるしきい値になります。上記の設定では10ms以上のクエリがスローログとして記録されます。
上記で起動をして、以下のようにしてMySQLに接続していきます。スローログはカレントディレクトリの直下に出力されます。
ここで以下のコマンドを実行してmy.cnfの設定が有効になっていれば、設定完了です。
スロークエリが出力される設定で、しきい値も正しく登録されていることがわかりました。
検証用のデータとしては、第2回 MySQLにはじめてのデータを入れてみるからKEN_ALL.CSVを利用して作成していきます。
データをインポートした後とりあえずスローログが出力されているか確認してみましょう。LOAD DATA INFILEは結構重いので出力されていると思います。
このように出力が確認できました。
cpanmのインストール
anemoeaterを起動するためにはcpanmが必要なため、準備をします。cpanmはperlのパッケージマネージャの一種なので、perlが必要なのかなと思われるかと思いますが、今回はシステムにあるperlを利用したのでperlのインストール自体は必要ありません。cpanmのGitHubのリポジトリはこちらになります。今回はUbuntuでのインストール方法を紹介します。
Ubuntuで試す場合、aptコマンドを利用してインストールします。以下のコマンドをターミナルから実行してみましょう。
cpanm -V
とコマンドを実行して、以下のようにバージョン情報が出力されていることが確認できれば大丈夫です。
後は、ライブラリのインストール先を指定するための環境変数を記載して完了です。私はbashを使っているので.bash_profile
の末尾に以下のような設定を追加しました。
anemoeaterを起動してみる
anemoeaterは、ローカルで起動する方法とdockerを利用する方法がありますが、今回はDockerのものを利用します。GitHubにある注意を読んでいただければわかるのですが、anemometerのベースとなったAnemometerの方でpt-query-digest
のバージョンへの追従が行われておらず、pt-query-digestのバージョンが3.0.11
以降のものだと利用ができません。そのため今回はバージョン問題が発生しないDocker版のものを利用して確認していきます。
GitHubのスタートに沿って実行してみましょう。まずは、anemoeaterのリポジトリをcloneしてきます。そしてcloneしてきたディレクトリで実行していきます。
しばらくすると以下のような表示がされるので、指定に従ってアクセスをします。cpanmの時点でエラーが出る場合はbuild-essential
をaptからインストールしてください。
すると次のような画面が表示されます。
これで、スローログさえ用意できれば、グラフィカルにどういう状態だったかを確認できるようになりました。
まとめ
今回は、anemoeaterを使ってスローログを可視化する方法を紹介しました。溜め込んでしまったスローログが活用できていない場合などに、最初の一歩として使ってみてはどうでしょうか。