Amazon Linux 2でMySQL8のスロークエリーログを設定する

背景

キャバクラのマッチングサービスを手掛けているのですが、お客さんからサイトの表示が重いと問い合わせがありました。
どこがボトルネックになっているか調査のため、とりあえずスロークエリーログの設定をしてみることに。

MySQLのバージョン確認

一応 MySQLのバージョンを確認しておく

[ec2-user@server ~]$ mysqld --version
/usr/sbin/mysqld  Ver 8.0.34 for Linux on x86_64 (MySQL Community Server - GPL)

SQLでも確認できる

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.34    |
+-----------+

スロークエリーログの設定

/etc/my.cnf の編集

[mysqld]
〜省略〜
slow_query_log=1
long_query_time=1
slow_query_log_file=/var/log/mysql-slow.log

MySQLの再起動

[ec2-user@server ~]$ sudo systemctl restart mysqld

設定が有効になっているか確認

mysql> SHOW VARIABLES LIKE 'slow_query%';
+---------------------+-------------------------+
| Variable_name       | Value                   |
+---------------------+-------------------------+
| slow_query_log      | OFF                     |
| slow_query_log_file | /var/log/mysql-slow.log |
+---------------------+-------------------------+
2 rows in set (0.01 sec)

え、、slow_query_logがOFFになってる??
しかし slow_query_log_file は反映されている。。
謎の現象。

どうやら設定したログファイルに、mysqlの権限がないとONにならないらしい。
ということで、ログファイルのパーミッションを変更

[root@server log]# chown mysql:mysql /var/log/mysql-slow.log

再び再起動

[ec2-user@server ~]$ sudo systemctl restart mysqld

再確認

mysql> SHOW VARIABLES LIKE 'slow_query%';
+---------------------+-------------------------+
| Variable_name       | Value                   |
+---------------------+-------------------------+
| slow_query_log      | ON                      |
| slow_query_log_file | /var/log/mysql-slow.log |
+---------------------+-------------------------+
2 rows in set (0.01 sec)

いけたいけた。
めでたしめでたし。

コメント