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 la edición Enterprise y la edición Standard.
La plantilla
firestore-to-firestoreDataflow. El servicio Dataflow te permite compilar canalizaciones de datos, y la plantillafirestore-to-firestorecrea una canalización por lotes entre Cloud Firestore bases de datos.
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 tamaño y la cantidad de 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 Dataflow
Usa las siguientes instrucciones para migrar datos con la plantilla
firestore-to-firestore Dataflow.
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 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.
La API de
datastore.googleapis.comdebe estar habilitada para usar esta plantilla.Asigna los roles necesarios 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
Cloud 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 Cloud Firestore bases de datos, 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 Crear una base de datos.
2. Ejecuta la plantilla Dataflow firestore-to-firestore
Configura y ejecuta tu trabajo 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 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 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 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 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 la 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 Google Cloud proyecto de Google Cloud de origen 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 origen Cloud Firestore.DESTINATION_PROJECT_ID: Es el ID del Google Cloud proyecto de destino para la nueva Cloud Firestore base de datos.DESTINATION_DATABASE_ID: Es el ID de la base de datos de destino Cloud Firestore.READ_TIME: Es la marca de tiempo para leer datos de la base de datos de origen. Establécela en una marca de tiempo en 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 Google Cloud 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 origen Cloud Firestore.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 Google Cloud destino para la nueva Cloud Firestore base de datos.DESTINATION_DATABASE_ID: Es el ID de la base de datos de destino Cloud Firestore.READ_TIME: Es la marca de tiempo para leer datos de la base de datos de origen. Establécela en una marca de tiempo en 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 la CLI de Firebase 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.