Migra de la edición Standard a la edición Enterprise

Para migrar datos de una base de datos de la edición estándar de Firestore a una base de datos de la edición Enterprise de Firestore, te recomendamos que uses una de las siguientes opciones:

  • Las funciones de importación y exportación Los archivos de datos de una operación de importación son compatibles con las ediciones Enterprise y Standard.

  • La plantilla firestore-to-firestore Dataflow. El servicio de Dataflow te permite compilar canalizaciones de datos, y la plantilla de firestore-to-firestore crea una canalización por lotes entre bases de datos de Cloud Firestore.

La importación y exportación es la opción más sencilla, ya que requiere menos opciones de configuración.

La plantilla Dataflow es más personalizable. Puedes extender el código de la plantilla para realizar migraciones parciales o transformar datos. También puedes controlar la cantidad y el tamaño de los trabajadores.

Ambas opciones admiten migraciones entre proyectos y regiones.

Migra datos con la función de exportación e importación

Para migrar datos con operaciones de importación y exportación, consulta Cómo importar y exportar datos. Para transferir datos a una base de datos en otro proyecto, consulta Cómo transferir datos entre proyectos.

Migra datos con la plantilla Dataflow

Sigue estas instrucciones para migrar datos con la plantilla firestore-to-firestore Dataflow.

Antes de comenzar

  1. Antes de comenzar la migración de datos, asegúrate de que la recuperación de un momento determinado (PITR) esté habilitada en la base de datos de origen. El trabajo Dataflow usa la PITR para leer datos en una marca de tiempo de la PITR. Si la PITR está inhabilitada, el trabajo fallará si se ejecuta durante más de una hora.

  2. Asigna los roles requeridos que se describen en la siguiente sección.

Roles obligatorios

Para migrar datos de una base de datos a otra, asigna los siguientes roles. También puedes obtener los permisos necesarios a través de roles personalizados o de otros roles predefinidos:

  1. Para obtener los permisos que necesitas para crear una base de datos nueva y acceder a los datos de Cloud Firestore, pídele a tu administrador que te otorgue el rol de Identity and Access Management (IAM) de propietario de Cloud Datastore (roles/datastore.owner) en tu proyecto.
  2. Para otorgar acceso de lectura y escritura al trabajo de Dataflow en tus bases de datos de Cloud Firestore, asigna a la cuenta de servicio del trabajador de Dataflow (por ejemplo, PROJECT_NUMBER-compute@) el rol de IAM de usuario de Cloud Datastore (roles/datastore.user) en tu proyecto.

    Para obtener más información sobre la seguridad de Dataflow, consulta Seguridad y permisos de Dataflow.

Para obtener más información sobre cómo otorgar roles de IAM, consulta Administra el acceso a proyectos, carpetas y organizaciones.

1. Crea una base de datos nueva de la edición Enterprise de Firestore

Para migrar datos de una base de datos de la edición Standard a una base de datos de la edición Enterprise, primero debes crear la base de datos de destino de la edición Enterprise. Consulta Cómo crear una base de datos.

2. Ejecuta la plantilla Dataflow firestore-to-firestore

Configura y ejecuta tu trabajo de Dataflow con la plantilla de firestore-to-firestore. Las plantillas admiten la migración de toda la base de datos o solo de los grupos de colecciones especificados.

Limitaciones

Ten en cuenta las siguientes limitaciones de la plantilla firestore-to-firestore Dataflow:

  • La base de datos de origen debe ser una base de datos de la edición Standard.
  • La migración lee los datos en un momento de lectura específico. Te sugerimos que habilites la recuperación de un momento determinado (PITR) en la base de datos de origen. Si la PITR no está habilitada, los datos vencen después de una hora, y es posible que ese tiempo no sea suficiente para que se complete la migración de datos. La PITR extiende la retención de datos a siete días.
  • No se migran los índices.
  • El trabajo de Dataflow no migra la configuración de la base de datos, como las políticas de tiempo de actividad (TTL), las copias de seguridad, la PITR y las claves de encriptación administradas por el cliente (CMEK).

    Debes configurar estos parámetros en la base de datos nueva. Para mejorar la velocidad de la migración de datos, espera hasta después de la migración para configurar el TTL, las copias de seguridad y la PITR en la base de datos de destino.

En los siguientes ejemplos, se muestra cómo ejecutar la plantilla con Google Cloud CLI.

Migra todos los datos

Para migrar todos los datos, usa el siguiente comando:

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"

Reemplaza lo siguiente:

  • JOB_NAME: Es el nombre del trabajo.
  • PROJECT: Es el ID de tu proyecto de Google Cloud.
  • REGION_NAME: Es la ubicación de Google Cloud en la que deseas ejecutar el trabajo de Dataflow. Usa una ubicación cercana a tus bases de datos.
  • VERSION: Es la versión de la plantilla que deseas usar. Puedes usar los siguientes valores:

    • latest para usar la última versión de la plantilla, que está disponible en la carpeta superior non-dated en el bucket gs://dataflow-templates-REGION_NAME/latest/
    • el nombre de la versión, como 2023-09-12-00_RC00, para usar una versión específica de la plantilla, que se puede encontrar anidada en la carpeta superior con fecha correspondiente en el bucket gs://dataflow-templates-REGION_NAME/
  • SOURCE_PROJECT_ID: Es el ID del proyecto de origen Google Cloud que contiene la base de datos de la edición Standard de Firestore.

  • SOURCE_DATABASE_ID: Es el ID de la base de datos Cloud Firestore de origen.

  • DESTINATION_PROJECT_ID: Es el ID del proyecto de Google Cloud destino para la nueva base de datos de Cloud Firestore.

  • DESTINATION_DATABASE_ID: Es el ID de la base de datos de Cloud Firestore de destino.

  • READ_TIME: Es la marca de tiempo desde la que se leerán los datos de la base de datos de origen. Se establece en una marca de tiempo en formato RFC 3339, con una granularidad de minutos, como 2026-05-15T16:31:00.00Z.

    La marca de tiempo válida más antigua depende de la configuración de recuperación de un momento determinado (PITR). Consulta Cómo obtener la fecha de la versión más antigua.

Migra grupos de colecciones especificados

Para migrar solo ciertos grupos de colecciones, usa el siguiente comando:

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"

Reemplaza lo siguiente:

  • JOB_NAME: Es el nombre del trabajo.
  • PROJECT: Es el ID de tu proyecto de Google Cloud.
  • REGION_NAME: Es la ubicación de Google Cloud en la que deseas ejecutar el trabajo de Dataflow. Usa una ubicación cercana a tus bases de datos.
  • VERSION: Es la versión de la plantilla que deseas usar. Puedes usar los siguientes valores:

    • latest para usar la última versión de la plantilla, que está disponible en la carpeta superior non-dated en el bucket gs://dataflow-templates-REGION_NAME/latest/
    • el nombre de la versión, como 2023-09-12-00_RC00, para usar una versión específica de la plantilla, que se puede encontrar anidada en la carpeta superior con fecha correspondiente en el bucket gs://dataflow-templates-REGION_NAME/
  • SOURCE_PROJECT_ID: Es el ID del proyecto de Google Cloud fuente que contiene la base de datos de la edición estándar de Firestore.

  • SOURCE_DATABASE_ID: Es el ID de la base de datos Cloud Firestore de origen.

  • COLLECTION_GROUP_IDS: Es una lista separada por comas de los IDs de los grupos de colecciones que se migrarán.

    Las subcolecciones no se incluyen de forma recursiva. Por ejemplo, si especificas el grupo de colecciones users, la migración no incluirá una subcolección messages en /users/userid/messages, a menos que también especifiques el grupo de colecciones messages.

  • DESTINATION_PROJECT_ID: Es el ID del proyecto de Google Cloud destino para la nueva base de datos de Cloud Firestore.

  • DESTINATION_DATABASE_ID: Es el ID de la base de datos de Cloud Firestore de destino.

  • READ_TIME: Es la marca de tiempo para leer datos de la base de datos de origen. Se establece en una marca de tiempo en el formato RFC 3339, con una granularidad de minutos, como 2026-05-15T16:31:00.00Z.

    La marca de tiempo válida más antigua depende de la configuración de recuperación de un momento determinado (PITR). Consulta Cómo obtener la fecha de la versión más antigua.

3. Configura la base de datos

El trabajo de firestore-to-firestore solo migra datos. No se migran los índices ni otros parámetros de configuración de la base de datos. Además de migrar los datos, considera configurar lo siguiente en la base de datos nueva:

Después de configurar la base de datos, puedes seguir probando tu app con la nueva base de datos. Para realizar una migración completa, actualiza tus aplicaciones para que usen la nueva base de datos.

Soluciona problemas

En el caso de las bases de datos grandes, el trabajo podría fallar si lee demasiados datos a la vez. Para solucionar este problema, siga estos pasos:

¿Qué sigue?