Verileri yedekleme ve geri yükleme

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şim
  • Aş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şimi
    • roles/datastore.backupsViewer: Yedeklere okuma erişimi
    • roles/datastore.backupSchedulesAdmin: Yedekleme programlarına okuma ve yazma erişimi
    • roles/datastore.backupSchedulesViewer: Yedekleme programlarına okuma erişimi
    • roles/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 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: Bunu saniye cinsinden bir değere ve ardından "s"ye ayarlayın. Maksimum değer 8467200s (14 hafta) olmalıdır.

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=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 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
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 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 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
Terraform
Haftalık yedekleme programı 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ü bir Terraform kaynağı için de kaynak referansı kullanabilirsiniz.
  • 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

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_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.

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_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 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_PERIOD
Aş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_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ğıdaki kodu değiştirin:

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:list
Yalnı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_ID
Aşağıdakileri değiştirin:
Firebase CLI
firebase firestore:backups:get komutunu kullanın:
firebase firestore:backups:get BACKUP
Aşağıdaki kodu değiştirin:

Yedek silme

Bir yedeği silmek için aşağıdaki yöntemlerden birini kullanın. Uyarı: Silinmiş bir yedeği kurtaramazsınız.
gcloud
gcloud alpha firestore backups delete komutunu kullanın:
gcloud alpha 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ğıdaki kodu değiştirin:

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.
Çıkış, 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_ID
veya 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.