Mencadangkan dan memulihkan data
Halaman ini menjelaskan cara menggunakan fitur pencadangan terjadwal Firestore. Gunakan pencadangan untuk melindungi data Anda dari kerusakan data tingkat aplikasi atau dari penghapusan data yang tidak disengaja.
Dengan pencadangan, Anda dapat mengonfigurasi jadwal pencadangan untuk mengambil cadangan harian atau mingguan dari database yang ditentukan. Anda kemudian dapat menggunakan cadangan ini untuk memulihkan data ke database baru.
Tentang pencadangan
Cadangan adalah salinan database yang konsisten pada suatu waktu. Cadangan berisi semua konfigurasi data dan indeks pada saat itu. Cadangan tidak berisi kebijakan time to live (TTL) database. Cadangan berada di lokasi yang sama dengan database sumber.
Cadangan memiliki periode retensi yang dapat dikonfigurasi dan disimpan hingga periode retensi data berakhir atau sampai Anda menghapus cadangan. Menghapus database sumber tidak akan otomatis menghapus cadangan terkait.
Firestore menyimpan metadata yang terkait dengan pencadangan dan jadwal pencadangan terkait database. Firestore menyimpan metadata ini hingga semua cadangan untuk database habis masa berlakunya atau dihapus.
Pembuatan atau penyimpanan cadangan tidak memengaruhi performa operasi baca atau tulis dalam database live Anda.
Biaya
Jika menggunakan cadangan, Anda dikenai biaya untuk hal-hal berikut:
- Jumlah penyimpanan yang digunakan oleh setiap cadangan.
- Untuk operasi pemulihan, Anda akan ditagih berdasarkan ukuran cadangan.
Untuk mengetahui detail dan tarif persisnya, lihat halaman Harga.
Sebelum memulai
Pastikan penagihan diaktifkan untuk project Google Cloud Anda. Pelajari cara memeriksa apakah penagihan telah diaktifkan pada suatu project.Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan guna mengelola pencadangan dan jadwal pencadangan, minta administrator Anda memberikan satu atau beberapa peran Identity and Access Management berikut:
roles/datastore.owner
: Akses penuh ke database FirestorePeran berikut ini juga tersedia, tetapi tidak terlihat di konsol Google Cloud. Gunakan Google Cloud CLI untuk menetapkan peran ini:
roles/datastore.backupsAdmin
: Akses baca dan tulis ke cadanganroles/datastore.backupsViewer
: Akses baca ke cadanganroles/datastore.backupSchedulesAdmin
: Akses baca dan tulis ke jadwal pencadanganroles/datastore.backupSchedulesViewer
: Akses baca ke jadwal pencadanganroles/datastore.restoreAdmin
: Izin untuk memulai operasi pemulihan
Membuat dan mengelola jadwal pencadangan
Contoh di bawah menunjukkan cara menyiapkan jadwal pencadangan. Untuk setiap database, Anda dapat mengonfigurasi hingga satu jadwal pencadangan harian dan satu jadwal pencadangan mingguan. Anda tidak dapat mengonfigurasi beberapa jadwal pencadangan mingguan untuk hari yang berbeda dalam seminggu.
Anda tidak dapat mengonfigurasi waktu persis untuk pencadangan. Pencadangan dilakukan pada waktu yang berbeda setiap hari. Untuk jadwal pencadangan mingguan, Anda dapat mengonfigurasi hari dalam seminggu untuk mengambil cadangan.
Membuat jadwal pencadangan
Gunakan salah satu alat berikut untuk membuat jadwal pencadangan.
Membuat jadwal pencadangan harian
Konsol Google Cloud
Di konsol Google Cloud, buka halaman Databases.
- Dalam daftar database, temukan baris untuk database. Di kolom Pencadangan terjadwal, klik Lihat cadangan atau Edit setelan, bergantung pada apakah ada jadwal pencadangan.
- Klik Edit untuk mengedit setelan disaster recovery.
- Centang kotak Daily, tetapkan periode retensi, lalu klik Save.
gcloud
Untuk membuat jadwal pencadangan database, gunakan perintahgcloud firestore backups schedules create
.
Untuk membuat jadwal pencadangan harian, tetapkan flag --recurrence
ke daily
:
gcloud firestore backups schedules create \ --database='DATABASE_ID' \ --recurrence=daily \ --retention=RETENTION_PERIOD
Ganti kode berikut:
- DATABASE_ID: ID database yang akan dicadangkan. Tetapkan ke
'(default)'
untuk database default. - RETENTION_PERIOD: Tetapkan ini ke nilai hingga 14 minggu (
14w
).
Firebase CLI
Untuk membuat jadwal pencadangan database, gunakan perintahfirebase firestore:databases:backups:schedules
.
Untuk membuat jadwal pencadangan harian, tetapkan flag --recurrence
ke DAILY
:
firebase firestore:backups:schedules:create \ --database 'DATABASE_ID' \ --recurrence 'DAILY' \ --retention RETENTION_PERIOD
Ganti kode berikut:
- DATABASE_ID: ID database yang akan dicadangkan. Tetapkan ke
'(default)'
untuk database default. - RETENTION_PERIOD: Tetapkan ini ke nilai hingga 14 minggu (
14w
).
Terraform
Untuk membuat jadwal pencadangan harian, buat resourcegoogle_firestore_backup_schedule
.
resource "google_firestore_backup_schedule" "daily-backup" { project = PROJECT_ID database = DATABASE_ID retention = RETENTION_PERIOD_SECONDS daily_recurrence {} }
Ganti kode berikut:
- PROJECT_ID: ID project.
- DATABASE_ID: ID database yang akan dicadangkan. Tetapkan ke
'(default)'
untuk database default.
Anda juga dapat menggunakan referensi resource ke resource Terraform dari jenis - RETENTION_PERIOD_SECONDS: Tetapkan ini ke nilai dalam detik, diikuti dengan "s". Nilai maksimumnya adalah
8467200s
(14 minggu).
google_firestore_database
.
Membuat jadwal pencadangan mingguan
Konsol Google Cloud
Di konsol Google Cloud, buka halaman Databases.
- Dalam daftar database, temukan baris untuk database. Di kolom Pencadangan terjadwal, klik Lihat cadangan atau Edit setelan, bergantung pada apakah ada jadwal pencadangan.
- Klik Edit untuk mengedit setelan disaster recovery.
- Centang kotak Weekly, pilih hari pencadangan, tetapkan periode retensi, lalu klik Save.
gcloud
Untuk membuat jadwal pencadangan mingguan, tetapkan flag--recurrence
ke weekly
:
gcloud firestore backups schedules create \ --database='DATABASE_ID' \ --recurrence=weekly \ --retention=RETENTION_PERIOD \ --day-of-week=DAY
- DATABASE_ID: ID database yang akan dicadangkan. Tetapkan ke
'(default)'
untuk database default. - RETENTION_PERIOD: Tetapkan ini ke nilai hingga 14 minggu (
14w
). - DAY: Tanggal untuk melakukan pencadangan. Tetapkan ke salah satu opsi berikut:
SUN
untuk hari MingguMON
untuk hari SeninTUE
untuk hari SelasaWED
untuk hari RabuTHU
untuk hari KamisFRI
untuk hari JumatSAT
untuk hari Sabtu
Firebase CLI
Untuk membuat jadwal pencadangan mingguan, tetapkan flag--recurrence
ke WEEKLY
:
firebase firestore:backups:schedules:create \ --database 'DATABASE_ID' \ --recurrence 'WEEKLY' \ --retention RETENTION_PERIOD --day-of-week DAY
- DATABASE_ID: ID database yang akan dicadangkan. Tetapkan ke
'(default)'
untuk database default. - RETENTION_PERIOD: Tetapkan ini ke nilai hingga 14 minggu (
14w
). - DAY: Tanggal untuk melakukan pencadangan. Tetapkan ke salah satu opsi berikut:
SUNDAY
untuk hari MingguMONDAY
untuk hari SeninTUESDAY
untuk hari SelasaWEDNESDAY
untuk hari RabuTHURSDAY
untuk hari KamisFRIDAY
untuk hari JumatSATURDAY
untuk hari Sabtu
Terraform
Untuk membuat jadwal pencadangan mingguan, buat resourcegoogle_firestore_backup_schedule
.
resource "google_firestore_backup_schedule" "weekly-backup" { project = PROJECT_ID database = DATABASE_ID retention = RETENTION_PERIOD_SECONDS weekly_recurrence { day = DAY } }
Ganti kode berikut:
- PROJECT_ID: ID project.
- DATABASE_ID: ID database yang akan dicadangkan. Tetapkan ke
'(default)'
untuk database default.
Anda juga dapat menggunakan referensi resource ke resource Terraform dari jenis - RETENTION_PERIOD_SECONDS: Tetapkan ini ke nilai dalam detik, diikuti dengan "s". Nilai maksimumnya adalah
8467200s
(14 minggu). - DAY: Tanggal untuk melakukan pencadangan. Tetapkan ke salah satu opsi berikut:
SUNDAY
untuk hari MingguMONDAY
untuk hari SeninTUESDAY
untuk hari SelasaWEDNESDAY
untuk hari RabuTHURSDAY
untuk hari KamisFRIDAY
untuk hari JumatSATURDAY
untuk hari Sabtu
google_firestore_database
.
Menampilkan jadwal pencadangan
Untuk menampilkan semua jadwal pencadangan untuk database, gunakan salah satu metode berikut:
Konsol Google Cloud
Di konsol Google Cloud, buka halaman Databases.
- Dalam daftar database, temukan baris untuk database. Di kolom Pencadangan terjadwal, klik Lihat cadangan atau Edit setelan, bergantung pada apakah ada jadwal pencadangan.
- Halaman Disaster recovery akan terbuka. Halaman ini menjelaskan jadwal pencadangan dan mencantumkan pencadangan yang tersedia.
gcloud
Gunakan perintahgcloud firestore backups schedules list
.
gcloud firestore backups schedules list \ --database='DATABASE_ID'
'(default)'
untuk database default.
Firebase CLI
Gunakan perintahfirebase firestore:backups:schedules:list
.
firebase firestore:backups:schedules:list \ --database 'DATABASE_ID'
'(default)'
untuk database default.
Mendeskripsikan jadwal pencadangan
Untuk mengambil informasi tentang jadwal pencadangan, gunakan salah satu metode berikut:
Konsol Google Cloud
Di konsol Google Cloud, buka halaman Databases.
- Dalam daftar database, temukan baris untuk database. Di kolom Pencadangan terjadwal, klik Lihat cadangan atau Edit setelan, bergantung pada apakah ada jadwal pencadangan.
- Halaman Disaster recovery akan terbuka. Halaman ini menjelaskan jadwal pencadangan dan mencantumkan pencadangan yang tersedia.
gcloud
Gunakan perintahgcloud firestore backups schedules describe
:
gcloud firestore backups schedules describe \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID
- DATABASE_ID: ID database yang akan dicadangkan. Tetapkan ke
'(default)'
untuk database default. - BACKUP_SCHEDULE_ID: ID jadwal pencadangan. Anda dapat melihat ID setiap jadwal pencadangan saat menampilkan semua jadwal pencadangan.
Memperbarui jadwal pencadangan
Untuk memperbarui periode retensi data jadwal cadangan, gunakan salah satu metode berikut:
Konsol Google Cloud
Di konsol Google Cloud, buka halaman Databases.
- Dalam daftar database, temukan baris untuk database. Di kolom Pencadangan terjadwal, klik Lihat cadangan atau Edit setelan.
- Klik Edit untuk mengedit setelan disaster recovery.
- Edit setelan jadwal pencadangan, lalu klik Simpan.
gcloud
Gunakan perintahgcloud firestore backups schedules update
:
gcloud firestore backups schedules update \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID \ --retention=RETENTION_PERIOD
- DATABASE_ID: ID database yang akan dicadangkan. Tetapkan ke
'(default)'
untuk database default. - BACKUP_SCHEDULE_ID: ID jadwal pencadangan. Anda dapat melihat ID setiap jadwal pencadangan saat menampilkan semua jadwal pencadangan.
- RETENTION_PERIOD: Tetapkan ini ke nilai hingga 14 minggu (
14w
).
Firebase CLI
Gunakan perintahfirebase firestore:backups:schedules:update
:
firebase firestore:backups:schedules:update \ BACKUP_SCHEDULE \ --retention RETENTION_PERIOD
- BACKUP_SCHEDULE: Nama resource lengkap dari jadwal pencadangan. Anda dapat melihat nama setiap jadwal pencadangan saat menampilkan semua jadwal pencadangan.
- RETENTION_PERIOD: Tetapkan ini ke nilai hingga 14 minggu (
14w
).
Anda dapat memperbarui periode retensi data dari jadwal pencadangan, tetapi Anda tidak dapat memperbarui pengulangannya. Jika Anda memerlukan jadwal pencadangan dengan pengulangan yang berbeda, hapus jadwal pencadangan lama jika tidak lagi diperlukan dan buat jadwal pencadangan baru dengan pengulangan yang diinginkan.
Menghapus jadwal pencadangan
Untuk menghapus jadwal pencadangan, gunakan salah satu metode berikut:
Konsol Google Cloud
Di konsol Google Cloud, buka halaman Databases.
- Dalam daftar database, temukan baris untuk database. Di kolom Pencadangan terjadwal, klik Lihat cadangan atau Edit setelan, bergantung pada apakah ada jadwal pencadangan.
- Klik Edit untuk mengedit setelan disaster recovery.
- Edit setelan jadwal pencadangan, lalu klik Simpan.
gcloud
Gunakan perintahgcloud firestore backups schedules delete
:
gcloud firestore backups schedules delete \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID
- DATABASE_ID: ID database yang akan dicadangkan. Tetapkan ke
'(default)'
untuk database default. - BACKUP_SCHEDULE_ID: ID jadwal pencadangan. Anda dapat melihat ID setiap jadwal pencadangan saat menampilkan semua jadwal pencadangan.
Firebase CLI
Gunakan perintahfirebase firestore:backups:schedules:delete
:
firebase firestore:backups:schedules:delete \ BACKUP_SCHEDULE
- BACKUP_SCHEDULE: Nama resource lengkap dari jadwal pencadangan. Anda dapat melihat nama setiap jadwal pencadangan saat menampilkan semua jadwal pencadangan.
Perhatikan bahwa menghapus jadwal pencadangan tidak akan menghapus cadangan yang sudah dibuat dengan jadwal ini. Anda dapat menunggu hingga masa berlakunya habis setelah periode retensi data, atau menghapus cadangan secara manual, lihat menghapus cadangan.
Mengelola pencadangan
Menampilkan daftar pencadangan
Untuk menampilkan daftar pencadangan yang tersedia, gunakan salah satu metode berikut:
Konsol Google Cloud
Di konsol Google Cloud, buka halaman Databases.
- Dalam daftar database, temukan baris untuk database. Di kolom Pencadangan terjadwal, klik Lihat cadangan atau Edit setelan, bergantung pada apakah ada jadwal pencadangan.
- Klik Edit untuk mengedit setelan disaster recovery.
- Edit setelan jadwal pencadangan, lalu klik Simpan.
gcloud
Gunakan perintahgcloud firestore backups list
:
gcloud firestore backups list \ --format="table(name, database, state)"
--format="table(name, database, state)"
memformat output ke dalam
format yang lebih mudah dibaca.
Untuk menampilkan daftar cadangan hanya dari lokasi tertentu, gunakan flag --location
:
gcloud firestore backups list \ --location=LOCATION \ --format="table(name, database, state)"
LOCATION
dengan nama lokasi Firestore.
Firebase CLI
Gunakan perintahfirebase firestore:backups:list
:
firebase firestore:backups:list
--location
:
firebase firestore:backups:list \ --location=LOCATION
LOCATION
dengan nama lokasi Firestore.
Mendeskripsikan pencadangan
Untuk melihat detail tentang cadangan, gunakan salah satu metode berikut:
Konsol Google Cloud
Di konsol Google Cloud, buka halaman Databases.
- Dalam daftar database, temukan baris untuk database. Di kolom Pencadangan terjadwal, klik Lihat cadangan atau Edit setelan, bergantung pada apakah ada jadwal pencadangan.
- Halaman Disaster recovery akan terbuka. Halaman ini menjelaskan jadwal pencadangan dan mencantumkan pencadangan yang tersedia.
gcloud
Gunakan perintahgcloud firestore backups describe
:
gcloud firestore backups describe \ --location=LOCATION \ --backup=BACKUP_ID
- LOCATION: Lokasi database.
- BACKUP_ID: ID cadangan. Anda dapat melihat ID setiap cadangan saat menampilkan daftar semua cadangan.
Firebase CLI
Gunakan perintahfirebase firestore:backups:get
:
firebase firestore:backups:get BACKUP
- BACKUP: Nama resource lengkap dari cadangan. Anda dapat melihat nama setiap cadangan saat menampilkan daftar semua cadangan.
Menghapus pencadangan
Untuk menghapus cadangan, gunakan salah satu metode berikut.
Konsol Google Cloud
Di konsol Google Cloud, buka halaman Databases.
- Dalam daftar database, temukan baris untuk database. Di kolom Pencadangan terjadwal, klik Lihat cadangan atau Edit setelan, bergantung pada apakah ada jadwal pencadangan. Halaman Disaster recovery akan terbuka. Halaman ini menjelaskan jadwal pencadangan dan mencantumkan pencadangan yang tersedia.
- Di tabel Pencadangan, temukan baris untuk pencadangan dan di kolom Tindakan, klik Lihat lainnya( ). Klik Hapus.
- Konfirmasi tindakan menggunakan kolom teks, lalu klik Hapus.
gcloud
Gunakan perintahgcloud firestore backups delete
:
gcloud firestore backups delete \ --location=LOCATION \ --backup=BACKUP_ID
- LOCATION: Lokasi database.
- BACKUP_ID: ID cadangan. Anda dapat melihat ID setiap cadangan saat menampilkan daftar semua cadangan.
Firebase CLI
Gunakan perintahfirebase firestore:backups:delete
:
firebase firestore:backups:delete \ BACKUP
- BACKUP: Nama resource lengkap dari cadangan. Anda dapat melihat nama setiap cadangan saat Anda menampilkan daftar semua cadangan.
Memulihkan data dari cadangan database
Operasi pemulihan akan menulis data dari cadangan ke database Firestore yang baru.
Untuk memulai operasi pemulihan, gunakan salah satu metode berikut:
Konsol Google Cloud
Di konsol Google Cloud, buka halaman Databases.
- Dalam daftar database, temukan baris untuk database. Di kolom Pencadangan terjadwal, klik Lihat cadangan atau Edit setelan, bergantung pada apakah ada jadwal pencadangan. Halaman Disaster recovery akan terbuka. Halaman ini menjelaskan jadwal pencadangan dan mencantumkan pencadangan yang tersedia.
- Di tabel Pencadangan, temukan baris untuk pencadangan dan di kolom Tindakan, klik Lihat lainnya( ). Klik Pulihkan dengan Cloud Shell.
-
Panel Cloud Shell akan terbuka dengan perintah gcloud CLI untuk memulihkan dari cadangan yang dipilih. Ganti ID_OF_NEW_DATABASE dengan ID untuk database dan jalankan perintah.
Menjalankan perintah akan menampilkan respons dengan informasi selengkapnya tentang operasi. Database akan segera muncul di daftar database Anda. Operasi pemulihan akan memerlukan waktu beberapa saat dan harus selesai sebelum database dapat diakses.
gcloud
Gunakan perintahgcloud firestore databases restore
:
gcloud firestore databases restore \ --source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \ --destination-database='DATABASE_ID'
- PROJECT_ID: Project ID Anda.
- LOCATION: Lokasi pencadangan database dan lokasi database baru yang dibuat untuk data yang dipulihkan.
- BACKUP_ID: ID cadangan. Anda dapat melihat ID setiap cadangan saat menampilkan daftar semua cadangan.
- DATABASE_ID: ID database untuk database yang baru. Anda tidak dapat menggunakan ID database yang sudah digunakan.
metadata
, name
, dan response
:
metadata: '@type': type.googleapis.com/google.firestore.admin.v1.RestoreDatabaseMetadata backup: projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID database: projects/PROJECT_ID/databases/DATABASE_ID operationState: PROCESSING progressPercentage: completedWork: '20' estimatedWork: '100' startTime: '2023-12-06T14:20:17.398325Z' name: projects/PROJECT_ID/databases/DATABASE_ID/operations/operation_uuid response: '@type': type.googleapis.com/google.firestore.admin.v1.Database createTime: '2023-12-06T14:20:17.398325Z' name: projects/PROJECT_ID/databases/DATABASE_ID ...
metadata
mencakup komponen progressPercentage
, yang memerinci perkiraan progres pemulihan sejauh ini, dan operationState
yang menentukan status pemulihan secara keseluruhan.
Untuk mengambil informasi ini lagi, gunakan gcloud firestore operations list
:
gcloud firestore operations list --database=DATABASE_ID
name
dari output yang dijelaskan di atas, dengan gcloud firestore operations describe
:
gcloud firestore operations describe OPERATION_NAME
Firebase CLI
Gunakan perintahfirebase firestore:databases:restore
:
firebase firestore:databases:restore \ --backup 'BACKUP' \ --database 'DATABASE_ID'
- BACKUP: Nama resource lengkap dari cadangan. Anda dapat melihat nama setiap cadangan saat menampilkan daftar semua cadangan.
- DATABASE_ID: ID database untuk database yang baru. Anda tidak dapat menggunakan ID database yang sudah digunakan.