gcp
cloudsql
binarylog

Cloud SQL binarylogの閲覧方法

ある事情から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

<インスタンス名>は、インスタンス接続名をそのまま使いました。

Screenshot from 2018-04-03 00-40-55.png

すると、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