notebook

都内でWEB系エンジニアやってます。

RDSでslow-logを出力する

RDSのデフォルトではslowlogを出すような設定にはなっていないので出す場合は別途設定が必要です

マネジメントコンソールのparameter groupsから対象RDSに適用されているパラメータグループを編集します

入力フォームが用意されているので変更します

f:id:swfz:20151024002853p:plain

パラメータ

log_queries_not_using_indexes

  • engine_default(OFF) -> 1

indexを使用しないクエリを記録する

slow_query_log

  • engine_default(OFF) -> 1

slowqueryログを出力

long_query_time

  • 0 -> 3

秒数を指定

log_output

TABLE,FILE,NONEと選択できる

反映

dynamicな値であれば編集後反映されるようです

staticな値に関しては再起動が必要な模様

slowqueryログ関連の設定値はdynamicなので設定後確認できました

  • 変更前
mysql> show variables like 'slow_query_log';
+----------------+-------+
| Variable_name  | Value |
+----------------+-------+
| slow_query_log | OFF   |
+----------------+-------+
mysql> show variables like 'log_queries_not_using_indexes';
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF   |
+-------------------------------+-------+
mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
  • 変更後
mysql> show variables like 'slow_query_log';
+----------------+-------+
| Variable_name  | Value |
+----------------+-------+
| slow_query_log | ON    |
+----------------+-------+
mysql> show variables like 'log_queries_not_using_indexes';
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | ON    |
+-------------------------------+-------+
mysql> show variables like 'long_query_time';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 3.000000 |
+-----------------+----------+
1 row in set (0.00 sec)

ただし、デフォルトのパラメータグループを適用している場合即時反映がされません。

悲しい事にRDS作成時にデフォルトのパラメータグループを適用している場合はパラメータグループの付け替えが必要になります

そしてパラメータグループの付け替えにはRDSの再起動が必要です\(^o^)/