概要
MongoDB AtlasではContinuous Cloud Backupという機能を用いることでRPO(Recovery Point Objective)を1分にすることが可能です。
Dedicated Cluster Backups — MongoDB Atlas
その他のストレージやデータベースではPoint in Time Recover/Restoreという名称で提供されていることが多いです。
- ポイントインタイム リカバリ(PITR)について | Cloud Spanner | Google Cloud
- ポイントインタイムリカバリ (PITR) を使用して指定された時間に復元する - AWS Backup
今回はこの設定方法と使い方、ポイントについて説明します。
事前知識
RPOとRTO
ref: https://www.climb.co.jp/blog_veeam/veeam-backup-18990
RPOもRTOもどちらもデータ復旧における目標値です。
RPO(Recovery Point Objective)
目標復旧ポイントです。失われるデータの許容値として決めます。
短ければ短いほど失われるデータが減るので良いですが、バックアップコストとのトレードオフとなります。
今回のContinuous Cloud Backupではここを短くすることが可能です。
RTO(Recovery Time Objective)
目標復旧時間です。障害後復旧するまでの目標値として決めます。
同じく短ければ短いほど障害影響が減るので良いですが、妥当な値を設定するためには普段から定期的に避難訓練(障害訓練)をする必要があります。
Cloud BackupとContinuous Cloud Backup
MongoDB Atlasではバックアップの項目で2つの設定(Cloud BackupとContinuous Cloud Backup)が存在します。
それぞれを説明します。
Cloud Backup
数時間毎や毎日といった定期的にスナップショットをとってバックアップをとる機能です。
- hourly
- daily
- weekly
- monthly
といった単位で設定が可能です。
Continuous Cloud Backup
oplogを用いた増分バックアップです。Cloud Backupとの差分でoplogを利用することにより、Cloud Backupだけだと長くなりがちなRPOを短くすることが可能となっています。
仕様上はRPOを1分まで短くすることが可能です。
Continuous Cloud Backup
設定方法
おそらくCloud Backupを有効化するとContinuous Cloud Backupもデフォルトで有効化されると思いますが、以下のトグルがONになっていれば有効化されています。
リストア手順
クラスタ設定でBackup > Snapshots
の画面において右上のPOINT IN TIME RESTORE
をクリックします。
リストアしたい時間を指定します。
最後にリストア先のクラスタを選べばOKです。
どこまで新しいデータを対象とできるか
仕様通り1分前までの時刻が指定可能でした。
未来及び0分以内の場合以下のエラーが出ました。
どこまで古いデータを対象とできるか
Backup > Backup Policy
で指定できます。
最大はCloud Backupのhourlyのretention time(保持期間)です。なのでデフォルトだと7daysになっています。
利用する事による料金
ドキュメントでは以下の料金体系になっています。
ref: https://www.mongodb.com/docs/atlas/billing/cluster-configuration-costs/#continuous-cloud-backups
Cloud Backupに比べて高く付きやすいので、Backup Policy
で必要最低限の期間に減らすことを推奨します。
例えば土日による休みを考慮して、3daysが現実的かと思われます。
まとめ
最初に述べたようにRPOの短縮はコストとのトレードオフとなります。
しかしデータのロストはビジネス的なインパクトが非常に大きいため、あらかじめ目標値を決め経営層と合意をとっておくことでいざ障害が起きたときも余裕を持って対応できるようにしておくことが良いでしょう。