ローカルの開発環境だとアプリが実行しているSQLクエリを追いかけ続けたい時がしばしばあります。
dockerコンテナで動いているmysqlのクエリログを追いかける方法はいくつかあると思いますが、Motoが普段行っているやり方を紹介します。
docker-compose.ymlの編集
~/tmp/mysql:/var/log/mysql
に注目してください。
ホストPCの~/tmp/mysql
ディレクトリ配下にdockerコンテナの/var/log/mysql
ディレクトリの中身を同期する意味合いになります。
mysql_master:
image: mysql:5.6
volumes:
- mysql_master_volume:/var/lib/mysql
- ./docker/mysql_master/my.cnf:/etc/mysql/conf.d/my.cnf
- ./docker/mysql_master/initdb.d:/docker-entrypoint-initdb.d
- ~/tmp/mysql:/var/log/mysql
mysqlのcnfファイルの編集
<追加>と記載してある場所がポイントです。
クエリログを生成し、ログの置き場所となるパスを指定するよう設定しています。
[mysqld]
log-bin=mysql-bin
server-id=101
character-set-server=utf8mb4
collation-server=utf8mb4_bin
general_log=1 <追加>
general_log_file=/var/log/mysql/general.log <追加>
ローカルの開発環境でログをtail
tail -f ~/tmp/mysql/general.log
以上です。
tail -f の代わりにlnavを利用するとログにカラーがついておすすめです。