Tworzenie kopii zapasowej i przywracanie danych

Na tej stronie dowiesz się, jak korzystać z funkcji zaplanowanych kopii zapasowych w Cloud Firestore. Dzięki kopiom zapasowym możesz chronić dane przed uszkodzeniem danych na poziomie aplikacji lub ich przypadkowym usunięciem.

Kopie zapasowe umożliwiają skonfigurowanie harmonogramów tworzenia kopii zapasowych, aby codziennie lub co tydzień tworzyć kopie zapasowe 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 życia danych bazy danych. Kopia zapasowa znajduje się w tej samej lokalizacji co źródłowa baza danych.

Kopie zapasowe mają konfigurowalny okres przechowywania i są przechowywane do zakończenia okresu przechowywania lub do momentu usunięcia kopii zapasowej. Usunięcie źródłowej bazy danych 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 ma wpływu na wydajność odczytów ani zapisów w aktywnej bazie danych.

Koszty

Korzystanie z kopii zapasowych jest objęte opłatą za:

  • Ilość miejsca wykorzystywanego przez każdą kopię zapasową.
  • Za operację przywracania są naliczane opłaty 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 przypisanie Ci co najmniej 1 z tych ról: Identity and Access Management:

  • roles/datastore.owner: pełny dostęp do bazy danych Cloud Firestore
  • Poniższe role są również dostępne, ale niewidoczne w konsoli Google Cloud Platform. Użyj interfejsu wiersza poleceń Google Cloud, aby przypisać te role:

    • roles/datastore.backupsAdmin: uprawnienia do zapisu i odczytu kopii zapasowych
    • roles/datastore.backupsViewer: uprawnienia do odczytu kopii zapasowych
    • roles/datastore.backupSchedulesAdmin: uprawnienia do odczytu i zapisu w harmonogramach tworzenia 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 tworzenia kopii zapasowych i zarządzanie nimi

Przykłady poniżej pokazują, jak skonfigurować harmonogram tworzenia kopii zapasowych. Dla każdej bazy danych możesz skonfigurować maksymalnie 1 dzienny harmonogram tworzenia kopii zapasowych i maksymalnie 1 tygodniowy harmonogram tworzenia kopii zapasowych. Nie można skonfigurować wielu tygodniowych harmonogramów tworzenia kopii zapasowych dla różnych dni tygodnia.

Nie możesz ustawić dokładnej godziny utworzenia kopii zapasowej. Każdego dnia kopie zapasowe są tworzone o innej porze. W przypadku cotygodniowych harmonogramów tworzenia kopii zapasowych możesz skonfigurować dzień tygodnia wykonywania kopii zapasowej.

Utwórz harmonogram tworzenia kopii zapasowych

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

Utwórz harmonogram codziennego tworzenia kopii zapasowych

gcloud
Aby utworzyć harmonogram codziennego tworzenia kopii zapasowych, ustaw flagę --recurrence na daily:
gcloud alpha 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 wartość '(default)' w przypadku domyślnej bazy danych.
  • RETENTION_PERIOD: ustaw tę wartość na maks. 14 tygodni (14w).
wiersz poleceń Firebase
Aby utworzyć harmonogram codziennego tworzenia kopii zapasowych, 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 wartość '(default)' w przypadku domyślnej bazy danych.
  • RETENTION_PERIOD: ustaw tę wartość na maks. 14 tygodni (14w).
Terraform
Aby utworzyć harmonogram codziennego tworzenia kopii zapasowych, 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 kopia zapasowa ma zostać utworzona. Ustaw wartość '(default)' w przypadku domyślnej bazy danych.
  • Możesz też użyć odwołania do zasobu do zasobu Terraform typu google_firestore_database.
  • RETENTION_PERIOD_SECONDS: ustaw wartość w sekundach, po której następuje litera „s”. Maksymalna wartość to 8467200s (14 tygodni).

Utwórz cotygodniowy harmonogram tworzenia kopii zapasowych

gcloud
Aby utworzyć cotygodniowy harmonogram tworzenia kopii zapasowych, ustaw flagę --recurrence na weekly:
gcloud alpha 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 kopia zapasowa ma zostać utworzona. Ustaw wartość '(default)' w przypadku domyślnej bazy danych.
  • RETENTION_PERIOD: ustaw tę wartość na maks. 14 tygodni (14w).
  • DAY: dzień tygodnia, w którym ma zostać utworzona kopia zapasowa. Ustaw jedną z tych wartości:
    • SUN na niedzielę
    • MON na poniedziałek
    • TUE na wtorek
    • WED na środę
    • THU na 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 kopia zapasowa ma zostać utworzona. Ustaw wartość '(default)' w przypadku domyślnej bazy danych.
  • RETENTION_PERIOD: ustaw tę wartość na maks. 14 tygodni (14w).
  • DAY: dzień tygodnia, w którym ma zostać utworzona kopia zapasowa. Ustaw jedną z tych wartości:
    • SUNDAY na niedzielę
    • MONDAY na poniedziałek
    • TUESDAY na wtorek
    • WEDNESDAY na środę
    • THURSDAY na czwartek
    • FRIDAY na piątek
    • SATURDAY na sobotę
Terraform
Aby utworzyć cotygodniowy harmonogram tworzenia kopii zapasowych, 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 kopia zapasowa ma zostać utworzona. Ustaw wartość '(default)' w przypadku domyślnej bazy danych.
  • Możesz też użyć odwołania do zasobu do zasobu Terraform typu google_firestore_database.
  • RETENTION_PERIOD_SECONDS: ustaw wartość w sekundach, po której następuje litera „s”. Maksymalna wartość to 8467200s (14 tygodni).
  • DAY: dzień tygodnia, w którym ma zostać utworzona kopia zapasowa. Ustaw jedną z tych wartości:
    • SUNDAY na niedzielę
    • MONDAY na poniedziałek
    • TUESDAY na wtorek
    • WEDNESDAY na środę
    • THURSDAY na czwartek
    • FRIDAY na piątek
    • SATURDAY na sobotę

Wyświetl listę 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 alpha firestore backups schedules list.
gcloud alpha firestore backups schedules list \
--database='DATABASE_ID'
Zastąp DATABASE_ID identyfikatorem bazy danych. Jako domyślnej bazy danych użyj '(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 alpha firestore backups schedules describe:
gcloud alpha firestore backups schedules describe \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
Zastąp następujące dane:
  • DATABASE_ID: identyfikator bazy danych, której kopia zapasowa ma zostać utworzona. Ustaw wartość '(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.

Aktualizowanie harmonogramu tworzenia kopii zapasowych

Aby zaktualizować okres przechowywania harmonogramu tworzenia kopii zapasowych, użyj jednej z tych metod:

gcloud
Użyj polecenia gcloud alpha firestore backups schedules update:
gcloud alpha firestore backups schedules update \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID \
--retention=RETENTION_PERIOD
Zastąp następujące dane:
  • DATABASE_ID: identyfikator bazy danych, której kopia zapasowa ma zostać utworzona. Ustaw wartość '(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.
  • RETENTION_PERIOD: ustaw tę wartość na maks. 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 następujące dane:

Możesz zaktualizować okres przechowywania harmonogramu tworzenia kopii zapasowych, ale nie możesz zaktualizować jego powtarzania. Jeśli potrzebujesz harmonogramu tworzenia kopii zapasowych z inną powtarzaniem, usuń stary harmonogram tworzenia kopii zapasowych, jeśli nie jest już potrzebny, i utwórz nowy harmonogram tworzenia kopii zapasowych z odpowiednią 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 alpha firestore backups schedules delete:
gcloud alpha firestore backups schedules delete \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
Zastąp następujące dane:
  • DATABASE_ID: identyfikator bazy danych, której kopia zapasowa ma zostać utworzona. Ustaw wartość '(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 następujące dane:

Pamiętaj, że usunięcie harmonogramu tworzenia kopii zapasowych nie spowoduje usunięcia kopii zapasowych, które zostały już utworzone przez ten harmonogram. Możesz zaczekać, aż wygaśnie po zakończeniu okresu przechowywania, lub ręcznie usunąć kopię zapasową, postępując zgodnie z instrukcjami opisanymi w artykule na temat usuwania 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 alpha firestore backups list:
gcloud alpha firestore backups list \
--format="table(name, database, state)"
Flaga --format="table(name, database, state)" formatuje dane wyjściowe w bardziej czytelnym formacie. Aby wyświetlić tylko kopie zapasowe z określonej lokalizacji, użyj flagi --location:
gcloud alpha firestore backups list \
--location=LOCATION \
--format="table(name, database, state)"
Zastąp LOCATION nazwą lokalizacji Cloud Firestore.
wiersz poleceń Firebase
Przy użyciu 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.

Opisz kopię zapasową

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

gcloud
Użyj polecenia gcloud alpha firestore backups describe:
gcloud alpha firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID
Zastąp następujące dane:
wiersz poleceń Firebase
Użyj polecenia firebase firestore:backups:get:
firebase firestore:backups:get BACKUP
Zastąp następujące dane:

Usuń kopię zapasową

Aby usunąć kopię zapasową, użyj jednej z poniższych metod. Ostrzeżenie: nie można przywrócić usuniętej kopii zapasowej.
gcloud
Użyj polecenia gcloud alpha firestore backups delete:
gcloud alpha firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID
Zastąp następujące dane:
wiersz poleceń Firebase
Użyj polecenia firebase firestore:backups:delete:
firebase firestore:backups:delete \
BACKUP
Zastąp następujące dane:

Przywracanie danych z kopii zapasowej bazy danych

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

Aby rozpocząć operację przywracania, użyj jednej z tych metod:

gcloud
Użyj polecenia gcloud alpha firestore databases restore:
gcloud alpha firestore databases restore \
--source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
--destination-database='DATABASE_ID'
Zastąp następujące dane:
  • PROJECT_ID: identyfikator projektu.
  • LOCATION: lokalizacja kopii zapasowej bazy danych i lokalizacja nowej bazy danych utworzonej na potrzeby przywróconych danych.
  • BACKUP_ID: identyfikator kopii zapasowej. Identyfikator każdej kopii zapasowej możesz sprawdzić, 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 pobrać te informacje, użyj pola gcloud firestore operations list:
gcloud firestore operations list --database=DATABASE_ID
lub użyj pola name z opisanych powyżej danych wyjściowych – zastosuj 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 następujące dane:
  • BACKUP: pełna nazwa zasobu kopii zapasowej. Nazwę każdej kopii zapasowej możesz sprawdzić, 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.