Переход со стандартной версии на корпоративную.

Для переноса данных из базы данных Firestore Standard Edition в базу данных Firestore Enterprise Edition мы рекомендуем использовать один из следующих вариантов:

  • Функции импорта и экспорта . Файлы данных, полученные в результате импорта, совместимы как с версией Enterprise, так и со стандартной версией.

  • Шаблон Dataflow для связи между Dataflow firestore-to-firestore . Сервис Dataflow позволяет создавать конвейеры обработки данных, а шаблон firestore-to-firestore создает пакетный конвейер между базами данных Cloud Firestore .

Импорт и экспорт — это более простой вариант, требующий меньшего количества параметров конфигурации.

Шаблон Dataflow обладает большей гибкостью в настройке. Вы можете расширить код шаблона для выполнения частичной миграции или преобразования данных. Вы также можете контролировать количество и размер рабочих процессов.

Оба варианта поддерживают миграцию между проектами и регионами.

Перенос данных с помощью экспорта и импорта.

Для переноса данных с помощью операций экспорта и импорта см. раздел «Экспорт и импорт данных» . Для перемещения данных в базу данных в другом проекте см. раздел «Перемещение данных между проектами» .

Перенесите данные с помощью шаблона Dataflow

Для переноса данных с помощью шаблона Dataflow firestore-to-firestore воспользуйтесь приведенными ниже инструкциями.

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

  1. Перед началом миграции данных убедитесь, что в исходной базе данных включено восстановление на определенный момент времени (PITR) . Задание Dataflow использует PITR для чтения данных в момент времени, указанный в PITR. Если PITR отключено, задание завершится с ошибкой, если его выполнение займет более одного часа.

  2. Назначьте необходимые роли, описанные в следующем разделе.

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

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

  1. Чтобы получить необходимые разрешения для создания новой базы данных и доступа к данным Cloud Firestore , попросите администратора предоставить вам роль Identity and Access Management (IAM) « Владелец Cloud Datastore» ( roles/datastore.owner ) в вашем проекте.
  2. Чтобы предоставить заданию Dataflow доступ на чтение и запись к вашим базам данных Cloud Firestore , назначьте учетную запись службы рабочего процесса Dataflow (например, PROJECT_NUMBER -compute@ ) роль IAM пользователя Cloud Datastore ( roles/datastore.user ) в вашем проекте.

    Для получения дополнительной информации о безопасности Dataflow см. раздел «Безопасность и разрешения Dataflow .

Для получения дополнительной информации о предоставлении ролей IAM см. раздел «Управление доступом к проектам, папкам и организациям» .

1. Создайте новую базу данных Firestore Enterprise Edition.

Для переноса данных из базы данных стандартной версии в базу данных корпоративной версии необходимо сначала создать целевую базу данных корпоративной версии. См. раздел «Создание базы данных» .

2. Запустите шаблон Dataflow firestore-to-firestore

Настройте и запустите задание Dataflow с помощью шаблона firestore-to-firestore . Шаблон поддерживает миграцию всей базы данных или только указанных групп коллекций.

Ограничения

Учитывайте следующие ограничения шаблона Dataflow для передачи данных firestore-to-firestore :

  • Исходная база данных должна быть базой данных стандартной версии.
  • В процессе миграции данные считываются в определенный момент времени. Мы рекомендуем включить восстановление на определенный момент времени (PITR) в исходной базе данных. Если PITR не включен, данные истекают через час, и этого может быть недостаточно для завершения миграции данных. PITR продлевает срок хранения данных до семи дней.
  • Индексы не переносятся.
  • Задача Dataflow не переносит конфигурации базы данных, такие как политики времени жизни (TTL), резервные копии, PITR и управляемые клиентом ключи шифрования (CMEK).

    Необходимо настроить эти параметры в новой базе данных. Для повышения скорости миграции данных подождите, пока миграция завершится, прежде чем настраивать TTL, резервное копирование и PITR в целевой базе данных.

Следующие примеры демонстрируют, как запустить шаблон с помощью Google Cloud CLI .

Перенести все данные

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

gcloud dataflow flex-template run "JOB_NAME" \
  --project "PROJECT" \
  --template-file-gcs-location gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_Firestore_to_Firestore \
  --region REGION_NAME \
  --parameters "sourceProjectId=SOURCE_PROJECT_ID" \
  --parameters "sourceDatabaseId=SOURCE_DATABASE_ID" \
  --parameters "destinationProjectId=DESTINATION_PROJECT_ID" \
  --parameters "destinationDatabaseId=DESTINATION_DATABASE_ID" \
  --parameters "readTime=READ_TIME"

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

  • JOB_NAME : название должности.
  • PROJECT : идентификатор вашего проекта Google Cloud .
  • REGION_NAME : местоположение Google Cloud , где вы хотите запустить задание Dataflow . Используйте местоположение, близкое к вашим базам данных.
  • VERSION : версия шаблона, которую вы хотите использовать. Вы можете использовать следующие значения:

    • Для использования latest версии шаблона, доступной в родительской папке без указания даты в хранилище — gs://dataflow-templates REGION_NAME /latest/
    • Название версии, например, 2023-09-12-00_RC00 , указывает на использование конкретной версии шаблона, которая находится в соответствующей родительской папке с указанием даты в хранилище — gs://dataflow-templates REGION_NAME /
  • SOURCE_PROJECT_ID : идентификатор исходного проекта Google Cloud , содержащего базу данных Firestore Standard Edition.

  • SOURCE_DATABASE_ID : идентификатор исходной базы данных Cloud Firestore .

  • DESTINATION_PROJECT_ID : идентификатор целевого проекта Google Cloud для новой базы данных Cloud Firestore .

  • DESTINATION_DATABASE_ID : идентификатор целевой базы данных Cloud Firestore .

  • READ_TIME : метка времени для чтения данных из исходной базы данных. Устанавливается в формате RFC 3339 с точностью до минуты, например, 2026-05-15T16:31:00.00Z .

    Самая ранняя действительная метка времени зависит от настроек восстановления на определенный момент времени (PITR). См. раздел «Получение самого раннего времени версии» .

Перенести указанные группы коллекций

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

gcloud dataflow jobs run "JOB_NAME" \
  --project "PROJECT" \
  --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Cloud_Firestore_to_Firestore \
  --region REGION_NAME \
  --parameters "sourceProjectId=SOURCE_PROJECT_ID" \
  --parameters "sourceDatabaseId=SOURCE_DATABASE_ID" \
  --parameters "collectionGroupIds=COLLECTION_GROUP_IDS" \
  --parameters "destinationProjectId=DESTINATION_PROJECT_ID" \
  --parameters "destinationDatabaseId=DESTINATION_DATABASE_ID" \
  --parameters "readTime=READ_TIME"

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

  • JOB_NAME : название должности.
  • PROJECT : идентификатор вашего проекта Google Cloud .
  • REGION_NAME : местоположение Google Cloud , где вы хотите запустить задание Dataflow . Используйте местоположение, близкое к вашим базам данных.
  • VERSION : версия шаблона, которую вы хотите использовать. Вы можете использовать следующие значения:

    • Для использования latest версии шаблона, доступной в родительской папке без указания даты в хранилище — gs://dataflow-templates REGION_NAME /latest/
    • Название версии, например, 2023-09-12-00_RC00 , указывает на использование конкретной версии шаблона, которая находится в соответствующей родительской папке с указанием даты в хранилище — gs://dataflow-templates REGION_NAME /
  • SOURCE_PROJECT_ID : идентификатор исходного проекта Google Cloud , содержащего базу данных Firestore Standard Edition.

  • SOURCE_DATABASE_ID : идентификатор исходной базы данных Cloud Firestore .

  • COLLECTION_GROUP_IDS : список идентификаторов групп коллекций, разделенных запятыми, для миграции.

    Вложенные коллекции не включаются рекурсивно. Например, если вы укажете группу коллекций users , то миграция не будет включать в себя вложенную коллекцию messages по адресу /users/userid/messages если вы также не укажете группу коллекций messages .

  • DESTINATION_PROJECT_ID : идентификатор целевого проекта Google Cloud для новой базы данных Cloud Firestore .

  • DESTINATION_DATABASE_ID : идентификатор целевой базы данных Cloud Firestore .

  • READ_TIME : метка времени для чтения данных из исходной базы данных. Устанавливается в формате RFC 3339 с точностью до минуты, например, 2026-05-15T16:31:00.00Z .

    Самая ранняя действительная метка времени зависит от настроек восстановления на определенный момент времени (PITR). См. раздел «Получение самого раннего времени версии» .

3. Настройте базу данных.

Задача переноса данных firestore-to-firestore переносит только данные. Индексы и другие параметры базы данных не переносятся . Помимо переноса данных, рекомендуется настроить следующие параметры в новой базе данных:

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

Поиск неисправностей

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

Что дальше?