Резервное копирование и восстановление данных

На этой странице описано, как использовать функцию запланированного резервного копирования Cloud Firestore. Используйте резервные копии, чтобы защитить свои данные от повреждения данных на уровне приложения или от случайного удаления данных.

Резервные копии позволяют настроить расписание резервного копирования для ежедневного или еженедельного резервного копирования указанной базы данных. Затем вы можете использовать эти резервные копии для восстановления данных в новую базу данных.

О резервных копиях

Резервная копия — это согласованная копия базы данных в определенный момент времени. Резервная копия содержит все данные и конфигурации индексов на данный момент. Резервная копия не содержит времени базы данных для действующих политик . Резервная копия находится в том же месте, что и исходная база данных.

Резервные копии имеют настраиваемый срок хранения и хранятся до истечения срока хранения или до тех пор, пока вы не удалите резервную копию. Удаление исходной базы данных не приводит к автоматическому удалению связанных резервных копий.

Cloud Firestore хранит метаданные, связанные с резервными копиями, и расписания резервного копирования, связанные с базой данных. Cloud Firestore сохраняет эти метаданные до тех пор, пока не истечет срок действия или не будут удалены все резервные копии базы данных.

Создание или сохранение резервных копий не влияет на производительность чтения или записи в вашей действующей базе данных.

Расходы

При использовании резервных копий с вас взимается плата за следующее:

  • Объем хранилища, используемый каждой резервной копией.
  • За операцию восстановления взимается плата в зависимости от размера резервной копии.

Более подробную информацию и точные расценки можно найти на странице «Цены» .

Прежде чем вы начнете

Для этой функции требуется тарифный план Blaze .

Требуемые роли

Чтобы получить разрешения, необходимые для управления резервным копированием и расписаниями резервного копирования, попросите администратора предоставить вам одну или несколько из следующих ролей управления идентификацией и доступом:

  • roles/datastore.owner : полный доступ к базе данных Cloud Firestore.
  • Следующие роли также доступны, но не отображаются в консоли Google Cloud Platform. Используйте Google Cloud CLI, чтобы назначить следующие роли:

    • roles/datastore.backupsAdmin : доступ для чтения и записи к резервным копиям.
    • roles/datastore.backupsViewer : доступ для чтения к резервным копиям.
    • roles/datastore.backupSchedulesAdmin : доступ для чтения и записи к расписаниям резервного копирования.
    • roles/datastore.backupSchedulesViewer : доступ для чтения к расписаниям резервного копирования.
    • roles/datastore.restoreAdmin : разрешения на инициирование операций восстановления.

Создание расписаний резервного копирования и управление ими

В примерах ниже показано, как настроить расписание резервного копирования. Для каждой базы данных вы можете настроить до одного ежедневного расписания резервного копирования и до одного еженедельного расписания резервного копирования. Вы не можете настроить несколько расписаний еженедельного резервного копирования для разных дней недели.

Вы не можете настроить точное время резервного копирования. Резервные копии создаются в разное время каждый день. Для еженедельных расписаний резервного копирования вы можете настроить день недели для создания резервной копии.

Создайте расписание резервного копирования

Чтобы создать расписание резервного копирования для базы данных, используйте команду gcloud alpha firestore backups schedules create .

Создайте ежедневное расписание резервного копирования

Чтобы создать ежедневное расписание резервного копирования, установите для флага --recurrence значение daily :

gcloud alpha firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=daily \
--retention=RETENTION_PERIOD

Замените следующее:

  • DATABASE_ID : идентификатор базы данных для резервного копирования. Установите значение (default) для базы данных по умолчанию.
  • RETENTION_PERIOD : установите значение до 14 недель ( 14w ).

Создайте еженедельный график резервного копирования

Чтобы создать еженедельное расписание резервного копирования, установите для флага --recurrence значение weekly :

gcloud alpha 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 на субботу

Получение списка расписаний резервного копирования

Чтобы просмотреть все расписания резервного копирования для базы данных, используйте команду gcloud alpha firestore backups schedules list . Эта команда возвращает информацию обо всех расписаниях резервного копирования.

gcloud alpha firestore backups schedules list \
--database='DATABASE_ID'

Замените DATABASE_ID идентификатором базы данных. Использовать (default) для базы данных по умолчанию.

Опишите график резервного копирования

Чтобы получить информацию о расписании резервного копирования, используйте команду gcloud alpha firestore backups schedules describe :

gcloud alpha firestore backups schedules describe \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID

Замените следующее:

  • DATABASE_ID : идентификатор базы данных для резервного копирования. Установите значение (default) для базы данных по умолчанию.
  • BACKUP_SCHEDULE_ID : идентификатор расписания резервного копирования. Вы можете просмотреть идентификатор каждого расписания резервного копирования при составлении списка всех расписаний резервного копирования .

Обновить расписание резервного копирования

Чтобы обновить срок хранения расписания резервного копирования, используйте команду gcloud alpha firestore backups schedules update :

gcloud alpha 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 ).

Удаление расписания резервного копирования

Чтобы удалить расписание резервного копирования, используйте команду gcloud alpha firestore backups schedules delete :

gcloud alpha firestore backups schedules delete \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID

Замените следующее:

  • DATABASE_ID : идентификатор базы данных для резервного копирования. Установите значение (default) для базы данных по умолчанию.
  • BACKUP_SCHEDULE_ID : идентификатор расписания резервного копирования. Вы можете просмотреть идентификатор каждого расписания резервного копирования при составлении списка всех расписаний резервного копирования .

Обратите внимание, что удаление расписания резервного копирования не приведет к удалению резервных копий, уже созданных по этому расписанию. Вы можете дождаться истечения срока их хранения или вручную удалить резервную копию, см. Удаление резервной копии .

Управление резервными копиями

Получение списка резервных копий

Чтобы просмотреть список доступных резервных копий, используйте команду gcloud alpha firestore backups list :

gcloud alpha firestore backups list \
--format="table(name, database, state)"

Флаг --format="table(name, database, state)" форматирует выходные данные в более читаемый формат.

Чтобы вывести список только резервных копий из определенного хранилища, используйте флаг --location :

gcloud alpha firestore backups list \
--location=LOCATION \
--format="table(name, database, state)"

Замените LOCATION на имя местоположения Cloud Firestore.

Описать резервную копию

Чтобы просмотреть подробную информацию о резервной копии, используйте команду gcloud alpha firestore backups describe :

gcloud alpha firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID

Удалить резервную копию

Чтобы удалить резервную копию, используйте команду gcloud alpha firestore backups delete :

gcloud alpha firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID

Восстановление данных из резервной копии базы данных

Операция восстановления записывает данные из резервной копии в новую базу данных Cloud Firestore. Чтобы начать операцию восстановления, используйте команду gcloud alpha firestore databases restore :

gcloud alpha 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