Configure las variables de entorno

En esta página, se describe la parte de preparación del proceso de migración, en la que configuras variables de entorno en tu entorno local. Desde este entorno, ejecutarás más adelante los comandos que configuran y activan el proceso de migración. Cada uno de estos comandos usará una o más variables de entorno que configurarás en esta etapa.

En esta etapa, harás lo siguiente:

  1. Configura variables de entorno que sean comunes a todas las fuentes compatibles con MongoDB.

  2. Establece variables de entorno específicas para el tipo de base de datos de origen compatible con MongoDB y para la forma en que se implementa.

Configura variables de entorno comunes

La siguiente plantilla ayuda a configurar variables de entorno que son comunes a todas las fuentes compatibles con MongoDB. Más adelante, agregarás variables adicionales específicas de tu fuente de MongoDB.

La plantilla configura el siguiente conjunto de variables de entorno:

  • Parámetros generales que se aplican a todo el procedimiento de migración.
  • Parámetros de conexión de Datastream que se usan para crear y administrar perfiles de conexión de Datastream.
  • Parámetros de ubicación de datos de Datastream para administrar la ubicación de datos en el bucket de Cloud Storage durante la migración
  • Parámetros de la plantilla de Dataflow para administrar la canalización que copiará datos del bucket de Cloud Storage a tu base de datos de Firestore con compatibilidad con MongoDB
  • Parámetros adicionales de la plantilla de Dataflow: Estos parámetros se derivan de otros parámetros que especificas y no es necesario que los configures.
  • Parámetros de conexión de Firestore para establecer una conexión con tu base de datos de destino de Firestore con compatibilidad con MongoDB.

Configura las siguientes variables antes de continuar con otros comandos de esta guía:

# General parameters
PROJECT_ID="PROJECT_ID"
LOCATION="LOCATION"

# Datastream connection parameters
SRC_CONNECTION_PROFILE_NAME="SRC_CONNECTION_PROFILE_NAME"
DST_CONNECTION_PROFILE_NAME="DST_CONNECTION_PROFILE_NAME"
DATASTREAM_NAME="DATASTREAM_NAME"

# Datastream data placement parameters
GCS_BUCKET_NAME="GCS_BUCKET_NAME"
GCS_BUCKET_ROOT_PATH="GCS_BUCKET_ROOT_PATH"
GCS_BUCKET_SUB_PATH="GCS_BUCKET_SUB_PATH"

# Dataflow template parameters
GCS_BUCKET_TEMPLATE_PATH="GCS_BUCKET_TEMPLATE_PATH"
NUM_WORKERS=NUM_WORKERS
MAX_WORKERS=MAX_WORKERS
WORKER_TYPE="WORKER_TYPE"

# Additional Dataflow template parameters: these are initialized
# from parameters above and don't require further customization
INPUT_FILE_LOCATION="gs://${GCS_BUCKET_NAME}/${GCS_BUCKET_ROOT_PATH}/${GCS_BUCKET_SUB_PATH}/"
TEMP_OUTPUT_LOCATION="gs://${GCS_BUCKET_NAME}/${GCS_BUCKET_ROOT_PATH}/tmp"
DLQ_LOCATION="gs://${GCS_BUCKET_NAME}/${GCS_BUCKET_ROOT_PATH}/dql"
STAGING_LOCATION="gs://${GCS_BUCKET_NAME}/${GCS_BUCKET_ROOT_PATH}/staging"

# Firestore connection parameters
FIRESTORE_CONNECTION_URI="FIRESTORE_CONNECTION_URI"
FIRESTORE_DATABASE_NAME="FIRESTORE_DATABASE_NAME"

Reemplaza lo siguiente:

  • Parámetros generales:

    • PROJECT_ID: Es el ID del proyecto del proyecto Google Cloud en el que se ejecutará la canalización de migración. Ejemplo: example-project.

      Es posible usar una base de datos de Firestore con compatibilidad con MongoDB de destino que se encuentre en otro proyecto. Sin embargo, en esta guía, se supone que todos los recursos pertinentes se encuentran en el mismo proyecto.

    • LOCATION: Una región en la que se ejecutará la canalización de migración. Ejemplos: nam5, us-central1.

      Te recomendamos que uses la misma región que la base de datos de Firestore con compatibilidad con MongoDB de destino.

  • Parámetros de conexión de Datastream:

    • SRC_CONNECTION_PROFILE_NAME: Es un nombre legible para el perfil de conexión de Datastream de la base de datos de origen compatible con MongoDB. Ejemplo: source-mongo-profile.

      Crearás un perfil de conexión con este nombre más adelante.

    • DST_CONNECTION_PROFILE_NAME: Es un nombre legible para el perfil de conexión de Datastream del bucket de Cloud Storage de destino. Ejemplo: destination-gcs-profile.

      Crearás un perfil de conexión de destino con este nombre más adelante.

    • DATASTREAM_NAME: Es el nombre legible de un flujo de Datastream que transferirá los datos de la base de datos de origen compatible con MongoDB a Cloud Storage. Ejemplo: mongo-to-gcs-stream.

      Crearás esta transmisión más adelante.

  • Parámetros de ubicación de datos de Datastream:

    • GCS_BUCKET_NAME: Es el nombre del bucket de Cloud Storage que creaste antes. Ejemplo: mongo-migration-bucket.

      Este valor se usará más adelante para crear un perfil de conexión de destino.

    • GCS_BUCKET_ROOT_PATH: Es el nombre del directorio de nivel superior en el bucket de Cloud Storage para colocar los datos intermedios durante la migración. Ejemplo: mongo-migration-root.

      Este valor se usará más adelante para crear un perfil de conexión de destino.

    • GCS_BUCKET_TEMPLATE_PATH: Es una ruta secundaria en el directorio GCS_BUCKET_ROOT_PATH para una instancia de Datastream determinada.

      Se puede usar el mismo perfil de conexión de destino para varias exportaciones a Cloud Storage. Sin embargo, debes designar una subruta única para cada migración. Ejemplo: mongo-migration-data-0.

      Este valor se usa para crear una transmisión más adelante.

  • Parámetros de la plantilla de Dataflow:

    • GCS_BUCKET_TEMPLATE_PATH: Es una subruta de acceso en el directorio GCS_BUCKET_ROOT_PATH en la que se almacenará una plantilla de Dataflow. Ejemplo: mongo-migration-template-path.

    • NUM_WORKERS: Es la cantidad inicial de trabajadores para ejecutar la plantilla de Dataflow. Ejemplo: 2.

    • MAX_WORKERS: Es la cantidad máxima de trabajadores para ejecutar la plantilla de Dataflow. Ejemplo: 8.

    • WORKER_TYPE: Es el tipo de instancia de Compute Engine que se usará para el trabajo de Dataflow. El tipo de máquina recomendado es e2-highmem-8.

  • Parámetros de conexión de Firestore:

    • FIRESTORE_DATABASE_NAME: Es el nombre de la base de datos de Firestore con compatibilidad con MongoDB a la que migrarás los datos. Ejemplo: firestore-database-name.

    • FIRESTORE_CONNECTION_URI: Es la cadena de URI de conexión para la base de datos de Firestore con compatibilidad con MongoDB.

      Ejemplo: mongodb://USERNAME:PASSWORD@CONNECTION_STRING:443/FIRESTORE_DATABASE_NAME?loadBalanced=true&authMechanism=SCRAM-SHA-256&tls=true&retryWrites=false.

Configura variables de entorno específicas para el tipo de base de datos de origen

Las siguientes plantillas ayudan a configurar variables de entorno específicas del tipo de base de datos fuente compatible con MongoDB y de cómo se implementa.

MongoDB en Compute Engine

Las siguientes variables son específicas para las bases de datos de origen de MongoDB ubicadas en un clúster autoadministrado (Compute Engine). Establécelas antes de continuar con otros comandos de esta guía:

# Google Compute Engine VM MongoDB Parameters
MONGODB_USERNAME="MONGODB_USERNAME"
MONGODB_PASSWORD="MONGODB_PASSWORD"
MONGODB_IP_ADDRESS="MONGODB_IP_ADDRESS"
REPLICA_SET="REPLICA_SET"
MONGODB_DATABASE_NAME="MONGODB_DATABASE_NAME"
PRIVATE_CONNECTION_NAME="PRIVATE_CONNECTION_NAME"

Reemplaza lo siguiente:

  • MONGODB_USERNAME: Es el nombre de usuario de la base de datos de origen compatible con MongoDB. Ejemplo: mongouser.

  • MONGODB_PASSWORD: Es la contraseña de la base de datos de origen compatible con MongoDB. Ejemplo: mongopassword.

  • MONGODB_IP_ADDRESS: Especifica la dirección IP interna, junto con el número de puerto, de la VM que aloja tu servidor de MongoDB. Ejemplo: 10.0.0.1:27017.

    • En el caso de las implementaciones que no están fragmentadas, pero que se configuraron con conjuntos de réplicas, la dirección IP de cualquier réplica del conjunto es válida. Sin embargo, recomendamos usar una de las réplicas secundarias.

    • Para los clústeres fragmentados, especifica la dirección de uno de tus servidores mongos.

  • (Solo para clústeres con conjuntos de réplicas que no están fragmentados) REPLICA_SET: Especifica el nombre del conjunto de réplicas que se debe usar para el proceso de migración. Ejemplo: rs0.

  • MONGODB_DATABASE_NAME: Es el nombre de la base de datos de origen compatible con MongoDB. Ejemplo: source_db.

  • PRIVATE_CONNECTION_NAME: Es el ID de la configuración de conectividad privada que creaste antes. Ejemplo: pc_name.

MongoDB a través de SSH

Si administras una implementación privada de MongoDB fuera de Compute Engine, Datastream admite la conexión a tu base de datos de origen a través de un túnel SSH de reenvío. Para obtener más información, consulta Túneles SSH.

Las siguientes variables son específicas para conectarse a bases de datos de origen de MongoDB a través de un túnel de SSH de reenvío. Establécelos antes de continuar con otros comandos de esta guía:

# MongoDB over an SSH Tunnel Parameters
MONGODB_USERNAME="MONGODB_USERNAME"
MONGODB_PASSWORD="MONGODB_PASSWORD"
MONGODB_IP_ADDRESS="MONGODB_IP_ADDRESS"
REPLICA_SET="REPLICA_SET"
MONGODB_DATABASE_NAME="MONGODB_DATABASE_NAME"
BASTION_IP_ADDRESS="BASTION_IP_ADDRESS"
BASTION_SSH_PORT="BASTION_SSH_PORT"
BASTION_SSH_USERNAME="BASTION_SSH_USERNAME"
BASTION_SSH_PRIVATE_KEY="BASTION_SSH_PRIVATE_KEY"

Reemplaza lo siguiente:

  • MONGODB_USERNAME: Es el nombre de usuario de la base de datos de origen compatible con MongoDB. Ejemplo: mongouser.

  • MONGODB_PASSWORD: Es la contraseña de la base de datos de origen compatible con MongoDB. Ejemplo: mongopassword.

  • MONGODB_IP_ADDRESS: Especifica la dirección IP interna, junto con el número de puerto, de la VM que aloja tu servidor de MongoDB. Ejemplo: 10.0.0.1:27017.

    • En el caso de las implementaciones que no están fragmentadas, pero que se configuraron con conjuntos de réplicas, la dirección IP de cualquier réplica del conjunto es válida. Sin embargo, recomendamos usar una de las réplicas secundarias.

    • Para los clústeres fragmentados, especifica la dirección de uno de tus servidores mongos.

  • (Solo para clústeres con conjuntos de réplicas que no están fragmentados) REPLICA_SET: Especifica el nombre del conjunto de réplicas que se debe usar para el proceso de migración. Ejemplo: rs0.

  • MONGODB_DATABASE_NAME: Es el nombre de la base de datos de origen compatible con MongoDB. Ejemplo: source_db.

  • BASTION_IP_ADDRESS: Es la dirección del host en tu red que puede aceptar una conexión SSH. Puede ser el servidor de MongoDB en sí o un host bastión designado que permite el acceso SSH desde una red pública y también proporciona conectividad interna al servidor de MongoDB real. Ejemplo: 30.0.0.1.

  • BASTION_SSH_PORT: Es el puerto SSH en el host. Ejemplo: 22.

  • BASTION_SSH_USERNAME: Nombre de usuario para la conexión SSH.

  • BASTION_SSH_PRIVATE_KEY: Es la carga útil completa de la clave privada SSH. Por ejemplo, para una clave RSA, esta carga útil incluiría el encabezado -----BEGIN RSA PRIVATE KEY----- y el pie de página -----END RSA PRIVATE KEY-----. Ejemplo: BASTION_SSH_PRIVATE_KEY=$(cat ~/.ssh/private_key)

Amazon DocumentDB

Asegúrate de tener la clave privada SSH para la instancia de Amazon EC2 que proporcionará la conexión al clúster de DocumentDB. También asegúrate de haber descargado el paquete de certificados específico de la región, tal como se describe en la sección Configuración de recursos, y de haber extraído y validado un certificado específico.

Las siguientes variables son específicas para conectarse a bases de datos de origen de DocumentDB a través de un túnel SSH de reenvío. Establécelos antes de continuar con otros comandos de esta guía:

# DocumentDB over an EC2 SSH Tunnel Parameters
MONGODB_USERNAME="MONGODB_USERNAME"
MONGODB_PASSWORD="MONGODB_PASSWORD"
MONGODB_HOST_ADDRESS="MONGODB_HOST_ADDRESS"
REPLICA_SET="REPLICA_SET"
MONGODB_DATABASE_NAME="MONGODB_DATABASE_NAME"
BASTION_IP_ADDRESS="BASTION_IP_ADDRESS"
BASTION_SSH_PORT="BASTION_SSH_PORT"
BASTION_SSH_USERNAME="BASTION_SSH_USERNAME"
BASTION_SSH_PRIVATE_KEY="BASTION_SSH_PRIVATE_KEY"
DOCUMENT_DB_CA_CERTIFICATE="DOCUMENT_DB_CA_CERTIFICATE"

Reemplaza lo siguiente:

  • MONGODB_USERNAME: Es el nombre de usuario de la base de datos de origen de DocumentDB. Ejemplo: mongouser.

  • MONGODB_PASSWORD: Es la contraseña de la base de datos de origen de DocumentDB. Ejemplo: mongopassword.

  • MONGODB_HOST_ADDRESS: Es la dirección del clúster de DocumentDB. Ejemplo: mydocumentdb.cluster-abcd.us-east-2.docdb.amazonaws.com:27017.

  • REPLICA_SET: Especifica el nombre del conjunto de réplicas que se debe usar para el proceso de migración. Ejemplo: rs0.

  • MONGODB_DATABASE_NAME: Es el nombre de la base de datos de origen de DocumentDB. Ejemplo: source_db.

  • BASTION_IP_ADDRESS: Es la dirección IP externa de la instancia de EC2 que permite el acceso SSH desde una red pública y también proporciona conectividad interna al clúster de DocumentDB dentro de tu Amazon VPC. Ejemplo: 30.0.0.1.

  • BASTION_SSH_PORT: Es el puerto SSH en el host. Ejemplo: 22.

  • BASTION_SSH_USERNAME: Nombre de usuario para la conexión SSH.

  • BASTION_SSH_PRIVATE_KEY: Es la carga útil completa de la clave privada SSH. Por ejemplo, para una clave RSA, esta carga útil incluiría el encabezado -----BEGIN RSA PRIVATE KEY----- y el pie de página -----END RSA PRIVATE KEY-----. Ejemplo: BASTION_SSH_PRIVATE_KEY=$(cat ~/ec2_bastion_host.pem)

  • DOCUMENT_DB_CA_CERTIFICATE: Es la carga útil completa del certificado de la AC de DocumentDB. Esta carga útil debe incluir el encabezado -----BEGIN CERTIFICATE----- y el pie de página -----END CERTIFICATE-----, y solo debe incluir un certificado. Ejemplo: BASTION_SSH_PRIVATE_KEY=$(cat ~/us-east-1.pem)

Azure Cosmos DB

Las siguientes variables son específicas de las bases de datos de origen de Azure Cosmos DB. Establécelos antes de continuar con otros comandos de esta guía:

# Azure Cosmos DB Parameters
MONGODB_USERNAME="MONGODB_USERNAME"
MONGODB_PASSWORD="MONGODB_PASSWORD"
MONGODB_HOST_ADDRESS="MONGODB_HOST_ADDRESS"
MONGODB_DATABASE_NAME="MONGODB_DATABASE_NAME"

Reemplaza lo siguiente:

  • MONGODB_USERNAME: Es el nombre de usuario de la base de datos de origen compatible con MongoDB. Ejemplo: mongouser.
  • MONGODB_PASSWORD: Es la contraseña de la base de datos de origen compatible con MongoDB. Ejemplo: mongopassword.
  • MONGODB_HOST_ADDRESS: Es el nombre de host de la base de datos de origen compatible con MongoDB. El valor debe cumplir con el formato de conexión SRV de MongoDB. Ejemplo:host.cosmos.azure.example.com.
  • MONGODB_DATABASE_NAME: Es el nombre de la base de datos de origen compatible con MongoDB. Ejemplo: source_db.

MongoDB Atlas

Las siguientes variables son específicas para las bases de datos de origen de MongoDB Atlas. Establécelos antes de continuar con otros comandos de esta guía:

# MongoDB Atlas Parameters
MONGODB_USERNAME="MONGODB_USERNAME"
MONGODB_PASSWORD="MONGODB_PASSWORD"
MONGODB_HOST_ADDRESS="MONGODB_HOST"
MONGODB_DATABASE_NAME="MONGODB_DATABASE_NAME"

Reemplaza lo siguiente:

  • MONGODB_USERNAME: Es el nombre de usuario de la base de datos de origen compatible con MongoDB. Ejemplo: mongouser.
  • MONGODB_PASSWORD: Es la contraseña de la base de datos de origen compatible con MongoDB. Ejemplo: mongopassword.
  • MONGODB_HOST_ADDRESS: Es el nombre de host de la base de datos de origen compatible con MongoDB. El valor debe cumplir con el formato de conexión SRV de MongoDB. Ejemplo:host.mongodb.example.com.
  • MONGODB_DATABASE_NAME: Es el nombre de la base de datos de origen compatible con MongoDB. Ejemplo: source_db.

¿Qué sigue?

Continúa con Crear perfiles de conexión.