Tworzenie kopii zapasowej i przywracanie danych

Na tej stronie opisujemy, jak korzystać z funkcji Cloud Firestore zaplanowanych kopii zapasowych. Kopie zapasowe chronią dane przed uszkodzeniem na poziomie aplikacji lub przypadkowym usunięciem.

Kopie zapasowe umożliwiają konfigurowanie harmonogramów tworzenia kopii zapasowych w celu codziennego lub cotygodniowego tworzenia kopii zapasowych określonej bazy danych. Za pomocą tych kopii zapasowych możesz przywrócić dane do nowej bazy danych.

Informacje o kopiach zapasowych

Kopia zapasowa to spójna kopia bazy danych z określonego momentu. Kopia zapasowa zawiera wszystkie konfiguracje danych i indeksów z danego momentu. Kopia zapasowa nie zawiera zasad dotyczących czasu istnienia danych. Kopie zapasowe znajdują się w tym samym miejscu co źródłowa baza danych.

Kopie zapasowe mają konfigurowalny okres przechowywania i są przechowywane do jego końca lub do momentu ich usunięcia. Usunięcie bazy danych źródłowej nie powoduje automatycznego usunięcia powiązanych kopii zapasowych.

Cloud Firestore przechowuje metadane związane z kopiami zapasowymi i harmonogramami tworzenia kopii zapasowych związane z bazą danych. Cloud Firestore przechowuje te metadane, dopóki wszystkie kopie zapasowe bazy danych nie wygasną lub nie zostaną usunięte.

Tworzenie i przechowywanie kopii zapasowych nie wpływa na wydajność odczytu ani zapisu w aktywnej bazie danych.

Koszty

Jeśli korzystasz z kopii zapasowych, pobierane są opłaty za:

  • Ilość miejsca na dane używana przez każdą kopię zapasową.
  • W przypadku operacji przywracania opłata jest naliczana w zależności od rozmiaru kopii zapasowej.

Więcej informacji i dokładne stawki znajdziesz na stronie Ceny.

Zanim zaczniesz

Ta funkcja wymaga abonamentu Blaze.

Wymagane role

Aby uzyskać uprawnienia potrzebne do zarządzania kopiami zapasowymi i harmonogramami tworzenia kopii zapasowych, poproś administratora o przyznanie Ci co najmniej jednej z tych ról zarządzania tożsamościami i dostępem:

  • roles/datastore.owner: pełny dostęp do bazy danych Cloud Firestore
  • Poniższe role są również dostępne, ale nie są widoczne w konsoli Google Cloud. Aby przypisać te role, użyj Google Cloud CLI:

    • roles/datastore.backupsAdmin: dostęp do odczytu i zapisu kopii zapasowych
    • roles/datastore.backupsViewer: uprawnienia do odczytu kopii zapasowych
    • roles/datastore.backupSchedulesAdmin: odczyt i zapis harmonogramów kopii zapasowych
    • roles/datastore.backupSchedulesViewer: dostęp z możliwością odczytu do harmonogramów tworzenia kopii zapasowych.
    • roles/datastore.restoreAdmin: uprawnienia do inicjowania operacji przywracania

Tworzenie harmonogramów kopii zapasowych i zarządzanie nimi

Przykłady poniżej pokazują, jak skonfigurować harmonogram zapasowy. W przypadku każdej bazy danych możesz skonfigurować maksymalnie 1 harmonogram kopii zapasowej na dzień i 1 harmonogram kopii zapasowej na tydzień. Nie możesz skonfigurować kilku harmonogramów kopii zapasowych na tydzień na różne dni tygodnia.

Nie możesz skonfigurować dokładnej godziny wykonania kopii zapasowej. Kopie zapasowe są tworzone o różnych porach dnia. W przypadku harmonogramów cotygodniowych kopii zapasowych możesz skonfigurować dzień tygodnia, w którym ma być tworzona kopia zapasowa.

Tworzenie harmonogramu tworzenia kopii zapasowych

Aby utworzyć harmonogram tworzenia kopii zapasowych bazy danych, użyj polecenia gcloud firestore backups schedules create lub polecenia firebase firestore:databases:backups:schedules.

Tworzenie harmonogramu kopii zapasowych na potrzeby codziennego tworzenia kopii zapasowych

gcloud
Aby utworzyć harmonogram kopii zapasowych tworzonych codziennie, ustaw flagę --recurrence na daily:
gcloud firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=daily \
--retention=RETENTION_PERIOD

Zastąp następujące elementy:

  • DATABASE_ID: identyfikator bazy danych, której kopia zapasowa ma zostać utworzona. Ustaw na '(default)' w przypadku domyślnej bazy danych.
  • RETENTION_PERIOD: ustaw tę wartość na maks. 14 tygodni (14w).
wiersz poleceń Firebase
Aby utworzyć harmonogram kopii zapasowych tworzonych codziennie, ustaw flagę --recurrence na DAILY:
firebase firestore:backups:schedules:create \
--database 'DATABASE_ID' \
--recurrence 'DAILY' \
--retention RETENTION_PERIOD

Zastąp następujące elementy:

  • DATABASE_ID: identyfikator bazy danych, której kopia zapasowa ma zostać utworzona. Ustaw na '(default)' w przypadku domyślnej bazy danych.
  • RETENTION_PERIOD: ustaw wartość do 14 tygodni (14w).
Terraform
Aby utworzyć harmonogram tworzenia kopii zapasowych codziennie, utwórz zasób google_firestore_backup_schedule.
resource "google_firestore_backup_schedule" "daily-backup" {
  project  = PROJECT_ID
  database = DATABASE_ID

  retention = RETENTION_PERIOD_SECONDS

  daily_recurrence {}
}

Zastąp następujące elementy:

  • PROJECT_ID: identyfikator projektu.
  • DATABASE_ID: identyfikator bazy danych, której kopię zapasową chcesz utworzyć. Ustaw na '(default)' w przypadku domyślnej bazy danych.
  • Możesz też użyć odwołania do zasobu w zasobach Terraform typu google_firestore_database.
  • RETENTION_PERIOD_SECONDS: ustaw wartość w sekundach, a następnie „s”. Maksymalna wartość to 8467200s (14 tygodni).

Tworzenie tygodniowego harmonogramu tworzenia kopii zapasowych

gcloud
Aby utworzyć cotygodniowy harmonogram tworzenia kopii zapasowych, ustaw flagę --recurrence na weekly:
gcloud firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=weekly \
--retention=RETENTION_PERIOD \
--day-of-week=DAY
Zastąp te elementy:
  • DATABASE_ID: identyfikator bazy danych, której kopię zapasową chcesz utworzyć. Ustaw na '(default)' w przypadku domyślnej bazy danych.
  • RETENTION_PERIOD: ustaw wartość do 14 tygodni (14w).
  • DAY: dzień tygodnia, w którym wykonywana jest kopia zapasowa. Ustaw jedną z tych wartości:
    • SUN w niedzielę
    • MON w poniedziałek
    • TUE we wtorek
    • WED w środę
    • THU w czwartek
    • FRI na piątek
    • SAT na sobotę
wiersz poleceń Firebase
Aby utworzyć cotygodniowy harmonogram tworzenia kopii zapasowych, ustaw flagę --recurrence na WEEKLY:
firebase firestore:backups:schedules:create \
--database 'DATABASE_ID' \
--recurrence 'WEEKLY' \
--retention RETENTION_PERIOD
--day-of-week DAY
Zastąp te elementy:
  • DATABASE_ID: identyfikator bazy danych, której kopię zapasową chcesz utworzyć. Ustaw na '(default)' w przypadku domyślnej bazy danych.
  • RETENTION_PERIOD: ustaw wartość do 14 tygodni (14w).
  • DAY: dzień tygodnia, w którym wykonywana jest kopia zapasowa. Ustaw jedną z tych wartości:
    • SUNDAY w niedzielę
    • MONDAY w poniedziałek
    • TUESDAY we wtorek
    • WEDNESDAY w środę
    • THURSDAY w czwartek
    • FRIDAY w piątek
    • SATURDAY sobota
Terraform
Aby utworzyć harmonogram kopii zapasowych na tydzień, utwórz zasób google_firestore_backup_schedule.
resource "google_firestore_backup_schedule" "weekly-backup" {
  project  = PROJECT_ID
  database = DATABASE_ID

  retention = RETENTION_PERIOD_SECONDS

  weekly_recurrence {
    day = DAY
  }
}

Zastąp następujące elementy:

  • PROJECT_ID: identyfikator projektu.
  • DATABASE_ID: identyfikator bazy danych, której kopię zapasową chcesz utworzyć. Ustaw na '(default)' w przypadku domyślnej bazy danych.
  • Możesz też użyć odwołania do zasobu w zasobach Terraform typu google_firestore_database.
  • RETENTION_PERIOD_SECONDS: ustaw wartość w sekundach, a następnie „s”. Maksymalna wartość to 8467200s (14 tygodni).
  • DAY: dzień tygodnia, w którym ma zostać utworzona kopia zapasowa. Wybierz jedną z tych opcji:
    • SUNDAY w niedzielę
    • MONDAY w poniedziałek
    • TUESDAY we wtorek
    • WEDNESDAY w środę
    • THURSDAY w czwartek
    • FRIDAY w piątek
    • SATURDAY sobota

Wyświetlanie listy harmonogramów tworzenia kopii zapasowych

Aby wyświetlić listę wszystkich harmonogramów tworzenia kopii zapasowych bazy danych, użyj jednej z tych metod:

gcloud
Użyj polecenia gcloud firestore backups schedules list.
gcloud firestore backups schedules list \
--database='DATABASE_ID'
Zastąp DATABASE_ID identyfikatorem bazy danych. W przypadku domyślnej bazy danych używaj parametru '(default)'.
wiersz poleceń Firebase
Użyj polecenia firebase firestore:backups:schedules:list.
firebase firestore:backups:schedules:list \
--database 'DATABASE_ID'
Zastąp DATABASE_ID identyfikatorem bazy danych. Jako domyślnej bazy danych użyj '(default)'.

Opisz harmonogram tworzenia kopii zapasowych

Aby pobrać informacje o harmonogramie tworzenia kopii zapasowych, użyj jednej z tych metod:

gcloud
Użyj polecenia gcloud firestore backups schedules describe:
gcloud firestore backups schedules describe \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
Zastąp te elementy:
  • DATABASE_ID: identyfikator bazy danych, której kopię zapasową chcesz utworzyć. Ustaw na '(default)' w przypadku domyślnej bazy danych.
  • BACKUP_SCHEDULE_ID: identyfikator harmonogramu tworzenia kopii zapasowych. Identyfikator każdego harmonogramu kopii zapasowej możesz wyświetlić, gdy wyświetlisz wszystkie harmonogramy kopii zapasowej.

Aktualizowanie harmonogramu tworzenia kopii zapasowych

Aby zaktualizować okres przechowywania kopii zapasowej, użyj jednej z tych metod:

gcloud
Użyj polecenia gcloud firestore backups schedules update:
gcloud firestore backups schedules update \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID \
--retention=RETENTION_PERIOD
Zastąp te elementy:
  • DATABASE_ID: identyfikator bazy danych, której kopię zapasową chcesz utworzyć. Ustaw na '(default)' w przypadku domyślnej bazy danych.
  • BACKUP_SCHEDULE_ID: identyfikator harmonogramu tworzenia kopii zapasowych. Identyfikator każdego harmonogramu kopii zapasowej możesz wyświetlić, gdy wyświetlisz wszystkie harmonogramy kopii zapasowej.
  • RETENTION_PERIOD: ustaw wartość do 14 tygodni (14w).
wiersz poleceń Firebase
Użyj polecenia firebase firestore:backups:schedules:update:
firebase firestore:backups:schedules:update \
BACKUP_SCHEDULE \
--retention RETENTION_PERIOD
Zastąp te elementy:

Możesz zaktualizować okres przechowywania harmonogramu kopii zapasowej, ale nie możesz zaktualizować jego powtarzalności. Jeśli potrzebujesz harmonogramu tworzenia kopii zapasowych z inną częstotliwością, usuń stary harmonogram tworzenia kopii zapasowych, jeśli nie jest już potrzebny, i utwórz nowy harmonogram tworzenia kopii zapasowych z pożądaną częstotliwością.

Usuwanie harmonogramu tworzenia kopii zapasowych

Aby usunąć harmonogram tworzenia kopii zapasowych, użyj jednej z tych metod:

gcloud
Użyj polecenia gcloud firestore backups schedules delete:
gcloud firestore backups schedules delete \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
Zastąp te elementy:
  • DATABASE_ID: identyfikator bazy danych, której kopię zapasową chcesz utworzyć. Ustaw na '(default)' w przypadku domyślnej bazy danych.
  • BACKUP_SCHEDULE_ID: identyfikator harmonogramu tworzenia kopii zapasowych. Identyfikator każdego harmonogramu tworzenia kopii zapasowych możesz wyświetlić, gdy wyświetlisz listę wszystkich harmonogramów tworzenia kopii zapasowych.
wiersz poleceń Firebase
Użyj polecenia firebase firestore:backups:schedules:delete:
firebase firestore:backups:schedules:delete \
BACKUP_SCHEDULE
Zastąp te elementy:

Pamiętaj, że usunięcie harmonogramu tworzenia kopii zapasowych nie spowoduje usunięcia kopii zapasowych utworzonych zgodnie z tym harmonogramem. Możesz poczekać, aż kopie zapasowe wygasną po upływie okresu przechowywania, lub usunąć je ręcznie (patrz usuwanie kopii zapasowej).

Zarządzanie kopiami zapasowymi

Wyświetlenie kopii zapasowych

Aby wyświetlić listę dostępnych kopii zapasowych, użyj jednej z tych metod:

gcloud
Użyj polecenia gcloud firestore backups list:
gcloud firestore backups list \
--format="table(name, database, state)"
Flaga --format="table(name, database, state)" formatuje dane wyjściowe w bardziej czytelny sposób. Aby wyświetlić tylko kopie zapasowe z określonej lokalizacji, użyj flagi --location:
gcloud firestore backups list \
--location=LOCATION \
--format="table(name, database, state)"
Zastąp LOCATION nazwą lokalizacji Cloud Firestore.
wiersz poleceń Firebase
Użyj polecenia firebase firestore:backups:list:
firebase firestore:backups:list
Aby wyświetlić tylko kopie zapasowe z określonej lokalizacji, użyj flagi --location:
firebase firestore:backups:list \
--location=LOCATION
Zastąp LOCATION nazwą lokalizacji Cloud Firestore.

Opis kopii zapasowej

Aby wyświetlić szczegóły kopii zapasowej, użyj jednej z tych metod:

gcloud
Użyj polecenia gcloud firestore backups describe:
gcloud firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID
Zastąp te elementy:
wiersz poleceń Firebase
Użyj polecenia firebase firestore:backups:get:
firebase firestore:backups:get BACKUP
Zastąp te elementy:

Usuń kopię zapasową

Aby usunąć kopię zapasową, użyj jednej z tych metod. Ostrzeżenie: usuniętej kopii zapasowej nie można odzyskać.
gcloud
Użyj polecenia gcloud firestore backups delete:
gcloud firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID
Zastąp te elementy:
wiersz poleceń Firebase
Użyj polecenia firebase firestore:backups:delete:
firebase firestore:backups:delete \
BACKUP
Zastąp te elementy:

Przywracanie danych z kopii zapasowej bazy danych

Operacja przywracania zapisuje dane z kopii zapasowej w nowej bazie danych Cloud Firestore.

Aby rozpocząć przywracanie, użyj jednej z tych metod:

gcloud
Użyj polecenia gcloud firestore databases restore:
gcloud firestore databases restore \
--source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
--destination-database='DATABASE_ID'
Zastąp te elementy:
  • PROJECT_ID: identyfikator projektu.
  • LOCATION: lokalizacja kopii zapasowej bazy danych i nowej bazy danych utworzonej dla przywróconych danych.
  • BACKUP_ID: identyfikator kopii zapasowej. Identyfikator każdej kopii zapasowej możesz wyświetlić, gdy wyświetlisz listę wszystkich kopii zapasowych.
  • DATABASE_ID: identyfikator nowej bazy danych. Nie możesz użyć identyfikatora bazy danych, który jest już używany.
Dane wyjściowe będą zawierać komponenty metadata, name i response:
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
  ...
Pole metadata zawiera komponent progressPercentage ze szczegółowymi informacjami o szacowanym postępie przywracania do tej pory oraz operationState określającym ogólny stan przywracania. Aby ponownie odzyskać te informacje, użyj polecenia gcloud firestore operations list:
gcloud firestore operations list --database=DATABASE_ID
lub za pomocą pola name z wyjścia opisanego powyżej, z wartością gcloud firestore operations describe:
gcloud firestore operations describe OPERATION_NAME
wiersz poleceń Firebase
Użyj polecenia firebase firestore:databases:restore:
firebase firestore:databases:restore \
--backup 'BACKUP' \
--database 'DATABASE_ID'
Zastąp te elementy:
  • BACKUP: pełna nazwa zasobu kopii zapasowej. Nazwę każdej kopii zapasowej możesz wyświetlić, gdy wyświetlisz listę wszystkich kopii zapasowych.
  • DATABASE_ID: identyfikator nowej bazy danych. Nie możesz użyć identyfikatora bazy danych, który jest już używany.