mysqlのdockerコンテナのSQLログをホストPCにマウントする

SPONSORED LINK

ローカルの開発環境だとアプリが実行している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ファイルの編集

<追加>と記載してある場所がポイントです。

SPONSORED LINK

クエリログを生成し、ログの置き場所となるパスを指定するよう設定しています。

[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を利用するとログにカラーがついておすすめです。