Amazon RDS: スロークエリのログが出力されなくなった時の対応方法

症状

Amazon RDSではCloud Watchにスロークエリのログを出力することができる。

f:id:shindo1687:20200409214651p:plain

原因は分からないが、このスロークエリのログが出力されなくなってしまう場合がある。スロークエリが正常に出力されているかどうかは、以下のSQLを実行して確認できる。

select sleep(5);

*sleep()に指定する時間(上記では5)はパラメータグループのlong_query_timeに指定している値以上を指定する。 f:id:shindo1687:20200409215155p:plain

以下のようにCloud Watch上で表示されれば正常に動作している。しばらく待っても表示されなければ、スロークエリの出力が停止してしまっている。 f:id:shindo1687:20200409215530p:plain

解決方法

  1. パラメータグループのslow_query_logの値を一度0に変更する。
    *dynamicパラメータなので、変更してもデータベースの再起動は発生しない。 f:id:shindo1687:20200409215727p:plain

  2. データベースのステータスが変更中になり、利用可能になるまで待つ。

  3. パラメータグループのslow_query_logの値を1に戻す。

  4. データベースのステータスが変更中になり、利用可能になるまで待つ。

  5. select sleep(5);を実行し、Cloud Watchにスロークエリのログが出力されることを確認する。