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 FirestorePoniż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 zapasowychroles/datastore.backupsViewer
: uprawnienia do odczytu kopii zapasowychroles/datastore.backupSchedulesAdmin
: uprawnienia do odczytu i zapisu w harmonogramach tworzenia kopii zapasowychroles/datastore.backupSchedulesViewer
: dostęp z możliwością odczytu do harmonogramów tworzenia kopii zapasowychroles/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óbgoogle_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 - RETENTION_PERIOD_SECONDS: ustaw wartość w sekundach, po której następuje litera „s”. Maksymalna wartość to
8467200s
(14 tygodni).
google_firestore_database
.
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=DAYZastą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łekTUE
na wtorekWED
na środęTHU
na czwartekFRI
na piątekSAT
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 DAYZastą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łekTUESDAY
na wtorekWEDNESDAY
na środęTHURSDAY
na czwartekFRIDAY
na piątekSATURDAY
na sobotę
Terraform
Aby utworzyć cotygodniowy harmonogram tworzenia kopii zapasowych, utwórz zasóbgoogle_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 - 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łekTUESDAY
na wtorekWEDNESDAY
na środęTHURSDAY
na czwartekFRIDAY
na piątekSATURDAY
na sobotę
google_firestore_database
.
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 poleceniagcloud 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 poleceniafirebase 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 poleceniagcloud alpha firestore backups schedules describe
:
gcloud alpha firestore backups schedules describe \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_IDZastą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 poleceniagcloud alpha firestore backups schedules update
:
gcloud alpha firestore backups schedules update \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID \ --retention=RETENTION_PERIODZastą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 poleceniafirebase firestore:backups:schedules:update
:
firebase firestore:backups:schedules:update \ BACKUP_SCHEDULE \ --retention RETENTION_PERIODZastąp następujące dane:
- BACKUP_SCHEDULE: pełna nazwa zasobu harmonogramu tworzenia kopii zapasowych. Nazwę 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
).
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 poleceniagcloud alpha firestore backups schedules delete
:
gcloud alpha firestore backups schedules delete \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_IDZastą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 poleceniafirebase firestore:backups:schedules:delete
:
firebase firestore:backups:schedules:delete \ BACKUP_SCHEDULEZastąp następujące dane:
- BACKUP_SCHEDULE: pełna nazwa zasobu harmonogramu tworzenia kopii zapasowych. Nazwę każdego harmonogramu tworzenia kopii zapasowych możesz wyświetlić, gdy wyświetlisz listę wszystkich harmonogramów tworzenia kopii zapasowych.
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 poleceniagcloud 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 poleceniafirebase firestore:backups:list
:
firebase firestore:backups:listAby wyświetlić tylko kopie zapasowe z określonej lokalizacji, użyj flagi
--location
:
firebase firestore:backups:list \ --location=LOCATIONZastą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 poleceniagcloud alpha firestore backups describe
:
gcloud alpha firestore backups describe \ --location=LOCATION \ --backup=BACKUP_IDZastąp następujące dane:
- LOCATION: lokalizacja bazy danych.
- BACKUP_ID: identyfikator kopii zapasowej. Identyfikator każdej kopii zapasowej możesz wyświetlić, gdy wyświetlisz listę wszystkich kopii zapasowych.
wiersz poleceń Firebase
Użyj poleceniafirebase firestore:backups:get
:
firebase firestore:backups:get BACKUPZastą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.
Usuń kopię zapasową
gcloud
Użyj poleceniagcloud alpha firestore backups delete
:
gcloud alpha firestore backups delete \ --location=LOCATION \ --backup=BACKUP_IDZastąp następujące dane:
- LOCATION: lokalizacja bazy danych.
- BACKUP_ID: identyfikator kopii zapasowej. Identyfikator każdej kopii zapasowej możesz wyświetlić, gdy wyświetlisz listę wszystkich kopii zapasowych.
wiersz poleceń Firebase
Użyj poleceniafirebase firestore:backups:delete
:
firebase firestore:backups:delete \ BACKUPZastąp następujące dane:
- BACKUP: pełna nazwa zasobu kopii zapasowej. Nazwę każdej kopii zapasowej możesz zobaczyć po wyświetleniu listy wszystkich kopii zapasowych.
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 poleceniagcloud 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.
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_IDlub 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 poleceniafirebase 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.