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ı günlük veya haftalık olarak yedeklemenize 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 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 ücret ödersiniz:

  • 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ş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 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 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ündeki bir Terraform kaynağına kaynak referansı da 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 (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
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 (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
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: 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

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'
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

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
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.
  • 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
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 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
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.
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 yedeklemeleri listelemek için --location işaretini kullanın:
gcloud firestore backups list \
--location=LOCATION \
--format="table(name, database, state)"
LOCATION yerine bir Cloud Firestorekonumunun adını 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 konumunun adını girin.

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
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ı: Silinen yedeklemeleri 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, 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'
Aşağıdakileri değiştirin:
  • 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.
Çıkışta 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 bileşeni bulunur. Bu bilgileri tekrar almak için gcloud firestore operations list:
gcloud firestore operations list --database=DATABASE_ID
veya yukarıda açıklanan çıktıdaki name alanını gcloud firestore operations describe ile birlikte kullanın:
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.