Bu sayfada, Cloud Firestore planlı yedekleme özelliğinin nasıl kullanılacağı açıklanmaktadır. Verilerinizi uygulama düzeyinde veri bozulmasına veya yanlışlıkla veri silinmesine karşı korumak için yedeklemeleri kullanın.
Yedekleme, yedekleme programlarını yapılandırarak belirtilen veritabanının günlük veya haftalık yedeklerini almanıza olanak tanır. Ardından, verileri yeni bir veritabanına geri yüklemek için bu yedekleri kullanabilirsiniz.
Yedeklemeler hakkında
Yedek, veritabanının belirli bir zamandaki tutarlı bir kopyasıdır. Yedek, o andaki tüm veri ve dizin yapılandırmalarını içerir. Yedekler, veritabanı geçerlilik süresi politikaları içermez. Yedek, kaynak veritabanıyla aynı konumda bulunur.
Yedeklerin yapılandırılabilir bir saklama süresi vardır ve yedekler, saklama süresi sona erene veya yedeklemeyi silene kadar saklanır. Kaynak veritabanı silindiğinde, ilgili yedeklemeler otomatik olarak silinmez.
Cloud Firestore, bir veritabanıyla ilgili yedekler ve yedek programlarıyla ilgili meta verileri depolar. Cloud Firestore, veritabanının tüm yedeklerinin süresi dolana veya silinene kadar bu meta verileri saklar.
Yedek oluşturmak veya saklamak, canlı veritabanınızdaki okuma veya yazma işlemlerinin performansını etkilemez.
Maliyetler
Yedekleme hizmetlerini kullandığınızda aşağıdakiler için ücret ödersiniz:
- Her bir yedeklemenin kullandığı depolama alanı miktarı.
- Geri yükleme işlemi için yedeğin boyutuna göre ücretlendirilirsiniz.
Daha fazla bilgi ve tam ücretler için Fiyatlandırma sayfasına bakın.
Başlamadan önce
Bu özellik için Blaze fiyatlandırma planı gerekir.Gerekli roller
Yedeklemeleri ve yedekleme planlarını yönetmek için gereken izinleri almak üzere yöneticinizden aşağıdaki Kimlik ve Erişim Yönetimi rollerinden birini veya daha fazlasını vermelerini isteyin:
roles/datastore.owner
: Cloud Firestore veritabanına tam erişimAşağıdaki roller de kullanılabilir ancak Google Cloud Console'da gösterilmez. Aşağıdaki rolleri atamak için Google Cloud CLI simgesini kullanın:
roles/datastore.backupsAdmin
: Yedeklere okuma ve yazma erişimiroles/datastore.backupsViewer
: Yedeklemelere okuma erişimiroles/datastore.backupSchedulesAdmin
: Yedekleme planlarına okuma ve yazma erişimiroles/datastore.backupSchedulesViewer
: Yedekleme planlarına okuma erişimiroles/datastore.restoreAdmin
: Geri yükleme işlemlerini başlatma izinleri
Yedekleme planları oluşturma ve yönetme
Aşağıdaki örneklerde, yedek programın nasıl oluşturulacağı gösterilmektedir. Her veritabanı için en fazla bir günlük yedekleme programı ve en fazla bir haftalık yedekleme programı yapılandırabilirsiniz. Haftanın farklı günleri için birden fazla haftalık yedekleme programı yapılandıramazsınız.
Yedeklemenin tam saatini yapılandıramazsınız. Yedeklemeler her gün farklı zamanlarda alınır. Haftalık yedekleme planları için yedekleme yapılacak günü yapılandırabilirsiniz.
Yedekleme planı oluştur
Bir veritabanı için yedekleme planı oluşturmak üzere gcloud firestore backups schedules create
veya firebase firestore:databases:backups:schedules
komutunu kullanın.
Günlük yedekleme programı oluştur
gcloud
Günlük yedekleme planı oluşturmak için--recurrence
işaretini daily
olarak ayarlayın:
gcloud firestore backups schedules create \ --database='DATABASE_ID' \ --recurrence=daily \ --retention=RETENTION_PERIOD
Aşağıdakini değiştirin:
- DATABASE_ID: Yedeklenecek veritabanının kimliği. Varsayılan veritabanı için
'(default)'
olarak ayarlayın. - RETENTION_PERIOD: Bu değeri 14 haftaya kadar bir değere (
14w
) ayarlayın.
Firebase CLI
Günlük yedekleme programı oluşturmak için--recurrence
işaretini DAILY
olarak ayarlayın:
firebase firestore:backups:schedules:create \ --database 'DATABASE_ID' \ --recurrence 'DAILY' \ --retention RETENTION_PERIOD
Aşağıdakini değiştirin:
- DATABASE_ID: Yedeklenecek veritabanının kimliği. Varsayılan veritabanı için
'(default)'
olarak ayarlayın. - RETENTION_PERIOD: Bu aralığı en fazla 14 haftalık bir değere ayarlayın (
14w
).
Terraform
Günlük yedekleme programı oluşturmak için birgoogle_firestore_backup_schedule
kaynağı oluşturun.
resource "google_firestore_backup_schedule" "daily-backup" { project = PROJECT_ID database = DATABASE_ID retention = RETENTION_PERIOD_SECONDS daily_recurrence {} }
Aşağıdakini değiştirin:
- PROJECT_ID: Projenin kimliği.
- DATABASE_ID: Yedeklenecek veritabanının kimliği. Varsayılan veritabanı için
'(default)'
olarak ayarlayın. - RETENTION_PERIOD_SECONDS: Bu değeri saniye cinsinden bir değere ve ardından "s" karakterine ayarlayın. Maksimum değer
8467200s
(14 hafta)'dır.
google_firestore_database
türü bir Terraform kaynağı için de kaynak referansı kullanabilirsiniz.
Haftalık yedekleme programı oluşturma
gcloud
Haftalık bir yedekleme programı oluşturmak için--recurrence
işaretini weekly
olarak ayarlayın:
gcloud firestore backups schedules create \ --database='DATABASE_ID' \ --recurrence=weekly \ --retention=RETENTION_PERIOD \ --day-of-week=DAY
- DATABASE_ID: Yedeklenecek veritabanının kimliği. Varsayılan veritabanı için
'(default)'
olarak ayarlayın. - RETENTION_PERIOD: Bu değeri 14 haftaya kadar bir değere (
14w
) ayarlayın. - DAY: Yedeğin alınacağı gün. Aşağıdakilerden birine ayarlayın:
- Pazar için
SUN
- Pazartesi için
MON
- Salı için
TUE
- Çarşamba için
WED
- Perşembe için
THU
- Cuma için
FRI
- Cumartesi için
SAT
- Pazar için
Firebase CLI
Haftalık bir yedekleme programı oluşturmak için--recurrence
işaretini WEEKLY
olarak ayarlayın:
firebase firestore:backups:schedules:create \ --database 'DATABASE_ID' \ --recurrence 'WEEKLY' \ --retention RETENTION_PERIOD --day-of-week DAY
- DATABASE_ID: Yedeklenecek veritabanının kimliği. Varsayılan veritabanı için
'(default)'
olarak ayarlayın. - RETENTION_PERIOD: Bu değeri 14 haftaya kadar bir değere (
14w
) ayarlayın. - DAY: Yedeğin alınacağı gün. Aşağıdakilerden birine ayarlayın:
- Pazar için
SUNDAY
- Pazartesi için
MONDAY
- Salı için
TUESDAY
- Çarşamba için
WEDNESDAY
- Perşembe için
THURSDAY
- Cuma için
FRIDAY
- Cumartesi için
SATURDAY
- Pazar için
Terraform
Haftalık yedekleme planı oluşturmak için birgoogle_firestore_backup_schedule
kaynağı oluşturun.
resource "google_firestore_backup_schedule" "weekly-backup" { project = PROJECT_ID database = DATABASE_ID retention = RETENTION_PERIOD_SECONDS weekly_recurrence { day = DAY } }
Aşağıdakini değiştirin:
- PROJECT_ID: Projenin kimliği.
- DATABASE_ID: Yedeklenecek veritabanının kimliği. Varsayılan veritabanı için
'(default)'
olarak ayarlayın. - RETENTION_PERIOD_SECONDS: Bunu saniye cinsinden bir değere ve ardından "s"ye ayarlayın. Maksimum değer
8467200s
(14 hafta)'dır. - DAY: Yedeğin alınacağı gün. Aşağıdakilerden birine ayarlayın:
- Pazar için
SUNDAY
- Pazartesi için
MONDAY
- Salı için
TUESDAY
- Çarşamba için
WEDNESDAY
- Perşembe için
THURSDAY
- Cuma için
FRIDAY
- Cumartesi için
SATURDAY
- Pazar için
google_firestore_database
türündeki bir Terraform kaynağına kaynak referansı da kullanabilirsiniz.
Yedekleme programlarını listeleyin
Bir veritabanının tüm yedekleme planlarını listelemek için aşağıdaki yöntemlerden birini kullanın:
gcloud
gcloud firestore backups schedules list
komutunu kullanın.
gcloud firestore backups schedules list \ --database='DATABASE_ID'
'(default)'
değerini kullanın.
Firebase CLI
firebase firestore:backups:schedules:list
komutunu kullanın.
firebase firestore:backups:schedules:list \ --database 'DATABASE_ID'
'(default)'
değerini kullanın.
Yedekleme planını açıklama
Yedekleme planıyla ilgili bilgileri almak için aşağıdaki yöntemlerden birini kullanın:
gcloud
gcloud firestore backups schedules describe
komutunu kullanın:
gcloud firestore backups schedules describe \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID
- DATABASE_ID: Yedeklenecek veritabanının kimliği. Varsayılan veritabanı için
'(default)'
olarak ayarlayın. - BACKUP_SCHEDULE_ID: Yedekleme planlamasının kimliği. Tüm yedek programları listelediğinizde her yedek programın kimliğini görüntüleyebilirsiniz.
Yedekleme planını güncelleme
Yedekleme planının saklama süresini güncellemek için aşağıdaki yöntemlerden birini kullanın:
gcloud
gcloud firestore backups schedules update
komutunu kullanın:
gcloud firestore backups schedules update \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID \ --retention=RETENTION_PERIOD
- DATABASE_ID: Yedeklenecek veritabanının kimliği. Varsayılan veritabanı için
'(default)'
olarak ayarlayın. - BACKUP_SCHEDULE_ID: Yedekleme planlamasının kimliği. Tüm yedekleme programlarını listelediğinizde her yedekleme planının kimliğini görüntüleyebilirsiniz.
- RETENTION_PERIOD: Bu değeri 14 haftaya kadar bir değere (
14w
) ayarlayın.
Firebase CLI
firebase firestore:backups:schedules:update
komutunu kullanın:
firebase firestore:backups:schedules:update \ BACKUP_SCHEDULE \ --retention RETENTION_PERIOD
- BACKUP_SCHEDULE: Yedekleme planının tam kaynak adı. Tüm yedekleme planlarını listelediğinizde her yedekleme planının adını görüntüleyebilirsiniz.
- RETENTION_PERIOD: Bu aralığı en fazla 14 haftalık bir değere ayarlayın (
14w
).
Bir yedekleme planının saklama süresini güncelleyebilirsiniz ancak yinelenme durumunu güncelleyemezsiniz. Farklı bir yineleme içeren bir yedekleme planına ihtiyacınız varsa artık gerekmeyen eski yedekleme planını silin ve istediğiniz yinelemeyi içeren yeni bir yedekleme planı oluşturun.
Yedekleme programını silme
Yedekleme planını silmek için aşağıdaki yöntemlerden birini kullanın:
gcloud
gcloud firestore backups schedules delete
komutunu kullanın:
gcloud firestore backups schedules delete \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID
- DATABASE_ID: Yedeklenecek veritabanının kimliği. Varsayılan veritabanı için
'(default)'
olarak ayarlayın. - BACKUP_SCHEDULE_ID: Yedekleme planının kimliği. Tüm yedekleme programlarını listelediğinizde her yedekleme planının kimliğini görüntüleyebilirsiniz.
Firebase CLI
firebase firestore:backups:schedules:delete
komutunu kullanın:
firebase firestore:backups:schedules:delete \ BACKUP_SCHEDULE
- BACKUP_SCHEDULE: Yedekleme planının tam kaynak adı. Tüm yedekleme planlarını listelediğinizde her yedekleme planının adını görüntüleyebilirsiniz.
Bir yedekleme planını sildiğinizde, bu plan tarafından oluşturulmuş yedeklemelerin silinmediğini unutmayın. Yedeklemenin saklama süresi dolduktan sonra süresinin dolmasını bekleyebilir veya manuel olarak silmek için yedeklemeyi silme bölümüne göz atın.
Yedekleri yönet
Yedekleri listeleme
Mevcut yedeklemeleri listelemek için aşağıdaki yöntemlerden birini kullanın:
gcloud
gcloud firestore backups list
komutunu kullanın:
gcloud firestore backups list \ --format="table(name, database, state)"
--format="table(name, database, state)"
işareti, çıkışı daha okunaklı bir biçimde biçimlendirir.
Yalnızca belirli bir konumdaki yedekleri listelemek için --location
işaretini kullanın:
gcloud firestore backups list \ --location=LOCATION \ --format="table(name, database, state)"
LOCATION
yerine bir Cloud Firestore konumu girin.
Firebase CLI
firebase firestore:backups:list
komutunu kullanın:
firebase firestore:backups:list
--location
işaretini kullanın:
firebase firestore:backups:list \ --location=LOCATION
LOCATION
yerine bir Cloud Firestore konumu girin.
Yedeklemeyi açıklayın
Bir yedeklemeyle ilgili ayrıntıları görüntülemek için aşağıdaki yöntemlerden birini kullanın:
gcloud
gcloud firestore backups describe
komutunu kullanın:
gcloud firestore backups describe \ --location=LOCATION \ --backup=BACKUP_ID
- LOCATION: Veritabanının konumu.
- BACKUP_ID: Yedeklemenin kimliği. Tüm yedeklemeleri listelediğinizde her yedeklemenin kimliğini görüntüleyebilirsiniz.
Firebase CLI
firebase firestore:backups:get
komutunu kullanın:
firebase firestore:backups:get BACKUP
- BACKUP: Yedeklemenin tam kaynak adı. Tüm yedekleri listelediğinizde her bir yedeğin adını görebilirsiniz.
Yedeği sil
gcloud
gcloud firestore backups delete
komutunu kullanın:
gcloud firestore backups delete \ --location=LOCATION \ --backup=BACKUP_ID
- LOCATION: Veritabanının konumu.
- BACKUP_ID: Bir yedeğin kimliği. Tüm yedeklemeleri listelediğinizde her yedeklemenin kimliğini görüntüleyebilirsiniz.
Firebase CLI
firebase firestore:backups:delete
komutunu kullanın:
firebase firestore:backups:delete \ BACKUP
- BACKUP: Yedeklemenin tam kaynak adı. Tüm yedekleri listelediğinizde her bir yedeğin adını görebilirsiniz.
Veritabanı yedeğinden veri geri yükleme
Geri yükleme işlemi, verileri yedekten yeni bir Cloud Firestore veritabanına yazar.
Geri yükleme işlemini başlatmak için aşağıdaki yöntemlerden birini kullanın:
gcloud
gcloud firestore databases restore
komutunu kullanın:
gcloud firestore databases restore \ --source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \ --destination-database='DATABASE_ID'
- PROJECT_ID: Proje kimliğiniz.
- LOCATION: Veritabanı yedeğinin konumu ve geri yüklenen veriler için oluşturulan yeni veritabanının konumu.
- BACKUP_ID: Yedeklemenin kimliği. Tüm yedeklemeleri listelediğinizde her yedeklemenin kimliğini görüntüleyebilirsiniz.
- DATABASE_ID: Yeni veritabanının veritabanı kimliği. Halihazırda kullanılmakta olan bir veritabanı kimliğini kullanamazsınız.
metadata
, name
ve response
bileşenlerini içerir:
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
alanında, geri yüklemenin şimdiye kadarki tahmini ilerleme durumunu ayrıntılı olarak gösteren bir progressPercentage
bileşeni ve geri yüklemenin genel durumunu belirten bir operationState
bulunur.
Bu bilgileri tekrar almak için gcloud firestore operations list
işlevini kullanın:
gcloud firestore operations list --database=DATABASE_ID
name
alanını gcloud firestore operations describe
ile birlikte kullanarak:
gcloud firestore operations describe OPERATION_NAME
Firebase CLI
firebase firestore:databases:restore
komutunu kullanın:
firebase firestore:databases:restore \ --backup 'BACKUP' \ --database 'DATABASE_ID'
- BACKUP: Yedeklemenin tam kaynak adı. Tüm yedeklemeleri listelediğinizde her yedeklemenin adını görüntüleyebilirsiniz.
- DATABASE_ID: Yeni veritabanı için veritabanı kimliği. Halihazırda kullanılmakta olan bir veritabanı kimliğini kullanamazsınız.