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 waktu aktif 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 terkait pencadangan dan jadwal pencadangan yang terkait dengan database. Firestore menyimpan metadata ini sampai semua cadangan untuk database tersebut tidak berlaku lagi 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 telah diaktifkan untuk project Google Cloud Anda. Pelajari cara memeriksa apakah penagihan diaktifkan di sebuah 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 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
Untuk membuat jadwal pencadangan database, gunakan
perintah gcloud alpha firestore backups schedules create
.
Membuat jadwal pencadangan harian
Untuk membuat jadwal pencadangan harian, tetapkan flag --recurrence
ke daily
:
gcloud alpha 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 ke nilai hingga 14 minggu (14w
).
Membuat jadwal pencadangan mingguan
Untuk membuat jadwal pencadangan mingguan, tetapkan flag --recurrence
ke weekly
:
gcloud alpha firestore backups schedules create \ --database='DATABASE_ID' \ --recurrence=weekly \ --retention=RETENTION_PERIOD \ --day-of-week=DAY
Ganti kode berikut:
DATABASE_ID
: ID database yang akan dicadangkan. Tetapkan ke(default)
untuk database default.RETENTION_PERIOD
: Tetapkan 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
Mencantumkan jadwal pencadangan
Untuk mencantumkan semua jadwal pencadangan untuk database, gunakan perintah gcloud alpha firestore backups schedules list
.
Perintah ini akan menampilkan informasi tentang semua jadwal pencadangan.
gcloud alpha firestore backups schedules list \ --database='DATABASE_ID'
Ganti DATABASE_ID
dengan ID database. Gunakan (default)
untuk database default.
Mendeskripsikan jadwal pencadangan
Untuk mengambil informasi tentang jadwal pencadangan, gunakan
perintah gcloud alpha firestore backups schedules describe
:
gcloud alpha firestore backups schedules describe \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID
Ganti kode berikut:
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 mencantumkan semua jadwal pencadangan.
Memperbarui jadwal pencadangan
Untuk memperbarui periode retensi data jadwal pencadangan, gunakan
perintah gcloud alpha firestore backups schedules update
:
gcloud alpha firestore backups schedules update \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID --retention=RETENTION_PERIOD
Ganti kode berikut:
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 mencantumkan semua jadwal pencadangan.RETENTION_PERIOD
: Tetapkan ke nilai hingga 14 minggu (14w
).
Menghapus jadwal pencadangan
Untuk menghapus jadwal pencadangan, gunakan
perintah gcloud alpha firestore backups schedules delete
:
gcloud alpha firestore backups schedules delete \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID
Ganti kode berikut:
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 mencantumkan 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
Mencantumkan pencadangan
Untuk mencantumkan cadangan yang tersedia, gunakan perintah gcloud alpha firestore backups list
:
gcloud alpha firestore backups list \ --format="table(name, database, state)"
Flag --format="table(name, database, state)"
memformat output ke dalam format yang lebih mudah dibaca.
Untuk mencantumkan hanya cadangan dari lokasi tertentu, gunakan tanda --location
:
gcloud alpha firestore backups list \ --location=LOCATION \ --format="table(name, database, state)"
Ganti LOCATION
dengan nama lokasi Firestore.
Mendeskripsikan pencadangan
Untuk melihat detail pencadangan, gunakan
perintah gcloud alpha firestore backups describe
:
gcloud alpha firestore backups describe \ --location=LOCATION \ --backup=BACKUP_ID
LOCATION
: Lokasi database.BACKUP_ID
: ID cadangan. Anda dapat melihat ID setiap cadangan saat mencantumkan semua cadangan.
Menghapus pencadangan
Untuk menghapus database, gunakan perintah gcloud alpha firestore backups delete
.
gcloud alpha firestore backups delete \ --location=LOCATION \ --backup=BACKUP_ID
LOCATION
: Lokasi database.BACKUP_ID
: ID cadangan. Anda dapat melihat ID setiap cadangan saat mencantumkan semua cadangan.
Memulihkan data dari cadangan database
Operasi pemulihan menulis data dari cadangan ke database Firestore yang baru. Untuk memulai operasi pemulihan, gunakan
perintah gcloud alpha firestore databases restore
:
gcloud alpha 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 mencantumkan semua cadangan.DATABASE_ID
: ID database untuk database yang baru. Anda tidak dapat menggunakan ID database yang sudah digunakan. Mode database akan sama dengan mode cadangan.
Output-nya akan menyertakan komponen 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 ...
Kolom 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
atau menggunakan kolom name
dari output yang dijelaskan di atas, dengan gcloud firestore operations describe
:
gcloud firestore operations describe OPERATION_NAME