Posted at

Cloud SQL binarylogの閲覧方法

More than 1 year has passed since last update.

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