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

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

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

О резервном копировании

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

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

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

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

Расходы

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

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

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

Прежде чем начать

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

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

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

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

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

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

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

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

Для создания расписания резервного копирования используйте один из следующих инструментов.

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

Консоль Google Cloud
  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. В списке баз данных найдите строку для базы данных. В столбце Запланированные резервные копии нажмите либо Просмотреть резервные копии , либо Изменить настройки , в зависимости от того, существует ли расписание резервного копирования.
  3. Нажмите «Изменить» , чтобы изменить параметры аварийного восстановления.
  4. Установите флажок «Ежедневно» , задайте период хранения и нажмите «Сохранить» .
gcloud
Чтобы создать расписание резервного копирования для базы данных, используйте команду gcloud firestore backups schedules create . Чтобы создать ежедневное расписание резервного копирования, установите флаг --recurrence на daily :
gcloud firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=daily \
--retention=RETENTION_PERIOD

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

  • DATABASE_ID : Идентификатор базы данных для резервного копирования. Установите значение '(default)' для базы данных по умолчанию.
  • RETENTION_PERIOD : установите значение до 14 недель ( 14w ).
Firebase CLI
Чтобы создать расписание резервного копирования для базы данных, используйте команду firebase firestore:databases:backups:schedules . Чтобы создать ежедневное расписание резервного копирования, установите флаг --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 типа google_firestore_database .
  • RETENTION_PERIOD_SECONDS : Установите это значение в секундах, за которым следует «s». Максимальное значение — 8467200s с (14 недель).

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

Консоль Google Cloud
  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. В списке баз данных найдите строку для базы данных. В столбце Запланированные резервные копии нажмите либо Просмотреть резервные копии , либо Изменить настройки , в зависимости от того, существует ли расписание резервного копирования.
  3. Нажмите «Изменить» , чтобы изменить параметры аварийного восстановления.
  4. Установите флажок «Еженедельно» , выберите день резервного копирования, установите период хранения, а затем нажмите «Сохранить» .
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 CLI
Чтобы создать еженедельное расписание резервного копирования, установите флаг --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 типа google_firestore_database .
  • RETENTION_PERIOD_SECONDS : Установите это значение в секундах, за которым следует «s». Максимальное значение — 8467200s с (14 недель).
  • DAY : День недели для резервного копирования. Установите одно из следующих значений:
    • SUNDAY для воскресенья
    • MONDAY для понедельника
    • TUESDAY для вторника
    • WEDNESDAY для среды
    • THURSDAY для четверга
    • FRIDAY для пятницы
    • SATURDAY для субботы

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

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

Консоль Google Cloud
  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. В списке баз данных найдите строку для базы данных. В столбце Запланированные резервные копии нажмите либо Просмотреть резервные копии , либо Изменить настройки , в зависимости от того, существует ли расписание резервного копирования.
  3. Откроется страница Disaster recovery . На этой странице описываются графики резервного копирования и перечисляются доступные резервные копии.
gcloud
Используйте команду gcloud firestore backups schedules list .
gcloud firestore backups schedules list \
--database='DATABASE_ID'
Замените DATABASE_ID на идентификатор базы данных. Используйте '(default)' для базы данных по умолчанию.
Firebase CLI
Используйте команду firebase firestore:backups:schedules:list .
firebase firestore:backups:schedules:list \
--database 'DATABASE_ID'
Замените DATABASE_ID на идентификатор базы данных. Используйте '(default)' для базы данных по умолчанию.

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

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

Консоль Google Cloud
  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. В списке баз данных найдите строку для базы данных. В столбце Запланированные резервные копии нажмите либо Просмотреть резервные копии , либо Изменить настройки , в зависимости от того, существует ли расписание резервного копирования.
  3. Откроется страница Disaster recovery . На этой странице описываются графики резервного копирования и перечисляются доступные резервные копии.
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 : Идентификатор расписания резервного копирования. Вы можете просмотреть идентификатор каждого расписания резервного копирования, когда вы перечисляете все расписания резервного копирования .

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

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

Консоль Google Cloud
  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. В списке баз данных найдите строку для базы данных. В столбце Запланированные резервные копии нажмите либо Просмотреть резервные копии , либо Изменить настройки .
  3. Нажмите «Изменить» , чтобы изменить параметры аварийного восстановления.
  4. Измените настройки расписания резервного копирования и нажмите кнопку Сохранить .
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 CLI
Используйте команду firebase firestore:backups:schedules:update :
firebase firestore:backups:schedules:update \
BACKUP_SCHEDULE \
--retention RETENTION_PERIOD
Заменить следующее:

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

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

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

Консоль Google Cloud
  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. В списке баз данных найдите строку для базы данных. В столбце Запланированные резервные копии нажмите либо Просмотреть резервные копии , либо Изменить настройки , в зависимости от того, существует ли расписание резервного копирования.
  3. Нажмите «Изменить» , чтобы изменить параметры аварийного восстановления.
  4. Измените настройки расписания резервного копирования и нажмите кнопку Сохранить .
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 CLI
Используйте команду firebase firestore:backups:schedules:delete :
firebase firestore:backups:schedules:delete \
BACKUP_SCHEDULE
Заменить следующее:

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

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

Список резервных копий

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

Консоль Google Cloud
  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. В списке баз данных найдите строку для базы данных. В столбце Запланированные резервные копии нажмите либо Просмотреть резервные копии , либо Изменить настройки , в зависимости от того, существует ли расписание резервного копирования.
  3. Нажмите «Изменить» , чтобы изменить параметры аварийного восстановления.
  4. Измените настройки расписания резервного копирования и нажмите кнопку Сохранить .
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 CLI
Используйте команду firebase firestore:backups:list :
firebase firestore:backups:list
Чтобы вывести список только резервных копий из определенного местоположения, используйте флаг --location :
firebase firestore:backups:list \
--location=LOCATION
Замените LOCATION на имя местоположения Cloud Firestore .

Опишите резервную копию

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

Консоль Google Cloud
  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. В списке баз данных найдите строку для базы данных. В столбце Запланированные резервные копии нажмите либо Просмотреть резервные копии , либо Изменить настройки , в зависимости от того, существует ли расписание резервного копирования.
  3. Откроется страница Disaster recovery . На этой странице описываются графики резервного копирования и перечисляются доступные резервные копии.
gcloud
Используйте команду gcloud firestore backups describe :
gcloud firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID
Заменить следующее:
  • LOCATION : Местоположение базы данных.
  • BACKUP_ID : Идентификатор резервной копии. Вы можете просмотреть идентификатор каждой резервной копии, когда вы перечисляете все резервные копии .
Firebase CLI
Используйте команду firebase firestore:backups:get :
firebase firestore:backups:get BACKUP
Заменить следующее:

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

Чтобы удалить резервную копию, воспользуйтесь одним из следующих способов.

Консоль Google Cloud
  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. В списке баз данных найдите строку для базы данных. В столбце Запланированные резервные копии нажмите Просмотр резервных копий или Изменить настройки в зависимости от того, существует ли расписание резервного копирования. Откроется страница Аварийное восстановление . На этой странице описываются расписания резервного копирования и перечислены доступные резервные копии.
  3. В таблице Резервные копии найдите строку для резервной копии и в столбце Действия нажмите Просмотреть больше ( ). Нажмите Удалить .
  4. Подтвердите действие, используя текстовое поле, и нажмите «Удалить» .
gcloud
Используйте команду gcloud firestore backups delete :
gcloud firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID
Заменить следующее:
  • LOCATION : Местоположение базы данных.
  • BACKUP_ID : Идентификатор резервной копии. Вы можете просмотреть идентификатор каждой резервной копии, когда вы перечисляете все резервные копии .
Firebase CLI
Используйте команду firebase firestore:backups:delete :
firebase firestore:backups:delete \
BACKUP
Заменить следующее:

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

Операция восстановления записывает данные из резервной копии в новую базу данных Cloud Firestore .

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

Консоль Google Cloud
  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. В списке баз данных найдите строку для базы данных. В столбце Запланированные резервные копии нажмите Просмотр резервных копий или Изменить настройки в зависимости от того, существует ли расписание резервного копирования. Откроется страница Аварийное восстановление . На этой странице описываются расписания резервного копирования и перечислены доступные резервные копии.
  3. В таблице Резервные копии найдите строку для резервной копии и в столбце Действия нажмите Просмотреть больше ( ). Нажмите Восстановить с помощью Cloud Shell .
  4. Панель Cloud Shell открывается с командой gcloud CLI для восстановления из выбранной резервной копии. Замените ID_OF_NEW_DATABASE на идентификатор базы данных и выполните команду.

    Выполнение команды возвращает ответ с дополнительной информацией об операции. База данных вскоре появится в вашем списке баз данных. Операция восстановления займет некоторое время и должна быть завершена, прежде чем база данных станет доступной.

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 CLI
Используйте команду firebase firestore:databases:restore :
firebase firestore:databases:restore \
--backup 'BACKUP' \
--database 'DATABASE_ID'
Заменить следующее:
  • BACKUP : Полное имя ресурса резервной копии. Вы можете просмотреть имя каждой резервной копии, когда вы перечисляете все резервные копии .
  • DATABASE_ID : Идентификатор базы данных для новой базы данных. Вы не можете использовать идентификатор базы данных, который уже используется.