Verileri yedekleme ve geri yükleme

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şim
  • Aş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şimi
    • roles/datastore.backupsViewer: Yedeklemelere okuma erişimi
    • roles/datastore.backupSchedulesAdmin: Yedekleme planlarına okuma ve yazma erişimi
    • roles/datastore.backupSchedulesViewer: Yedekleme planlarına okuma erişimi
    • roles/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 bir google_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.
  • google_firestore_database türü bir Terraform kaynağı için de kaynak referansı kullanabilirsiniz.
  • 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.

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
Aş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 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
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
Aş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 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
Terraform
Haftalık yedekleme planı oluşturmak için bir google_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.
  • google_firestore_database türündeki bir Terraform kaynağına kaynak referansı da kullanabilirsiniz.
  • 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

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'
DATABASE_ID yerine veritabanının kimliğini yazın. Varsayılan veritabanı için '(default)' değerini kullanın.
Firebase CLI
firebase firestore:backups:schedules:list komutunu kullanın.
firebase firestore:backups:schedules:list \
--database 'DATABASE_ID'
DATABASE_ID yerine veritabanının kimliğini yazın. Varsayılan veritabanı için '(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
Aş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 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
Aş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 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
Aşağıdakileri değiştirin:
  • 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
Aş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_SCHEDULE
Aşağıdakileri değiştirin:

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
Yalnızca belirli bir konumdaki yedeklemeleri listelemek için --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
Aşağıdakileri değiştirin:
Firebase CLI
firebase firestore:backups:get komutunu kullanın:
firebase firestore:backups:get BACKUP
Aşağıdakileri değiştirin:

Yedeği sil

Bir yedeklemeyi silmek için aşağıdaki yöntemlerden birini kullanın. Uyarı: Silinmiş bir yedeği kurtaramazsınız.
gcloud
gcloud firestore backups delete komutunu kullanın:
gcloud firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID
Aşağıdakileri değiştirin:
Firebase CLI
firebase firestore:backups:delete komutunu kullanın:
firebase firestore:backups:delete \
BACKUP
Aşağıdakileri değiştirin:

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'
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: 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.
Sonuç, 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
veya yukarıda açıklanan çıkıştaki 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'
Aşağıdakileri değiştirin:
  • 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.