AWS RDS MySQLでクエリログを出力する方法

ここ最近、AmazonWebServiceばかり使ってる桜庭@zaruです。フレームワークやORMを使ってデータベースを利用することが殆どで、生のSQLを書くことなんて少なくなってきた昨今ですが、開発中にはどんなクエリが生成されているのか気になったりするよね。パフォーマンスとか。パフォーマンスとか。

というわけで、RDSのMySQLでもクエリログを出力できるようにする方法を紹介。

Amazon Management Consoleからの操作

まずは手軽に変更する方法。

Amazon Management ConsoleのRDSページから、DB Parameter Groups というメニューを選択。

なんらかのRDSインスタンスを立ちあげていれば、default.mysql5みたいなグループが作られているので、そちらを選択。下のフレームに、パラメータのリストが表示されます。

general_log という名前で検索をして、値に「1」を入力。その後、インスタンスを再起動すれば準備はOK。

クエリログを確認する

対象のDBインスタンスに入って、下記クエリを実行。

select event_time, argument from mysql.general_log order by event_time;

今までクエリログを tail -f でリアルタイム参照していたのとは違うのが微妙だけど…。

コマンドラインでRDSを操作する

いちいちAWSの管理画面に入らなくても、コマンドラインで操作することもできます。便利ですね。

Amazon RDS Command Line Toolkitのダウンロード

Amazon RDS Command Line Toolkitからダウンロード。ファイルを展開。

配置場所
/Users/hoge/Documents/AWS/RDSCli
(*) 場所は適宜

credential-file-path.template を credential-file-path.txt とコピー。ファイルを開いて、AWSAccessKeyIdとAWSSecretKeyを入力して保存。キーはAWSのSecurityCredentialsページで確認できます。

環境変数の登録

bashの場合は、/.bash_profileだったかな?僕はzsh派なので、/.zshrcを編集。

# Java Setting
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home

# EC2 Setting TOKYO
export EC2_REGION=ap-northeast-1

# RDS Setting
export AWS_RDS_HOME=/Users/hoge/Documents/AWS/RDSCli
export AWS_CREDENTIAL_FILE=$AWS_RDS_HOME/credential-file-path.txt
export PATH=$PATH:$AWS_RDS_HOME/bin

東京の場合は、ap-northeast-1を指定してください。編集後、source ~/.zshrc などとして変更を反映します。(もしくはログアウト)

コマンド操作

$ rds-describe-db-parameter-groups
DBPARAMETERGROUP  default.mysql5.5  mysql5.5  Default parameter group for mysql5.5
DBPARAMETERGROUP  stg               mysql5.5  stg parameter

こんな感じで、登録されているパラメータグループが表示されます。パラメータの変更は

$ rds-modify-db-parameter-group パラメータグループ名 -p "name=パラメータ名, value=値, method=immediate”

です。最後の、methodには immediate(即時) の他に pending-reboot(再起動後) を指定出来ます。

Feed

最新記事

開発フローを独自進化させ続けている開発チームの話

こんにちは CTO の [@zaru](https://twitter.com/zaru) です。 スクラム開発をしている開発チームが、開発フローを独自進化させていて、それが良い取り組みだったので紹介しようと思います。 #...

235650?v=4
zaru
2017年11月20日

退職者を招いたLTイベントを開催した

こんにちは、ベーシック CTO [@zaru](https://twitter.com/zaru) です。 ベーシック開発部では毎月月末の金曜日にTGIFと称して、 ~~飲み会 + アナログゲームなイベント~~ 技術 LT 大会...

235650?v=4
zaru
2017年10月12日

山形ラボ、TGIFはじめました

こんにちは。株式会社ベーシック山形ラボの長谷川です。 いろんなところで書いたりなんだりしてますが、弊社には山形に「山形ラボ」というリモート拠点がありまして、そこで4人のエンジニアが働いております。 今回は その山形ラボで、...

10917612?v=4
roki1801
2017年10月10日