Carpe Diem

備忘録

MongoDB AtlasでContinuous Cloud Backupを有効化してRPOを小さくする

概要

MongoDB AtlasではContinuous Cloud Backupという機能を用いることでRPO(Recovery Point Objective)を1分にすることが可能です。

Dedicated Cluster Backups — MongoDB Atlas

その他のストレージやデータベースではPoint in Time Recover/Restoreという名称で提供されていることが多いです。

今回はこの設定方法と使い方、ポイントについて説明します。

事前知識

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の短縮はコストとのトレードオフとなります。
しかしデータのロストはビジネス的なインパクトが非常に大きいため、あらかじめ目標値を決め経営層と合意をとっておくことでいざ障害が起きたときも余裕を持って対応できるようにしておくことが良いでしょう。