ある事情からbinarylogを見る必要がありました。
Cloud SQLを初めて使ったということも、MySQL力が足りないこともあり、すごく苦労しました。
結論から言うと、cloud_sql_proxyを使ってポートフォワードし、mysql-serverパッケージに含まれる、mysqlbinlogを使って閲覧しました。
他に良い方法があれば教えて下さい。
前提条件
- Cloud SQLには、MySqLを選択していること
- インスタンスの設定で、
バイナリログを有効
にしていること - gcloudのサービスアカウントを持っていること
- Cloud SQLのrootアカウントを持っていること
- ローカルPCはubuntu(その他のPCは読み変えればいけると思います。)
gcloudへログイン
gcloudコマンドを使って、プロジェクトにログインします。
gcloud autn login
gcloud config set project < project name >
cloud_sql_proxyをインストール
マニュアルを参考に、cloud_sql_proxy
をインストールします。
私は、すでにパスが通っているgcloud
コマンドと同じ場所に配置しました。
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
sudo chmod +x cloud_sql_proxy
cloud_sql_proxyで接続してみる
ポート番号はローカルPCで空いているポートを使います。
cloud_sql_proxy -instances=<インスタンス名>=tcp:3300
<インスタンス名>は、インスタンス接続名をそのまま使いました。
すると、mysqlコマンドがローカルで使えるようになります。
mysql -u root -p --host 127.0.0.1 --port 3300
Enter password:
ログファイル名を取得します。
mysql> SHOW BINARY LOGS;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| xxxxx-bin.000001 | 104857880 |
| xxxxx-bin.000002 | 98579596 |
+------------------+-----------+
2 rows in set (0.01 sec)
mysqlbinlogでログを閲覧する
mysql-serverをインストールします。
serverとしては使いませんが、閲覧するために必要です。
sudo apt install mysql-server
ポートフォワードされたポートをmysqlbinlogに指定すると、閲覧/検索できます。
mysqlbinlog --read-from-remote-server -u root -p --host=127.0.0.1 --port 3300 xxxxx-bin.000002 --start-datetime="2018-04-01 00:00:00" --stop-datetime="2018-04-01 23:59:59" > foo.log