こんにちは。GMO NIKKOのH.Tと申します。
PITRでCloud SQL(MySQL)のインスタンスを復元する機会があったのでご紹介します。
まず、PITRとはDBのバイナリログからポジション指定でインスタンスを復元する方法です。
今回、自動バックアップも有効にしていましたが一日一回の自動バックアップが取れる前に復元する必要があったためPITRからインスタンスを復元しました。
以下、簡単な手順です。
1. MySQLクライアントでインスタンスに接続
今回はローカルからCloud SQL Auth Proxyで接続しましたがCloud Shellでも良さそうです。
2. バイナリ ログファイルの表示
ファイル名を取得します。
1 |
SHOW BINARY LOGS; |
3. ファイルの中身を確認
復元したいポイントを特定していきます。
コンソールで表示するのも良いですが、今回ファイルに書き出して確認しました。
1 2 3 4 5 6 7 8 9 |
mysqlbinlog \ --start-datetime="2024-09-11 14:25:00" \ --stop-datetime="2024-09-11 14:40:00" \ --host=ホスト名 \ --port=ポート番号 \ --user=ユーザ名 \ --password=パスワード \ --read-from-remote-server バイナリファイル名 \ --result-file=出力先ファイル名 \ |
4. 特定ポイントからインスタンス復元
復元したいポイントが見つかったらPosから以下のコマンドで復元します。
コマンド例)
1 2 3 4 |
gcloud sql instances clone instance1 \ instance1-clone \ --bin-log-file-name=mysql-bin.0000031 \ --bin-log-position=107 \ |
復元自体の手順は以上で完了となります。
まとめ
バックアップ設定さえしておけば MySQLのバックアップログからピンポイントでインスタンス復元できて非常に便利でした。備えあれば憂いなしですね。
自動バックアップとポイントインタイム リカバリの両方をオンにしておくことを絶対お勧めしたいと思います。
ありがとうございました。