Firestoreのスケジュールバックアップ機能を使う
はじめに
Firestoreのスケジュールバックアップ機能(Scheduled backups)が2024年6月に一般提供されました。
これにより、Firestoreの標準機能でバックアップを行うことが可能になりました。
Scheduled backupsの特徴
Scheduled backupsには以下の特徴があります。
- 日次または週次でバックアップを設定可能
- それぞれ最大1つ設定が可能
- 週次の場合、バックアップを取得する曜日を指定できる
- バックアップの正確な時刻設定は不可
- バックアップ作成によるFirestoreの読み書きパフォーマンスへの影響はない
- コストはバックアップを保存するストレージ量に対して発生
- 読み取りの費用はかからない
- バックアップデータは最大14週間保存可能
- 期限が切れたバックアップは自動で削除される
バックアップの設定
Scheduled backupsはgcloud CLIやTerraformを使用して設定できます。
以下は、Terraformを使って日次バックアップを設定する例です。
resource "google_firestore_backup_schedule" "daily-backup" {
project = "project-name"
database = "(default)"
retention = "604800s" # 14 weeks
daily_recurrence {}
}
バックアップ設定の確認
バックアップの設定は以下のコマンドで確認できます。
$ gcloud firestore backups schedules list --project=project-name --database='(default)'
---
createTime: '2024-07-22T00:57:35.837458Z'
dailyRecurrence: {}
name: projects/project-name/databases/(default)/backupSchedules/1f93263c-f4ca-42ba-809c-f61030789621
retention: 604800s
updateTime: '2024-07-22T00:57:35.837458Z'
バックアップの確認
以下のコマンドで、作成されたバックアップの一覧を確認できます。日次バックアップが作成されていることがわかります。
$ gcloud firestore backups list --project=project-name
---
database: projects/project-name/databases/(default)
databaseUid: b9c219b4-1203-e222-6009-fc2c464f41fa
expireTime: '2024-07-30T10:40:36.462388Z'
name: projects/project-name/locations/asia-northeast1/backups/01f2a7da-1715-0fc7-6311-f879166c1d5f
snapshotTime: '2024-07-23T10:40:36.462388Z'
state: READY
---
database: projects/project-name/databases/(default)
databaseUid: b9c219b4-1203-e222-6009-fc2c464f41fa
expireTime: '2024-07-29T10:30:25.637845Z'
name: projects/project-name/locations/asia-northeast1/backups/1b7a5b5e-7d9e-85bd-79cf-29b10a08417b
snapshotTime: '2024-07-22T10:30:25.637845Z'
state: READY
リストアの方法
Firestoreのデータベースをリストアする際も、gcloud CLIを使用します。
$ gcloud firestore databases restore \
--project=project-name \
--source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
--destination-database='restore-target-database'
Import/Export機能を使用したバックアップとの違い
これまで、Firestoreのバックアップを行うにはImport/Exportを何らかの方法で定期的に実行し、エクスポートしたデータをストレージに保存する必要がありました。
Import/Exportを利用した方法とScheduled backupsには、主に以下の3点で違いがあります。
1. 保存期間
Scheduled backupsは最大14週間のバックアップ保存が可能です。
これに対して、Import/Export方式ではエクスポートしたデータを任意のストレージに保存するため、保存期間に制限はありません。
2. コスト
Scheduled backupsでは、バックアップで使用するストレージの容量に対して課金が発生します。
一方、Import/Export方式ではエクスポートしたドキュメント数に応じて読み取りオペレーションが発生し、その件数に基づいて課金されます。
Firestoreのデータ件数が多い場合、読み取りオペレーションのコストが高額になるため、Scheduled backupsの方がコスト面で有利です。
3. リストア方法
Scheduled backupsは、同じプロジェクト内の新規データベースへのリストアが可能です。ただし、別プロジェクトにリストアしたり、既存のデータベースへの上書きはできません。
一方、Import/Export方式では既存のデータベースに上書きしたり、別プロジェクトに対してリストアできます。
まとめ
FirestoreにScheduled backupsが追加されたことで、バックアップの選択肢が広がりました。
Scheduled backupsとImport/Exportにはそれぞれメリットとデメリットがあるため、要件に合った方法を選択することが大切です。
参考
![カウシェ Tech Blog](https://storage.googleapis.com/zenn-user-upload/avatar/04c80a5d71.jpeg)
株式会社カウシェのProductチームによる技術ブログです。私たちと一緒に世界一楽しいショッピング体験をつくりませんか? enjoy-working.kauche.com/product
Discussion