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.
Yedeklemeler, belirtilen veritabanının günlük veya haftalık yedeklerini alacak şekilde yedekleme programlarını yapılandırmanı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. Yedekleme, o andaki tüm veri ve dizin yapılandırmalarını içerir. Yedekleme, veritabanı yaşam süresi politikalarını 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 siz 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.
Yedekleme 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 ücretlendirilirsiniz:
- Her yedeğin 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
: Yedeklemelere 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 programı oluşturma
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şturma
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 (
14w
) kadar bir değere ayarlayın.
Firebase CLI
Günlük yedekleme planı 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 değeri 14 haftaya (
14w
) kadar bir değere ayarlayın.
Terraform
Günlük yedekleme planı 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ündeki bir Terraform kaynağına kaynak referansı da 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 (
14w
) kadar bir değere ayarlayın. - DAY: Yedeklemenin alınacağı haftanın 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 (
14w
) kadar bir değere ayarlayın. - DAY: Yedeklemenin alınacağı haftanın 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: Bu değeri saniye cinsinden bir değere ve ardından "s" karakterine ayarlayın. Maksimum değer
8467200s
(14 hafta)'dır. - DAY: Yedeklemenin alınacağı haftanın 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 planlarını listeleme
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 planları listelediğinizde her yedek planın kimliğini görüntüleyebilirsiniz.
Yedekleme planını güncelleme
Yedek planı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 yedek planları listelediğinizde her yedek planın kimliğini görüntüleyebilirsiniz.
- RETENTION_PERIOD: Bu değeri 14 haftaya (
14w
) kadar bir değere 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 değeri 14 haftaya (
14w
) kadar bir değere ayarlayın.
Yedekleme planının saklama süresini güncelleyebilirsiniz ancak yinelenme sıklığını güncelleyemezsiniz. Farklı bir yineleme içeren bir yedekleme planına ihtiyacınız varsa artık gerekli olmayan eski yedekleme planını silin ve istediğiniz yinelemeyi içeren yeni bir yedekleme planı oluşturun.
Yedekleme planı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 planlamasının kimliği. Tüm yedek planları listelediğinizde her yedek planı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 yedeklemeleri listelemek için --location
işaretini kullanın:
gcloud firestore backups list \ --location=LOCATION \ --format="table(name, database, state)"
LOCATION
yerine bir Cloud Firestore konumunun adını yazın.
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 konumunun adını yazın.
Yedeklemeyi tanımlama
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 yedeklemeleri listelediğinizde her yedeklemenin adını görüntüleyebilirsiniz.
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: Yedeklemenin 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 yedeklemeleri listelediğinizde her yedeğin adını görüntüleyebilirsiniz.
Veritabanı yedeğinden veri geri yükleme
Geri yükleme işlemi, yedekteki verileri 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ği 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ı için veritabanı kimliği. Halihazırda kullanılmakta olan bir veritabanı kimliğini kullanamazsınız.
metadata
, name
ve response
bileşenleri yer alır:
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
'ü 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.