Verileri yedekleme ve geri yükleme

Bu sayfada, Cloud Firestore planlanmış yedeklemeler özelliğinin nasıl kullanılacağı açıklanmaktadır. Verilerinizi uygulama düzeyinde bozulmaya veya yanlışlıkla silinmeye karşı korumak için yedeklemeleri kullanın.

Yedekler, belirtilen veritabanının günlük veya haftalık yedeklerini almak için yedekleme programları yapılandırmanıza olanak tanır. Bu yedekleri daha sonra verileri yeni bir veritabanına geri yüklemek için kullanabilirsiniz.

Yedeklemeler hakkında

Yedek, veritabanının belirli bir zamandaki tutarlı kopyasıdır. Yedekleme, o andaki tüm verileri ve dizin yapılandırmalarını içerir. Yedekleme, veritabanı geçerlilik politikalarını içermez. Yedekler, kaynak veritabanı ile aynı konumda bulunur.

Yedeklemelerin yapılandırılabilir bir saklama süresi vardır ve saklama süresi sona erene veya siz yedeklemeyi silene kadar saklanır. Kaynak veritabanının silinmesi, ilgili yedeklemelerin otomatik olarak silinmesine neden olmaz.

Cloud Firestore, yedeklemeler ve bir veritabanıyla ilgili yedekleme planlarıyla ilgili meta verileri depolar. Cloud Firestore, bu meta verileri veritabanının tüm yedeklemelerinin süresi dolana veya yedeklemeler silinene kadar saklar.

Yedek oluşturma veya yedekleri saklama, canlı veritabanınızdaki okuma veya yazma işlemlerinin performansını etkilemez.

Maliyetler

Yedekleri kullanırken aşağıdakiler için ücret ödemeniz gerekir:

  • Her yedeklemenin kullandığı depolama alanı miktarı.
  • Geri yükleme işleminde, yedeğin boyutuna göre ücretlendirilirsiniz.

Daha fazla ayrıntı ve kesin ü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 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
  • roles/datastore.backupsAdmin: Yedeklere okuma ve yazma erişimi
  • roles/datastore.backupsViewer: Yedeklere 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, yedekleme programının nasıl ayarlanacağı gösterilmektedir. Her veritabanı için günde en fazla bir yedekleme programı ve haftada en fazla bir 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 olarak hangi saatte yapılacağını yapılandıramazsınız. Yedeklemeler her gün farklı zamanlarda alınır. Haftalık yedekleme programları için yedeklemenin yapılacağı haftanın gününü yapılandırabilirsiniz.

Yedekleme programı oluşturma

Yedekleme planı oluşturmak için aşağıdaki araçlardan birini kullanın.

Günlük yedekleme programı oluşturma

Google Cloud konsolu
  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinde veritabanının satırını bulun. Planlanmış yedeklemeler sütununda, yedekleme planı olup olmadığına bağlı olarak Yedeklemeleri görüntüle veya Ayarları düzenle'yi tıklayın.
  3. Olağanüstü durum kurtarma ayarlarını düzenlemek için Düzenle'yi tıklayın.
  4. Günlük onay kutusunu işaretleyin, saklama süresini ayarlayın ve Kaydet'i tıklayın.
gcloud
Veritabanı için yedekleme planı oluşturmak üzere gcloud firestore backups schedules create komutunu kullanın. 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: Bunu en fazla 14 haftalık (14w) bir değere ayarlayın.
Firebase CLI
Veritabanı için yedekleme planı oluşturmak üzere firebase firestore:databases:backups:schedules veya firebase firestore:databases:backups:schedules komutunu kullanın. 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: Bunu en fazla 14 haftalık (14w) bir değere ayarlayın.
Terraform
Günlük yedekleme planı oluşturmak için 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.
  • Ayrıca, google_firestore_database türünde bir Terraform kaynağına kaynak referansı da kullanabilirsiniz.
  • RETENTION_PERIOD_SECONDS: Bunu saniye cinsinden bir değere ve ardından "s" harfine ayarlayın. Maksimum değer 8467200s (14 hafta) olur.

Haftalık yedekleme programı oluşturma

Google Cloud konsolu
  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinde veritabanının satırını bulun. Planlanmış yedeklemeler sütununda, yedekleme planı olup olmadığına bağlı olarak Yedeklemeleri görüntüle veya Ayarları düzenle'yi tıklayın.
  3. Olağanüstü durum kurtarma ayarlarını düzenlemek için Düzenle'yi tıklayın.
  4. Haftalık onay kutusunu işaretleyin, yedekleme gününü seçin, saklama süresini ayarlayın ve Kaydet'i tıklayın.
gcloud
Haftalık 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: Bunu en fazla 14 haftalık (14w) bir değere ayarlayın.
  • DAY: Yedeklemenin yapılacağı haftanın günü. Aşağıdaki değerlerden 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 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: Bunu en fazla 14 haftalık (14w) bir değere ayarlayın.
  • DAY: Yedeklemenin yapılacağı haftanın günü. Aşağıdaki değerlerden 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 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.
  • Ayrıca, google_firestore_database türünde bir Terraform kaynağına kaynak referansı da kullanabilirsiniz.
  • RETENTION_PERIOD_SECONDS: Bunu saniye cinsinden bir değere ve ardından "s" harfine ayarlayın. Maksimum değer 8467200s (14 hafta) olur.
  • DAY: Yedeklemenin yapılacağı haftanın günü. Aşağıdaki değerlerden 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:

Google Cloud konsolu
  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinde veritabanının satırını bulun. Planlanmış yedeklemeler sütununda, yedekleme planı olup olmadığına bağlı olarak Yedeklemeleri görüntüle veya Ayarları düzenle'yi tıklayın.
  3. Olağanüstü durum kurtarma sayfası açılır. Bu sayfada yedekleme planları açıklanmakta ve kullanılabilir yedekler listelenmektedir.
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)' 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)' kullanın.

Yedekleme programını açıklayın

Yedekleme planı hakkında bilgi almak için aşağıdaki yöntemlerden birini kullanın:

Google Cloud konsolu
  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinde veritabanının satırını bulun. Planlanmış yedeklemeler sütununda, yedekleme planı olup olmadığına bağlı olarak Yedeklemeleri görüntüle veya Ayarları düzenle'yi tıklayın.
  3. Olağanüstü durum kurtarma sayfası açılır. Bu sayfada yedekleme planları açıklanmakta ve kullanılabilir yedekler listelenmektedir.
gcloud
Şu komutu kullanın: gcloud firestore backups schedules describe
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 planının kimliği. Tüm yedekleme programlarını listelediğinizde her bir yedekleme programının kimliğini görüntüleyebilirsiniz.

Yedekleme zamanlamasını güncelleme

Yedekleme planının saklama süresini güncellemek için aşağıdaki yöntemlerden birini kullanın:

Google Cloud konsolu
  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinde veritabanının satırını bulun. Planlanmış yedeklemeler sütununda Yedeklemeleri görüntüle veya Ayarları düzenle'yi tıklayın.
  3. Olağanüstü durum kurtarma ayarlarını düzenlemek için Düzenle'yi tıklayın.
  4. Yedekleme planı ayarlarını düzenleyin ve Kaydet'i tıklayı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 planının kimliği. Tüm yedekleme programlarını listelediğinizde her bir yedekleme programının kimliğini görüntüleyebilirsiniz.
  • RETENTION_PERIOD: Bunu en fazla 14 haftalık (14w) 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:

Yedekleme programının saklama süresini güncelleyebilirsiniz ancak yinelenme sıklığını güncelleyemezsiniz. Farklı bir sıklıkta yedekleme planına ihtiyacınız varsa artık gerekli olmayan eski yedekleme planını silin ve istediğiniz sıklıkta yeni bir yedekleme planı oluşturun.

Yedekleme planını silme

Bir yedekleme planını silmek için aşağıdaki yöntemlerden birini kullanın:

Google Cloud konsolu
  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinde veritabanının satırını bulun. Planlanmış yedeklemeler sütununda, yedekleme planı olup olmadığına bağlı olarak Yedeklemeleri görüntüle veya Ayarları düzenle'yi tıklayın.
  3. Olağanüstü durum kurtarma ayarlarını düzenlemek için Düzenle'yi tıklayın.
  4. Yedekleme planı ayarlarını düzenleyin ve Kaydet'i tıklayı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 bir yedekleme programı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:

Yedekleme planının silinmesi, bu planla daha önce oluşturulan yedekleri silmez. Saklama süreleri dolduktan sonra yedeklemelerin süresinin dolmasını bekleyebilir veya yedeklemeleri manuel olarak silebilirsiniz. Yedeklemeleri manuel olarak silmek için Yedeklemeyi silme başlıklı makaleyi inceleyin.

Yedekleri yönet

Yedekleri listeleme

Kullanılabilir yedekleri listelemek için aşağıdaki yöntemlerden birini kullanın:

Google Cloud konsolu
  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinde veritabanının satırını bulun. Planlanmış yedeklemeler sütununda, yedekleme planı olup olmadığına bağlı olarak Yedeklemeleri görüntüle veya Ayarları düzenle'yi tıklayın.
  3. Olağanüstü durum kurtarma ayarlarını düzenlemek için Düzenle'yi tıklayın.
  4. Yedekleme planı ayarlarını düzenleyin ve Kaydet'i tıklayı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, çıktıyı daha okunabilir bir biçimde düzenler. 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 konumun adını yazın.
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 yerine bir Cloud Firestore konumun adını yazın.

Yedeği açıklama

Bir yedekleme hakkındaki ayrıntıları görüntülemek için aşağıdaki yöntemlerden birini kullanın:

Google Cloud konsolu
  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinde veritabanının satırını bulun. Planlanmış yedeklemeler sütununda, yedekleme planı olup olmadığına bağlı olarak Yedeklemeleri görüntüle veya Ayarları düzenle'yi tıklayın.
  3. Olağanüstü durum kurtarma sayfası açılır. Bu sayfada yedekleme planları açıklanmakta ve kullanılabilir yedekler listelenmektedir.
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 yedeği silmek için aşağıdaki yöntemlerden birini kullanın.

Google Cloud konsolu
  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinde veritabanının satırını bulun. Planlanmış yedeklemeler sütununda, yedekleme planı olup olmadığına bağlı olarak Yedeklemeleri görüntüle veya Ayarları düzenle'yi tıklayın. Olağanüstü durum kurtarma sayfası açılır. Bu sayfada yedekleme planları açıklanmakta ve kullanılabilir yedekler listelenmektedir.
  3. Yedekler tablosunda bir yedeğin satırını bulun ve İşlemler sütununda Daha fazla göster'i() tıklayın. Sil'i tıklayın.
  4. Metin alanını kullanarak işlemi onaylayın ve Sil'i tıklayın.
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:

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şlemine başlamak için aşağıdaki yöntemlerden birini kullanın:

Google Cloud konsolu
  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinde veritabanının satırını bulun. Planlanmış yedeklemeler sütununda, yedekleme planı olup olmadığına bağlı olarak Yedeklemeleri görüntüle veya Ayarları düzenle'yi tıklayın. Olağanüstü durum kurtarma sayfası açılır. Bu sayfada yedekleme planları açıklanmakta ve kullanılabilir yedekler listelenmektedir.
  3. Yedekler tablosunda bir yedeğin satırını bulun ve İşlemler sütununda Daha fazla göster'i() tıklayın. Cloud Shell ile geri yükle'yi tıklayın.
  4. Seçilen yedeklemeden geri yükleme yapmak için gcloud CLI komutunun bulunduğu Cloud Shell paneli açılır. ID_OF_NEW_DATABASE yerine veritabanı için bir kimlik girin ve komutu çalıştırın.

    Komut çalıştırıldığında, işlem hakkında daha fazla bilgi içeren bir yanıt döndürülür. Veritabanı kısa süre içinde veritabanları listenizde görünür. Geri yükleme işleminin tamamlanması biraz zaman alacaktır ve veritabanına erişilebilmesi için bu işlemin tamamlanması gerekir.

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 \
--tags=[KEY=VALUE]'
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: Yedeğin kimliği. Tüm yedeklemeleri listelediğinizde her bir yedeklemenin kimliğini görüntüleyebilirsiniz.
  • DATABASE_ID: Yeni veritabanının veritabanı kimliği. Halihazırda kullanılan bir veritabanı kimliğini kullanamazsınız.
  • [KEY=VALUE]: Bağlanacak isteğe bağlı bir etiket KEY=VALUE çiftleri listesi. Örneğin:
    • --tags=123/environment=production,123/costCenter=marketing
    • --tags=tagKeys/333=tagValues/444
Çı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ükleme işleminin şu ana kadarki tahmini ilerleme durumunu ayrıntılı olarak açıklayan 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
Alternatif olarak, yukarıda açıklanan çıktıda 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: Yedeğin tam kaynak adı. Tüm yedeklemeleri listelediğinizde her bir yedeklemenin adını görebilirsiniz.
  • DATABASE_ID: Yeni veritabanının veritabanı kimliği. Halihazırda kullanılan bir veritabanı kimliğini kullanamazsınız.