Migra de la edición Standard a la edición Enterprise
Para migrar datos de una base de datos de la edición Standard 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 de Dataflow
firestore-to-firestore. El servicio de Dataflow te permite compilar canalizaciones de datos, y la plantillafirestore-to-firestorecrea una canalización por lotes entre las bases de datos de Firestore.
La importación y la exportación son la opción más sencilla para ejecutar con menos opciones de configuración.
La plantilla de Dataflow es más personalizable. Puedes extender el código de la plantilla para realizar migraciones parciales o transformar datos. También puedes controlar el recuento y el tamaño de los trabajadores.
Ambas opciones admiten migraciones entre proyectos y regiones.
Migra datos con exportación e importación
Para migrar datos con operaciones de exportación e importación, consulta Exporta e importa datos. Para mover datos a una base de datos en otro proyecto, consulta Transfiere datos entre proyectos.
Migra datos con la plantilla de Dataflow
Usa las siguientes instrucciones para migrar datos con la plantilla de Dataflow firestore-to-firestore.
Antes de comenzar
Antes de iniciar 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 de Dataflow usa PITR para leer datos en una marca de tiempo de PITR. Si la PITR está inhabilitada, el trabajo falla si se ejecuta durante más de una hora.
La API de
datastore.googleapis.comdebe estar habilitada para usar esta plantilla.Asigna los roles obligatorios 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 cualquier otro rol predefinido:
- Para obtener los permisos que necesitas para crear una base de datos nueva y acceder a los datos de Firestore, pídele a tu administrador que te otorgue el rol de
Propietario de Cloud Datastore
(
roles/datastore.owner) de Identity and Access Management (IAM) en tu proyecto. -
Para otorgar al trabajo de Dataflow acceso de lectura y escritura a tus bases de datos de Firestore, asigna a la cuenta de servicio de trabajador de Dataflow (por ejemplo,
PROJECT_NUMBER-compute@developer.gserviceaccount.com) 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 Crea una base de datos.
2. Ejecuta la plantilla firestore-to-firestore de Dataflow
Configura y ejecuta tu trabajo de Dataflow con la plantilla 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 para la plantilla de Dataflow firestore-to-firestore:
- La base de datos de origen debe ser una base de datos de la edición Standard.
- La migración lee datos en un tiempo 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 no sea suficiente tiempo 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 las configuraciones 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 la 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 un nombre para el trabajo.PROJECT: Es el ID de tu Google Cloud proyecto.REGION_NAME: Es la Google Cloud ubicación 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:latestpara 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 de Firestore de origen.DESTINATION_PROJECT_ID: Es el ID del proyecto de destino para la base de datos nueva de Firestore. Google CloudDESTINATION_DATABASE_ID: Es el ID de la base de datos de Firestore de destino.READ_TIME: Es la marca de tiempo para leer datos de la base de datos de origen. Establece una marca de tiempo en el formato RFC 3339, con un nivel de detalle por minuto, como2026-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 Obtén la hora 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 un nombre para el trabajo.PROJECT: Es el ID de tu Google Cloud proyecto.REGION_NAME: Es la Google Cloud ubicación 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:latestpara 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 que contiene la base de datos de la edición Standard de Firestore. Google CloudSOURCE_DATABASE_ID: Es el ID de la base de datos de Firestore de origen.COLLECTION_GROUP_IDS: Es una lista de IDs de grupos de colecciones separados por comas para migrar.Las subcolecciones no se incluyen de forma recursiva. Por ejemplo, si especificas el grupo de colecciones
users, la migración no incluirá una subcolecciónmessagesen/users/userid/messages, a menos que también especifiques el grupo de coleccionesmessages.DESTINATION_PROJECT_ID: Es el ID del proyecto de destino para la base de datos nueva de Firestore. Google CloudDESTINATION_DATABASE_ID: Es el ID de la base de datos de Firestore de destino.READ_TIME: Es la marca de tiempo para leer datos de la base de datos de origen. Establece una marca de tiempo en el formato RFC 3339, con un nivel de detalle por minuto, como2026-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 Obtén la hora de la versión más antigua.
3. Configura la base de datos
El trabajo 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 datos, considera configurar lo siguiente en la base de datos nueva:
Índices: Las bases de datos de la edición Enterprise de Firestore no requieren índices para ejecutar consultas y no crean índices automáticos de forma predeterminada. Consulta lo siguiente para crear índices para tus consultas:
- Descripción general de los índices de la edición Enterprise de Firestore.
- Optimiza el rendimiento de las consultas con índices.
- Puedes usar Firebase CLI para exportar índices y, luego, implementarlos en la base de datos nueva.
- Usa Estadísticas de consultas para identificar las consultas que puedes optimizar con un índice.
TTL: Crea políticas de TTL.
Copias de seguridad: Configura copias de seguridad.
PITR: Habilita la PITR.
Después de configurar tu base de datos, puedes seguir probando tu app con la base de datos nueva. Para una migración completa, actualiza tus aplicaciones para que usen la base de datos nueva.
Soluciona problemas
En el caso de las bases de datos grandes, el trabajo puede fallar si lee demasiados datos a la vez. Para solucionar este problema, siga estos pasos:
Aumenta el
maxNumWorkersvalor.
¿Qué sigue?
- Obtén información para consultar datos con las operaciones de Pipeline.
- Obtén información para optimizar consultas en la edición Enterprise de Firestore.
- Comprende cómo se ajusta una base de datos de la edición Enterprise.