Configurar variables de entorno

En esta página se describe la parte de preparación del proceso de migración, en la que se configuran las variables de entorno en el entorno local. En 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 varias variables de entorno que definas en esta fase.

En esta fase, debes hacer lo siguiente:

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

  2. Define las variables de entorno específicas del tipo de base de datos de origen compatible con MongoDB y de cómo se implementa.

Definir variables de entorno comunes

La siguiente plantilla ayuda a configurar las variables de entorno que son comunes a todas las fuentes compatibles con MongoDB. Más adelante, añadirá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 gestionar perfiles de conexión de Datastream.
  • Parámetros de ubicación de datos de Datastream para gestionar la ubicación de los datos en el segmento de Cloud Storage durante la migración.
  • Parámetros de la plantilla de Dataflow para gestionar la canalización que copiará los datos del segmento de Cloud Storage en 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 especifiques y no es necesario que los definas.
  • Parámetros de conexión de Firestore para establecer una conexión con la base de datos de destino de Firestore con compatibilidad con MongoDB.

Define 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"

Haz los cambios siguientes:

  • Parámetros generales:

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

      Puedes 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 presupone que todos los recursos pertinentes se encuentran en el mismo proyecto.

    • LOCATION: una región en la que se ejecutará el flujo de procesamiento de migración. Ejemplos: nam5, us-central1.

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

  • Parámetros de conexión de Datastream:

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

      Más adelante, crearás un perfil de conexión con este nombre.

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

      Más adelante, crearás un perfil de conexión de destino con este nombre.

    • DATASTREAM_NAME: nombre legible por humanos 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

      Crea este flujo más adelante.

  • Parámetros de colocación de datos de flujo de datos:

    • GCS_BUCKET_NAME: el nombre del segmento de Cloud Storage que has creado anteriormente. Ejemplo: mongo-migration-bucket

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

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

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

    • GCS_BUCKET_TEMPLATE_PATH: subruta del directorio GCS_BUCKET_ROOT_PATH de una instancia de flujo de datos determinada.

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

      Este valor se usará más adelante para crear una emisión.

  • Parámetros de plantilla de Dataflow:

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

    • NUM_WORKERS: número inicial de trabajadores para ejecutar la plantilla de Dataflow. Ejemplo: 2

    • MAX_WORKERS: número máximo de trabajadores para ejecutar la plantilla de Dataflow. Ejemplo: 8

    • WORKER_TYPE: El tipo de instancia de Compute Engine que se va a usar en la tarea de Dataflow. El tipo de máquina recomendado es e2-highmem-8.

  • Parámetros de conexión de Firestore:

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

    • FIRESTORE_CONNECTION_URI: la cadena de URI de conexión de 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

Definir variables de entorno específicas del tipo de base de datos de origen

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

MongoDB en Compute Engine

Las siguientes variables son específicas de las bases de datos de origen de MongoDB ubicadas en un clúster autogestionado (Compute Engine). Configúralos 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"

Haz los cambios siguientes:

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

  • MONGODB_PASSWORD: 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 MongoDB. Ejemplo: 10.0.0.1:27017

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

    • En el caso de 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 en el proceso de migración. Ejemplo: rs0

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

  • PRIVATE_CONNECTION_NAME: el ID de la configuración de conectividad privada que has creado anteriormente. Ejemplo: pc_name

MongoDB a través de SSH

Si gestionas 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 directo SSH. 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 directo SSH. Defínelos 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"

Haz los cambios siguientes:

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

  • MONGODB_PASSWORD: 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 MongoDB. Ejemplo: 10.0.0.1:27017

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

    • En el caso de 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 en el proceso de migración. Ejemplo: rs0

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

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

  • BASTION_SSH_PORT: puerto SSH del host. Ejemplo: 22

  • BASTION_SSH_USERNAME: nombre de usuario de la conexión SSH.

  • BASTION_SSH_PRIVATE_KEY: la carga útil completa de la clave privada SSH. Por ejemplo, en el caso de 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 que tienes la clave SSH privada de la instancia de Amazon EC2 que proporcionará la conexión al clúster de DocumentDB. También debes asegurarte 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 directo SSH. Defínelos 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"

Haz los cambios siguientes:

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

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

  • MONGODB_HOST_ADDRESS: 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 en el proceso de migración. Ejemplo: rs0

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

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

  • BASTION_SSH_PORT: puerto SSH del host. Ejemplo: 22

  • BASTION_SSH_USERNAME: nombre de usuario de la conexión SSH.

  • BASTION_SSH_PRIVATE_KEY: la carga útil completa de la clave privada SSH. Por ejemplo, en el caso de 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: la carga útil completa del certificado de CA 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. Configúralos 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"

Haz los cambios siguientes:

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

MongoDB Atlas

Las siguientes variables son específicas de las bases de datos de origen de MongoDB Atlas. Configúralos 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"

Haz los cambios siguientes:

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

Siguientes pasos

Ve a la sección Crear perfiles de conexión.