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. Następnie możesz użyć tych kopii zapasowych, aby 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 dane i konfiguracje indeksów w danym momencie. 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 momentu wygaśnięcia tego okresu 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 kopii zapasowych powiązanymi z bazą danych. Cloud Firestore zachowuje te metadane do momentu wygaśnięcia lub usunięcia wszystkich kopii zapasowych bazy danych.
Tworzenie i przechowywanie kopii zapasowych nie wpływa na wydajność odczytu ani zapisu w aktywnej bazie danych.
Koszty
Gdy korzystasz z kopii zapasowych, pobierane są opłaty za:
- Ilość miejsca na dane używana przez każdą kopię zapasową.
- Opłaty za operację przywracania są naliczane 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 FirestoreTe role są też dostępne, ale nie są widoczne w konsoli Google Cloud. Użyj Google Cloud CLI, aby przypisać te role:
roles/datastore.backupsAdmin
: dostęp do odczytu i zapisu kopii zapasowychroles/datastore.backupsViewer
: dostęp do kopii zapasowych w celu odczyturoles/datastore.backupSchedulesAdmin
: odczyt i zapis harmonogramów kopii zapasowychroles/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 jeden harmonogram kopii zapasowej na dzień i maksymalnie jeden 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 tworzenia kopii zapasowych 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 kopię zapasową chcesz utworzyć. Ustaw na
'(default)'
w przypadku domyślnej bazy danych. - RETENTION_PERIOD: ustaw wartość do 14 tygodni (
14w
).
wiersz poleceń Firebase
Aby utworzyć harmonogram tworzenia kopii zapasowych 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 kopię zapasową chcesz utworzyć. 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ó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 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 - RETENTION_PERIOD_SECONDS: ustaw wartość w sekundach, a następnie „s”. Maksymalna wartość to
8467200s
(14 tygodni).
google_firestore_database
.
Tworzenie tygodniowego harmonogramu tworzenia kopii zapasowych
gcloud
Aby utworzyć harmonogram kopii zapasowych tygodniowych, ustaw flagę--recurrence
na weekly
:
gcloud firestore backups schedules create \ --database='DATABASE_ID' \ --recurrence=weekly \ --retention=RETENTION_PERIOD \ --day-of-week=DAYZastąp następujące 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. Wybierz jedną z tych opcji:
SUN
w niedzielęMON
w poniedziałekTUE
we wtorekWED
w środęTHU
w czwartekFRI
w piątekSAT
sobota
wiersz poleceń Firebase
Aby utworzyć harmonogram kopii zapasowych tygodniowych, ustaw flagę--recurrence
na WEEKLY
:
firebase firestore:backups:schedules:create \ --database 'DATABASE_ID' \ --recurrence 'WEEKLY' \ --retention RETENTION_PERIOD --day-of-week DAYZastąp następujące 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. Wybierz jedną z tych opcji:
SUNDAY
w niedzielęMONDAY
w poniedziałekTUESDAY
we wtorekWEDNESDAY
w środęTHURSDAY
w czwartekFRIDAY
w piątekSATURDAY
sobota
Terraform
Aby utworzyć harmonogram kopii zapasowych na tydzień, 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 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 - RETENTION_PERIOD_SECONDS: ustaw wartość w sekundach, a następnie „s”. Maksymalna wartość to
8467200s
(14 tygodni). - DAY: dzień tygodnia, w którym wykonywana jest kopia zapasowa. Wybierz jedną z tych opcji:
SUNDAY
w niedzielęMONDAY
w poniedziałekTUESDAY
we wtorekWEDNESDAY
w środęTHURSDAY
w czwartekFRIDAY
w piątekSATURDAY
sobota
google_firestore_database
.
Wyświetlanie listy harmonogramów tworzenia kopii zapasowych
Aby wyświetlić listę wszystkich harmonogramów kopii zapasowych bazy danych, użyj jednej z tych metod:
gcloud
Użyj poleceniagcloud 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 poleceniafirebase firestore:backups:schedules:list
.
firebase firestore:backups:schedules:list \ --database 'DATABASE_ID'Zastąp DATABASE_ID identyfikatorem bazy danych. W przypadku domyślnej bazy danych używaj parametru
'(default)'
.
Opisz harmonogram tworzenia kopii zapasowych
Aby pobrać informacje o harmonogramie tworzenia kopii zapasowych, użyj jednej z tych metod:
gcloud
Użyj poleceniagcloud firestore backups schedules describe
:
gcloud firestore backups schedules describe \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_IDZamień:
- 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. Listę wszystkich harmonogramów kopii zapasowych możesz wyświetlić, aby sprawdzić identyfikator każdego z nich.
Aktualizowanie harmonogramu tworzenia kopii zapasowych
Aby zaktualizować okres przechowywania kopii zapasowej, użyj jednej z tych metod:
gcloud
Użyj poleceniagcloud firestore backups schedules update
:
gcloud firestore backups schedules update \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID \ --retention=RETENTION_PERIODZastą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. Listę wszystkich harmonogramów kopii zapasowych możesz wyświetlić, aby sprawdzić identyfikator każdego z nich.
- RETENTION_PERIOD: ustaw wartość do 14 tygodni (
14w
).
wiersz poleceń Firebase
Użyj poleceniafirebase firestore:backups:schedules:update
:
firebase firestore:backups:schedules:update \ BACKUP_SCHEDULE \ --retention RETENTION_PERIODZastąp te elementy:
- BACKUP_SCHEDULE: pełna nazwa zasobu harmonogramu tworzenia kopii zapasowych. Nazwę każdego harmonogramu tworzenia kopii zapasowych możesz wyświetlić, gdy wyświetlisz wszystkie harmonogramy tworzenia kopii zapasowych.
- RETENTION_PERIOD: ustaw wartość do 14 tygodni (
14w
).
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 kopii zapasowej, użyj jednej z tych metod:
gcloud
Użyj poleceniagcloud firestore backups schedules delete
:
gcloud firestore backups schedules delete \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_IDZastą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.
wiersz poleceń Firebase
Użyj poleceniafirebase firestore:backups:schedules:delete
:
firebase firestore:backups:schedules:delete \ BACKUP_SCHEDULEZastąp te elementy:
- BACKUP_SCHEDULE: pełna nazwa zasobu harmonogramu tworzenia kopii zapasowych. Nazwę każdego harmonogramu tworzenia kopii zapasowych możesz wyświetlić, gdy wyświetlisz wszystkie harmonogramy tworzenia kopii zapasowych.
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 poleceniagcloud 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 format.
Aby wyświetlić tylko kopie zapasowe z konkretnej 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 poleceniafirebase firestore:backups:list
:
firebase firestore:backups:listAby wyświetlić tylko kopie zapasowe z konkretnej lokalizacji, użyj parametru
--location
:
firebase firestore:backups:list \ --location=LOCATIONZastąp
LOCATION
nazwą lokalizacji Cloud Firestore.
Opisz kopię zapasową
Aby wyświetlić szczegóły kopii zapasowej, użyj jednej z tych metod:
gcloud
Użyj poleceniagcloud firestore backups describe
:
gcloud firestore backups describe \ --location=LOCATION \ --backup=BACKUP_IDZastąp te elementy:
- 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 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.
Usuń kopię zapasową
gcloud
Użyj poleceniagcloud firestore backups delete
:
gcloud firestore backups delete \ --location=LOCATION \ --backup=BACKUP_IDZastąp te elementy:
- 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 te elementy:
- BACKUP: pełna nazwa zasobu kopii zapasowej. Nazwę każdej kopii zapasowej możesz zobaczyć, gdy wyświetlisz listę 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ąć przywracanie, użyj jednej z tych metod:
gcloud
Użyj poleceniagcloud 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.
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
, który zawiera szczegółowe informacje o szacowanym postępie przywracania do tej pory, oraz komponent operationState
, który określa ogólny stan przywracania.
Aby ponownie pobrać te informacje, użyj polecenia gcloud firestore operations list
:
gcloud firestore operations list --database=DATABASE_IDlub polecenia
name
z wyjścia opisanego powyżej z poleceniem 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 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.