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

На этой странице описано, как использовать функцию запланированного резервного копирования 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 или 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. Откроется страница аварийного восстановления . На ней описаны графики резервного копирования и перечислены доступные резервные копии.
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. Откроется страница аварийного восстановления . На ней описаны графики резервного копирования и перечислены доступные резервные копии.
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
Заменить следующее:
  • BACKUP_SCHEDULE : Полное имя ресурса расписания резервного копирования. Имя каждого расписания резервного копирования можно просмотреть, выведя список всех расписаний резервного копирования .
  • RETENTION_PERIOD : установите значение до 14 недель ( 14w ).

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

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

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

Консоль 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. Откроется страница аварийного восстановления . На ней описаны графики резервного копирования и перечислены доступные резервные копии.
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 \
--tags=[KEY=VALUE]'
Заменить следующее:
  • PROJECT_ID : Идентификатор вашего проекта.
  • LOCATION : Местоположение резервной копии базы данных и местоположение новой базы данных, созданной для восстановленных данных.
  • BACKUP_ID : Идентификатор резервной копии. Вы можете увидеть идентификатор каждой резервной копии при просмотре списка всех резервных копий .
  • DATABASE_ID : идентификатор новой базы данных. Нельзя использовать идентификатор, который уже используется.
  • [ KEY = VALUE ]: Необязательный список пар КЛЮЧ=ЗНАЧЕНИЕ для привязки. Например:
    • --tags=123/environment=production,123/costCenter=marketing
    • --tags=tagKeys/333=tagValues/444
Выходные данные будут включать 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 : идентификатор новой базы данных. Нельзя использовать идентификатор, который уже используется.