はじめに
開発や運用にミスはつきものです。
- 間違ってデータを更新してしまった
- 間違ってデータを削除してしまった
- 不具合でデータが変になってしまった
こんな経験はありませんか?
私も新人の時に経験がありますが、ヒヤヒヤしますね。
対応策もいろいろありますが、今回はバックアップからの復旧の一つの案ということで Firestore の ポイントインタイムリカバリ を紹介したいと思います。
対象読者
- データベースに Firestore を使っている方
- バックアップの方法を検討している方
ポイントインタイムリカバリ (PITR) とは
障害復旧計画 として公式のドキュメントに以下のように記載されています。
PITR を有効にして、最長で過去 7 日前までのドキュメントを読み取りできるようにします。粒度レベル 1 分でデータを読み取り、目標復旧時間(復元までの最大時間)を 0 にして正確にデータベースに書き戻すことができます。目標復旧時点(許容される最大データ損失)は 1 分です。
過去7日間の指定した日時(1分単位)の時点のドキュメントを取得できるようになるようです。
これを見るだけで便利そうですね。
設定方法
とても簡単でした!
gcloud cli を使った方法もありますが、今回はコンソールからの設定方法を記載します。
GCP コンソール
-> メニューから Firestore をクリック
-> データベース default をクリック
-> メニューから 障害復旧 をクリック
-> 設定のところの 編集 ボタンをクリック
-> ポイントインタイムリカバリを有効にする にチェックを入れて保存
設定すると以下のように表示されます。
デフォルトで保持期間は7日間になっているようです。
データの確認方法
まずは GCP のコンソールから見てみましょう。
フィールドには name: "zzz"
と表示されていますね。
続いて、過去のデータを見てみましょう。
いろいろ方法はあるようですが、今回は Firefoo を使って確認したいと思います。
( やることは同じですので、もちろんプログラムを書いて確認しても大丈夫です。 )
-
2023/09/25 17:25:00 のデータを確認
17:25 時点ではname: "xxx"
であることがわかります。
-
2023/09/25 17:30:00 のデータを確認
17:30 時点ではname: "zzz"
であることがわかります。
このように過去7日前までのデータを確認することができます。
冒頭で紹介した以下のような場合には、変更/削除前のデータを確認し、復旧に役立てることができます。
- 間違ってデータを更新してしまった
- 間違ってデータを削除してしまった
- 不具合でデータが変になってしまった
エクスポート/インポート
ポイントインタイムリカバリを利用して、指定時点の状態に全てを戻したい場合には、エクスポート/インポートが有効だと思います。
今回こちらには触れませんが、興味のある方は公式の 整合性のある PITR バージョンからのエクスポートとインポート を参照ください。
まとめ
バックアップ、障害復旧の一つの案として、ポイントインタイムリカバリを紹介しました。
まだ少し試してみただけですが、設定が驚くほど簡単で、特に運用/保守フェーズでの使い勝手が良さそうです。
唯一お値段が気になるところですが、実際どのくらいの規模でいくらかかるのか分かりづらいのが従量課金の難しいところですよね。
この辺は運用しながら見ていきたいと思います。
お値段についての計算方法は参考のURLを貼っておきます。
ここまで読んで頂き、ありがとうございました。