Amazon RDS for MySQLでスロークエリーログを出力させる手順

AWS運用自動化サービス「Cloud Automator」
この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。

こんにちは。takada@福岡オフィスです。最近、30分前にやってたことを忘れます。

加齢でしょうか。いいえ、誰でも

記録は大事。そういえば、サーバーワークスでは、魚に記録を付けてもらうことができます。
そう、データべースの運用でもログは大事ということで、今回は、Amazon RDS for MySQLでスロークエリーログを出力させる手順をご紹介します。

スロークエリーログとは何か

スロークエリーログは、MySQLで出力させることができるログの一種です。 SQL の実行時間が指定した時間(デフォルトですと10秒)よりも長くかかったSQL 出力することができます。これにより、問題があるSQLを特定することができるので、MySQLを運用する際のトラブルシューティングによく使われます。
オリジナルのMySQLと同じく、
Amazon RDS for MySQLでもデフォルトでは、スロークエリーログは無効になっています。

Amazon RDS for MySQLでスロークエリログを出力させる手順

MySQLでは、初期化パラメータファイルのslow_query_logパラメータでログ出力の有無を制御しますが、Amazon RDS for MySQLでは、パラメータグループで制御を行います。

今回、ご紹介する手順は、デフォルトのパラメータグループではなく、あらかじめ独自に作成したパラメータグループを適応していることを前提にしています。
デフォルトのパラメータグループは、パラメータの変更ができないため、値を変更したい場合はパラメータグループの付け替えが必要となります。
パラメータグループの付け替えは、RDSの再起動が必要となるため、動的パラメータを変更するときも再起動が必要となってしまいます。

パラメータグループは、デフォルトのものではなく、独自に作成したものを使うのがおすすめです。

さて、以下、スロークエリログを出力させる手順です。

  1. マネージメントコンソールからRDSダッシュボードを開き、Parameter Groupsメニューを開きます。
  2. スロークエリログを出力させたいRDSに適応しているパラメータグループを選択し、Edit Parametersを押下します。
  3. Filterに”slow_query_log“と入力し、スロークエリログを制御するパラメータを表示させます。
  4. Edit Valuesに 1 を入力して、Save Changesを押下します。

slow_query_log

slow_query_log”は、動的パラメータなので、変更は直ちに反映されます。
デフォルトですと、スロークエリーログは、データベース内の”
mysql.slow_log“テーブルに保存されていきますので、以下のSQLを発行することで確認することができます。

 

まとめ

今回は、Amazon RDS for MySQLでスロークエリーログを出力させる手順をご紹介しました。
MySQLデータベースのトラブルシューティングに非常に役に立つ機能です。
注意点として、データベースへのI/Oが非常に多い場合やスローログクエリー自体が大量となる場合などに、
スロークエリーログを出力し続けると、パフォーマンスに影響を与えることがあります。
このような場合は、必要な場合のみに有効にして、不要な場合は無効にするなどの運用を行うようにしてください。

AWS運用自動化サービス「Cloud Automator」