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

Актуально для Cloud Firestore Standard Edition и Cloud Firestore Enterprise Edition.

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

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

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

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

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

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

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. Установите флажок «Ежедневно» , задайте период хранения и нажмите «Сохранить» .
Firebase CLI
Для создания расписания резервного копирования базы данных используйте команду firebase firestore:databases:backups:schedules:create . Для создания ежедневного расписания резервного копирования установите флаг --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 : Установите значение в секундах, за которым следует "с". Максимальное значение — 8467200s с (14 недель).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  2. В списке баз данных найдите строку, соответствующую нужной базе данных. В столбце «Запланированные резервные копии» нажмите « Просмотреть резервные копии» или «Изменить настройки» , в зависимости от того, существует ли расписание резервного копирования.
  3. Открывается страница «Восстановление после сбоя» . На этой странице описываются расписания резервного копирования и перечисляются доступные резервные копии.
Firebase CLI
Используйте команду firebase firestore:backups:get :
firebase firestore:backups:get BACKUP
Замените следующее:

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

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

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

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

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

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

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

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

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

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

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

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

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

Ограничения

Операция восстановления не восстанавливает данные поиска App Engine или сущности BLOB-объектов из базы данных (default) . Эти данные действительны только для базы данных (default) и не будут полезны, если вы восстанавливаете данные из базы данных (default) в базу данных, которая не поддерживает такие данные, поэтому они исключаются из резервных копий.

Что делать после восстановления

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

  • Убедитесь, что к вашей новой базе данных применены соответствующие средства управления идентификацией и доступом (IAM) .

  • Если вы ранее использовали политики TTL , примените их повторно к новой базе данных. Политики TTL не включаются в резервные копии и не применяются автоматически к восстановленным базам данных.