На этой странице описано, как использовать функцию запланированного резервного копирования Cloud Firestore . Используйте резервные копии, чтобы защитить свои данные от повреждения данных на уровне приложения или от случайного удаления данных.
Резервные копии позволяют настроить расписание резервного копирования для ежедневного или еженедельного резервного копирования указанной базы данных. Затем вы можете использовать эти резервные копии для восстановления данных в новую базу данных.
О резервных копиях
Резервная копия — это согласованная копия базы данных в определенный момент времени. Резервная копия содержит все данные и конфигурации индексов на данный момент. Резервная копия не содержит времени базы данных для действующих политик . Резервная копия находится в том же месте, что и исходная база данных.
Резервные копии имеют настраиваемый срок хранения и хранятся до истечения срока хранения или до тех пор, пока вы не удалите резервную копию. Удаление исходной базы данных не приводит к автоматическому удалению связанных резервных копий.
Cloud Firestore хранит метаданные, связанные с резервными копиями, и расписания резервного копирования, связанные с базой данных. Cloud Firestore сохраняет эти метаданные до тех пор, пока не истечет срок действия или не будут удалены все резервные копии базы данных.
Создание или сохранение резервных копий не влияет на производительность чтения или записи в вашей действующей базе данных.
Затраты
При использовании резервных копий с вас взимается плата за следующее:
- Объем хранилища, используемый каждой резервной копией.
- За операцию восстановления взимается плата в зависимости от размера резервной копии.
Более подробную информацию и точные расценки можно найти на странице «Цены» .
Прежде чем начать
Для этой функции требуется тарифный план Blaze .Требуемые роли
Чтобы получить разрешения, необходимые для управления резервным копированием и расписаниями резервного копирования, попросите администратора предоставить вам одну или несколько из следующих ролей управления идентификацией и доступом:
-
roles/datastore.owner
: полный доступ к базе данных Cloud Firestore Следующие роли также доступны, но не отображаются в консоли Google Cloud. Используйте Google Cloud CLI чтобы назначить следующие роли:
-
roles/datastore.backupsAdmin
: доступ для чтения и записи к резервным копиям. -
roles/datastore.backupsViewer
: доступ для чтения к резервным копиям. -
roles/datastore.backupSchedulesAdmin
: доступ для чтения и записи к расписаниям резервного копирования. -
roles/datastore.backupSchedulesViewer
: доступ для чтения к расписаниям резервного копирования. -
roles/datastore.restoreAdmin
: разрешения на инициирование операций восстановления.
-
Создание расписаний резервного копирования и управление ими
В примерах ниже показано, как настроить расписание резервного копирования. Для каждой базы данных вы можете настроить до одного ежедневного расписания резервного копирования и до одного еженедельного расписания резервного копирования. Вы не можете настроить несколько расписаний еженедельного резервного копирования для разных дней недели.
Вы не можете настроить точное время резервного копирования. Резервные копии создаются в разное время каждый день. Для еженедельных расписаний резервного копирования вы можете настроить день недели для создания резервной копии.
Создайте расписание резервного копирования
Чтобы создать расписание резервного копирования для базы данных, используйте команду gcloud firestore backups schedules create
или команду firebase firestore:databases:backups:schedules
.
Создайте ежедневное расписание резервного копирования
gcloud
Чтобы создать ежедневное расписание резервного копирования, установите для флага--recurrence
значение daily
:gcloud firestore backups schedules create \ --database='DATABASE_ID' \ --recurrence=daily \ --retention=RETENTION_PERIOD
Замените следующее:
- DATABASE_ID : идентификатор базы данных для резервного копирования. Установите значение
'(default)'
для базы данных по умолчанию. - RETENTION_PERIOD : установите значение до 14 недель (
14w
).
Интерфейс командной строки Firebase
Чтобы создать ежедневное расписание резервного копирования, установите для флага--recurrence
значение DAILY
:firebase firestore:backups:schedules:create \ --database 'DATABASE_ID' \ --recurrence 'DAILY' \ --retention RETENTION_PERIOD
Замените следующее:
- DATABASE_ID : идентификатор базы данных для резервного копирования. Установите значение
'(default)'
для базы данных по умолчанию. - RETENTION_PERIOD : установите значение до 14 недель (
14w
).
Терраформировать
Чтобы создать ежедневное расписание резервного копирования, создайте ресурсgoogle_firestore_backup_schedule
.resource "google_firestore_backup_schedule" "daily-backup" { project = PROJECT_ID database = DATABASE_ID retention = RETENTION_PERIOD_SECONDS daily_recurrence {} }
Замените следующее:
- PROJECT_ID : идентификатор проекта.
- DATABASE_ID : идентификатор базы данных для резервного копирования. Установите значение
'(default)'
для базы данных по умолчанию. Вы также можете использовать ссылку на ресурс Terraform типа - RETENTION_PERIOD_SECONDS : установите значение в секундах, за которым следует «s». Максимальное значение —
8467200s
(14 недель).
google_firestore_database
.Создайте еженедельный график резервного копирования
gcloud
Чтобы создать еженедельное расписание резервного копирования, установите для флага--recurrence
значение weekly
:gcloud firestore backups schedules create \ --database='DATABASE_ID' \ --recurrence=weekly \ --retention=RETENTION_PERIOD \ --day-of-week=DAYЗамените следующее:
- DATABASE_ID : идентификатор базы данных для резервного копирования. Установите значение
'(default)'
для базы данных по умолчанию. - RETENTION_PERIOD : установите значение до 14 недель (
14w
). - DAY : день недели для резервного копирования. Установите одно из следующих значений:
-
SUN
в воскресенье -
MON
на понедельник -
TUE
на вторник -
WED
на среду -
THU
на четверг -
FRI
на пятницу -
SAT
на субботу
-
Интерфейс командной строки Firebase
Чтобы создать еженедельное расписание резервного копирования, установите для флага--recurrence
значение WEEKLY
:firebase firestore:backups:schedules:create \ --database 'DATABASE_ID' \ --recurrence 'WEEKLY' \ --retention RETENTION_PERIOD --day-of-week DAYЗамените следующее:
- DATABASE_ID : идентификатор базы данных для резервного копирования. Установите значение
'(default)'
для базы данных по умолчанию. - RETENTION_PERIOD : установите значение до 14 недель (
14w
). - DAY : день недели для резервного копирования. Установите одно из следующих значений:
-
SUNDAY
на воскресенье -
MONDAY
на понедельник -
TUESDAY
на вторник -
WEDNESDAY
на среду -
THURSDAY
на четверг -
FRIDAY
на пятницу -
SATURDAY
на субботу
-
Терраформировать
Чтобы создать еженедельное расписание резервного копирования, создайте ресурс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 } }
Замените следующее:
- PROJECT_ID : идентификатор проекта.
- DATABASE_ID : идентификатор базы данных для резервного копирования. Установите значение
'(default)'
для базы данных по умолчанию. Вы также можете использовать ссылку на ресурс Terraform типа - RETENTION_PERIOD_SECONDS : установите значение в секундах, за которым следует «s». Максимальное значение —
8467200s
(14 недель). - DAY : день недели для резервного копирования. Установите одно из следующих значений:
-
SUNDAY
на воскресенье -
MONDAY
на понедельник -
TUESDAY
на вторник -
WEDNESDAY
на среду -
THURSDAY
на четверг -
FRIDAY
на пятницу -
SATURDAY
на субботу
-
google_firestore_database
.Список расписаний резервного копирования
Чтобы просмотреть все расписания резервного копирования базы данных, используйте один из следующих методов:
gcloud
Используйте командуgcloud firestore backups schedules list
.gcloud firestore backups schedules list \ --database='DATABASE_ID'Замените DATABASE_ID идентификатором базы данных. Используйте
'(default)'
для базы данных по умолчанию.Интерфейс командной строки Firebase
Используйте командуfirebase firestore:backups:schedules:list
.firebase firestore:backups:schedules:list \ --database 'DATABASE_ID'Замените DATABASE_ID идентификатором базы данных. Используйте
'(default)'
для базы данных по умолчанию.Опишите график резервного копирования
Чтобы получить информацию о расписании резервного копирования, используйте один из следующих методов:
gcloud
Используйте командуgcloud firestore backups schedules describe
:gcloud firestore backups schedules describe \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_IDЗамените следующее:
- DATABASE_ID : идентификатор базы данных для резервного копирования. Установите значение
'(default)'
для базы данных по умолчанию. - BACKUP_SCHEDULE_ID : идентификатор расписания резервного копирования. Вы можете просмотреть идентификатор каждого расписания резервного копирования при составлении списка всех расписаний резервного копирования .
Обновить расписание резервного копирования
Чтобы обновить срок хранения расписания резервного копирования, используйте один из следующих методов:
gcloud
Используйте командуgcloud firestore backups schedules update
:gcloud firestore backups schedules update \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_ID \ --retention=RETENTION_PERIODЗамените следующее:
- DATABASE_ID : идентификатор базы данных для резервного копирования. Установите значение
'(default)'
для базы данных по умолчанию. - BACKUP_SCHEDULE_ID : идентификатор расписания резервного копирования. Вы можете просмотреть идентификатор каждого расписания резервного копирования при составлении списка всех расписаний резервного копирования .
- RETENTION_PERIOD : установите значение до 14 недель (
14w
).
Интерфейс командной строки Firebase
Используйте командуfirebase firestore:backups:schedules:update
:firebase firestore:backups:schedules:update \ BACKUP_SCHEDULE \ --retention RETENTION_PERIODЗамените следующее:
- BACKUP_SCHEDULE : полное имя ресурса расписания резервного копирования. Имя каждого расписания резервного копирования можно просмотреть при составлении списка всех расписаний резервного копирования .
- RETENTION_PERIOD : установите значение до 14 недель (
14w
).
Вы можете обновить период хранения расписания резервного копирования, но не можете обновить его периодичность. Если вам нужен график резервного копирования с другой периодичностью, удалите старое расписание резервного копирования, если оно больше не требуется, и создайте новое расписание резервного копирования с нужной периодичностью.
Удаление расписания резервного копирования
Чтобы удалить расписание резервного копирования, используйте один из следующих методов:
gcloud
Используйте командуgcloud firestore backups schedules delete
:gcloud firestore backups schedules delete \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_IDЗамените следующее:
- DATABASE_ID : идентификатор базы данных для резервного копирования. Установите значение
'(default)'
для базы данных по умолчанию. - BACKUP_SCHEDULE_ID : идентификатор расписания резервного копирования. Вы можете просмотреть идентификатор каждого расписания резервного копирования при составлении списка всех расписаний резервного копирования .
Интерфейс командной строки Firebase
Используйте командуfirebase firestore:backups:schedules:delete
:firebase firestore:backups:schedules:delete \ BACKUP_SCHEDULEЗамените следующее:
- BACKUP_SCHEDULE : полное имя ресурса расписания резервного копирования. Имя каждого расписания резервного копирования можно просмотреть при составлении списка всех расписаний резервного копирования .
Обратите внимание, что удаление расписания резервного копирования не приведет к удалению резервных копий, уже созданных по этому расписанию. Вы можете дождаться истечения срока их хранения или вручную удалить резервную копию, см. Удаление резервной копии .
Управление резервными копиями
Получение списка резервных копий
Чтобы просмотреть доступные резервные копии, используйте один из следующих методов:
gcloud
Используйте командуgcloud firestore backups list
:gcloud firestore backups list \ --format="table(name, database, state)"Флаг
--format="table(name, database, state)"
форматирует выходные данные в более читаемый формат. Чтобы вывести список только резервных копий из определенного хранилища, используйте флаг --location
:gcloud firestore backups list \ --location=LOCATION \ --format="table(name, database, state)"Замените
LOCATION
на имя местоположения Cloud Firestore .Интерфейс командной строки Firebase
Используйте командуfirebase firestore:backups:list
:firebase firestore:backups:listЧтобы вывести список только резервных копий из определенного хранилища, используйте флаг
--location
:firebase firestore:backups:list \ --location=LOCATIONЗамените
LOCATION
на имя местоположения Cloud Firestore .Описать резервную копию
Чтобы просмотреть сведения о резервной копии, воспользуйтесь одним из следующих методов:
gcloud
Используйте командуgcloud firestore backups describe
:gcloud firestore backups describe \ --location=LOCATION \ --backup=BACKUP_IDЗамените следующее:
- LOCATION : Местоположение базы данных.
- BACKUP_ID : идентификатор резервной копии. Вы можете просмотреть идентификатор каждой резервной копии при составлении списка всех резервных копий .
Интерфейс командной строки Firebase
Используйте командуfirebase firestore:backups:get
:firebase firestore:backups:get BACKUPЗамените следующее:
- BACKUP : полное имя ресурса резервной копии. Вы можете просмотреть имя каждой резервной копии при составлении списка всех резервных копий .
Удалить резервную копию
gcloud
Используйте командуgcloud firestore backups delete
:gcloud firestore backups delete \ --location=LOCATION \ --backup=BACKUP_IDЗамените следующее:
- LOCATION : Местоположение базы данных.
- BACKUP_ID : идентификатор резервной копии. Вы можете просмотреть идентификатор каждой резервной копии при составлении списка всех резервных копий .
Интерфейс командной строки Firebase
Используйте командуfirebase firestore:backups:delete
:firebase firestore:backups:delete \ BACKUPЗамените следующее:
- BACKUP : полное имя ресурса резервной копии. Вы можете просмотреть имя каждой резервной копии при составлении списка всех резервных копий .
Восстановление данных из резервной копии базы данных
Операция восстановления записывает данные из резервной копии в новую базу данных Cloud Firestore .
Чтобы начать операцию восстановления, воспользуйтесь одним из следующих методов:
gcloud
Используйте командуgcloud firestore databases restore
:gcloud firestore databases restore \ --source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \ --destination-database='DATABASE_ID'Замените следующее:
- PROJECT_ID : идентификатор вашего проекта.
- LOCATION : расположение резервной копии базы данных и расположение новой базы данных, созданной для восстановленных данных.
- BACKUP_ID : идентификатор резервной копии. Вы можете просмотреть идентификатор каждой резервной копии при составлении списка всех резервных копий .
- DATABASE_ID : идентификатор базы данных для новой базы данных. Вы не можете использовать идентификатор базы данных, который уже используется.
metadata
, name
и компоненты 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 ...Поле
metadata
включает компонент progressPercentage
, подробно описывающий предполагаемый ход восстановления на данный момент, и operationState
определяющий общее состояние восстановления. Чтобы снова получить эту информацию, используйте gcloud firestore operations list
:gcloud firestore operations list --database=DATABASE_IDили, используя поле
name
из выходных данных, описанных выше, с gcloud firestore operations describe
:gcloud firestore operations describe OPERATION_NAME
Интерфейс командной строки Firebase
Используйте командуfirebase firestore:databases:restore
:firebase firestore:databases:restore \ --backup 'BACKUP' \ --database 'DATABASE_ID'Замените следующее:
- BACKUP : полное имя ресурса резервной копии. Вы можете просмотреть имя каждой резервной копии при составлении списка всех резервных копий .
- DATABASE_ID : идентификатор базы данных для новой базы данных. Вы не можете использовать идентификатор базы данных, который уже используется.