Bu sayfada, Cloud Firestore planlı yedeklemeler özelliğinin nasıl kullanılacağı açıklanmaktadır. Verilerinizi uygulama düzeyinde verilerin bozulmasına veya yanlışlıkla silinmeye karşı korumak için yedekleri kullanın.
Yedeklemeler, belirtilen veritabanının günlük veya haftalık yedeklemelerini almak için yedekleme planlarını yapılandırmanıza olanak tanır. Daha sonra bu yedekleri kullanarak verileri yeni bir veritabanına geri yükleyebilirsiniz.
Yedeklemeler hakkında
Yedek, veritabanının belirli bir zamanda tutarlı bir kopyasıdır. Yedek, o anki tüm veri ve dizin yapılandırmalarını içerir. Yedekler, veritabanı geçerlilik süresi politikaları içermez. Yedekler, kaynak veritabanıyla aynı konumda bulunur.
Yedeklerin, yapılandırılabilir bir saklama süresi vardır ve saklama süresi dolana ya da siz silene kadar depolanır. Kaynak veritabanının silinmesi, ilgili yedeklerin otomatik olarak silinmesine neden olmaz.
Cloud Firestore, bir veritabanıyla ilgili yedeklemeler ve yedekleme programlarıyla ilgili meta verileri depolar. Cloud Firestore, veritabanındaki tüm yedeklerin 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
Yedekleri 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 ayrıntılı bilgi ve kesin ücretler için Fiyatlandırma sayfasını inceleyin.
Başlamadan önce
Bu özellik için Blaze fiyatlandırma planı gerekir.Gerekli roller
Yedeklemeleri ve yedekleme planlarını yönetmek için ihtiyaç duyduğunuz izinleri almak için yöneticinizden size aşağıdaki Kimlik ve Erişim Yönetimi rollerinden birini veya daha fazlasını vermesini isteyin:
roles/datastore.owner
: Cloud Firestore veritabanına tam erişimAşağıdaki roller de kullanılabilir ancak Google Cloud Platform Console'da görünmez. Şu rolleri atamak için Google Cloud KSA'yı kullanın:
roles/datastore.backupsAdmin
: Yedeklere okuma ve yazma erişimiroles/datastore.backupsViewer
: Yedeklere okuma erişimiroles/datastore.backupSchedulesAdmin
: Yedekleme programlarına okuma ve yazma erişimiroles/datastore.backupSchedulesViewer
: Yedekleme programlarına okuma erişimiroles/datastore.restoreAdmin
: Geri yükleme işlemlerini başlatma izinleri
Yedekleme planları oluşturun ve yönetin
Aşağıdaki örneklerde, yedekleme planının nasıl ayarlanacağı gösterilmektedir. Her veritabanı için en fazla bir günlük yedekleme programı ve bir haftalık yedekleme programı yapılandırabilirsiniz. Haftanın farklı günleri için birden fazla haftalık yedekleme planı yapılandıramazsınız.
Yedeklemenin günün tam saatini yapılandıramazsınız. Yedeklemeler her gün farklı zamanlarda alınır. Haftalık yedekleme planları için haftanın bir gününü yedek alacak şekilde yapılandırabilirsiniz.
Yedekleme planı oluştur
Bir veritabanının yedekleme planı oluşturmak için gcloud alpha firestore backups schedules create
komutunu veya firebase firestore:databases:backups:schedules
komutunu kullanın.
Günlük yedekleme programı oluştur
gcloud
Günlük yedekleme programı oluşturmak için--recurrence
işaretini daily
olarak ayarlayın:
gcloud alpha 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
).
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: Bunu saniye cinsinden bir değere ve ardından "s"ye ayarlayın. Maksimum değer
8467200s
(14 hafta) olmalı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 yedekleme planı oluşturmak için--recurrence
işaretini weekly
olarak ayarlayın:
gcloud alpha firestore backups schedules create \ --database='DATABASE_ID' \ --recurrence=weekly \ --retention=RETENTION_PERIOD \ --day-of-week=DAYAşağıdakileri 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
). - DAY: Haftanın 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 yedekleme planı 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 DAYAşağıdakileri 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
). - DAY: Haftanın 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 programı 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) olmalıdır. - DAY: Haftanın 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ü bir Terraform kaynağı için de kaynak referansı kullanabilirsiniz.
Yedekleme programlarını listeleyin
Bir veritabanına ait tüm yedekleme programlarını listelemek için aşağıdaki yöntemlerden birini kullanın:
gcloud
gcloud alpha firestore backups schedules list
komutunu kullanın.
gcloud alpha firestore backups schedules list \ --database='DATABASE_ID'DATABASE_ID kısmını veritabanının kimliğiyle değiştirin. Varsayılan veritabanı için
'(default)'
kullanın.
Firebase CLI
firebase firestore:backups:schedules:list
komutunu kullanın.
firebase firestore:backups:schedules:list \ --database 'DATABASE_ID'DATABASE_ID kısmını veritabanının kimliğiyle değiştirin. Varsayılan veritabanı için
'(default)'
kullanın.
Yedekleme programını açıkla
Yedekleme planlamasıyla ilgili bilgileri almak için aşağıdaki yöntemlerden birini kullanın:
gcloud
gcloud alpha firestore backups schedules describe
komutunu kullanın:
gcloud alpha firestore backups schedules describe \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_IDAşağıdakileri değiştirin:
- 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.
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 alpha firestore backups schedules update
komutunu kullanın:
gcloud alpha firestore backups schedules update \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID \ --retention=RETENTION_PERIODAşağıdakileri değiştirin:
- 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.
- RETENTION_PERIOD: Bu aralığı en fazla 14 haftalık bir değere ayarlayın (
14w
).
Firebase CLI
firebase firestore:backups:schedules:update
komutunu kullanın:
firebase firestore:backups:schedules:update \ BACKUP_SCHEDULE \ --retention RETENTION_PERIODAşağıdaki kodu değiştirin:
- BACKUP_SCHEDULE: Yedekleme planının tam kaynak adı. Tüm yedekleme programlarını listelediğinizde her bir yedekleme planının adını görebilirsiniz.
- 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 yinelenmeye sahip bir yedekleme planına ihtiyacınız varsa artık gerekli değilse eski yedekleme planınızı silin ve istediğiniz yineleme ile yeni bir yedekleme programı oluşturun.
Yedekleme programını silme
Bir yedekleme programını silmek için aşağıdaki yöntemlerden birini kullanın:
gcloud
gcloud alpha firestore backups schedules delete
komutunu kullanın:
gcloud alpha firestore backups schedules delete \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_IDAşağıdakileri değiştirin:
- 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_SCHEDULEAşağıdaki kodu değiştirin:
- BACKUP_SCHEDULE: Yedekleme planının tam kaynak adı. Tüm yedekleme programlarını listelediğinizde her bir yedekleme planının adını görebilirsiniz.
Bir yedekleme programını sildiğinizde, hâlihazırda bu program tarafından oluşturulmuş yedeklerin silinmeyeceğini unutmayın. Saklama süresi sona erdiğinde bunların süresinin dolmasını bekleyebilir veya bir yedeği manuel olarak silmek için yedeği silme bölümünü inceleyebilirsiniz.
Yedekleri yönet
Yedekleri listeleme
Kullanılabilir yedekleri listelemek için aşağıdaki yöntemlerden birini kullanın:
gcloud
gcloud alpha firestore backups list
komutunu kullanın:
gcloud alpha 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 alpha 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:listYalnızca belirli bir konumdaki yedekleri listelemek için
--location
işaretini kullanın:
firebase firestore:backups:list \ --location=LOCATION
LOCATION
değerini bir Cloud Firestore konumuyla değiştirin.
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 alpha firestore backups describe
komutunu kullanın:
gcloud alpha firestore backups describe \ --location=LOCATION \ --backup=BACKUP_IDAşağıdakileri değiştirin:
- LOCATION: Veritabanının konumu.
- BACKUP_ID: Bir yedeğin kimliği. Tüm yedekleri listelediğinizde her bir yedeğin kimliğini görüntüleyebilirsiniz.
Firebase CLI
firebase firestore:backups:get
komutunu kullanın:
firebase firestore:backups:get BACKUPAşağıdaki kodu değiştirin:
- BACKUP: Bir yedeğin tam kaynak adı. Tüm yedekleri listelediğinizde her bir yedeğin adını görebilirsiniz.
Yedek silme
gcloud
gcloud alpha firestore backups delete
komutunu kullanın:
gcloud alpha firestore backups delete \ --location=LOCATION \ --backup=BACKUP_IDAşağıdakileri değiştirin:
- LOCATION: Veritabanının konumu.
- BACKUP_ID: Bir yedeğin kimliği. Tüm yedekleri listelediğinizde her bir yedeğin kimliğini görüntüleyebilirsiniz.
Firebase CLI
firebase firestore:backups:delete
komutunu kullanın:
firebase firestore:backups:delete \ BACKUPAşağıdaki kodu değiştirin:
- BACKUP: Bir yedeğin tam kaynak adı. Tüm yedekleri listelediğinizde her bir yedeğin adını görebilirsiniz.
Verileri veritabanı yedeğinden 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 alpha firestore databases restore
komutunu kullanın:
gcloud alpha firestore databases restore \ --source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \ --destination-database='DATABASE_ID'Aşağıdakileri değiştirin:
- 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: Bir yedeğin kimliği. Tüm yedekleri listelediğinizde her bir yedeğin kimliğini görüntüleyebilirsiniz.
- DATABASE_ID: Yeni veritabanının veritabanı kimliği. Halihazırda kullanımda olan bir veritabanı kimliğini kullanamazsınız.
metadata
, name
ve response
bileşenlerini içerecektir:
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ı, geri yüklemenin o ana kadarki tahmini ilerleme durumunu ayrıntılarıyla gösteren progressPercentage
bileşeni ve geri yüklemenin genel durumunu belirten bir operationState
içerir.
Bu bilgileri tekrar almak için gcloud firestore operations list
komutunu kullanın:
gcloud firestore operations list --database=DATABASE_IDveya yukarıda açıklanan çıkıştaki
name
alanını gcloud firestore operations describe
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'Aşağıdaki kodu değiştirin:
- BACKUP: Bir yedeğin tam kaynak adı. Tüm yedekleri listelediğinizde her bir yedeğin adını görebilirsiniz.
- DATABASE_ID: Yeni veritabanının veritabanı kimliği. Halihazırda kullanımda olan bir veritabanı kimliğini kullanamazsınız.