配置环境变量

本页介绍了 迁移过程 的准备工作,即在本地环境中配置环境变量。在此环境中,您稍后将执行用于配置和启动迁移过程的命令。每个命令都将使用您在此阶段设置的一个或多个环境变量。

在此阶段,您需要执行以下操作:

  1. 设置所有受支持的与 MongoDB 兼容的来源共用的环境变量。

  2. 设置特定于与 MongoDB 兼容的来源数据库类型及其部署方式的环境变量。

设置通用环境变量

以下模板有助于设置所有受支持的与 MongoDB 兼容的来源共用的环境变量。您稍后将添加特定于 MongoDB 来源的额外变量。

该模板配置了以下环境变量:

  • 适用于整个迁移过程的常规参数
  • Datastream 连接参数,用于创建 和管理 Datastream 连接配置文件
  • 用于在迁移期间管理 Cloud Storage 存储桶中的数据放置的 Datastream 数据放置参数
  • 用于管理将数据从 Cloud Storage 存储桶复制到与 MongoDB 兼容的 Firestore 数据库的流水线的 Dataflow 模板参数
  • 其他 Dataflow 模板参数 :这些参数派生自您指定的其他参数,因此您无需设置它们。
  • 用于与目标与 MongoDB 兼容的 Firestore 数据库建立连接的 Firestore 连接参数

在继续执行本指南中的其他命令之前,请设置以下变量:

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

替换以下内容:

  • 常规参数:

  • Datastream 连接参数:

  • Datastream 数据放置参数:

    • GCS_BUCKET_NAME:您之前创建的 Cloud Storage 存储桶的名称。示例:mongo-migration-bucket

      此值用于稍后创建目标连接配置文件。

    • GCS_BUCKET_ROOT_PATH:Cloud Storage 存储桶中用于在迁移期间放置中间数据 的顶级目录 的名称。示例:mongo-migration-root

      此值用于稍后创建目标连接配置文件。

    • GCS_BUCKET_TEMPLATE_PATH:给定 Datastream 实例的 GCS_BUCKET_ROOT_PATH 目录中的子路径。

      同一个目标连接配置文件可用于多次导出到 Cloud Storage。不过,您必须为每次迁移指定唯一的子路径 。示例:mongo-migration-data-0

      此值用于稍后创建流。

  • Dataflow 模板参数:

  • Firestore 连接参数:

    • FIRESTORE_DATABASE_NAME:您要在其中迁移数据的 与 MongoDB 兼容的 Firestore 数据库 的名称。示例:firestore-database-name

    • FIRESTORE_CONNECTION_URI:与 MongoDB 兼容的 Firestore 数据库的 连接 URI 字符串

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

设置特定于来源数据库类型的环境变量

以下模板有助于设置特定于与 MongoDB 兼容的来源数据库类型及其部署方式的环境变量。

Compute Engine 上的 MongoDB

以下变量特定于位于自行管理的集群 (Compute Engine) 中的 MongoDB 来源数据库。在继续执行本指南中的其他命令之前,请设置这些变量:

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

替换以下内容:

  • MONGODB_USERNAME:与 MongoDB 兼容的来源 数据库的用户名。示例:mongouser

  • MONGODB_PASSWORD:与 MongoDB 兼容的来源 数据库的密码。示例:mongopassword

  • MONGODB_IP_ADDRESS:指定托管 MongoDB 服务器的虚拟机的内部 IP 地址以及 端口号。 示例:10.0.0.1:27017

    • 对于未分片但配置了 副本集的部署, 集合中任何副本的 IP 地址都是有效的。不过,我们建议使用其中一个辅助副本。

    • 对于 分片集群, 请指定其中一个 mongos 服务器的地址。

  • (仅适用于未分片但包含副本集的集群) REPLICA_SET:指定必须用于迁移过程的副本 集的名称。示例:rs0

  • MONGODB_DATABASE_NAME:与 MongoDB 兼容的来源 数据库的名称。示例:source_db

  • PRIVATE_CONNECTION_NAME:您之前创建的专用连接配置的 ID。示例:pc_name

通过 SSH 连接的 MongoDB

如果您在 Compute Engine 外部管理专用 MongoDB 部署,Datastream 支持通过转发 SSH 隧道连接到来源数据库。如需了解详情,请参阅 SSH 隧道

以下变量特定于通过转发 SSH 隧道连接到 MongoDB 来源数据库。在继续执行本指南中的其他命令之前,请设置这些变量:

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

替换以下内容:

  • MONGODB_USERNAME:与 MongoDB 兼容的来源 数据库的用户名。示例:mongouser

  • MONGODB_PASSWORD:与 MongoDB 兼容的来源 数据库的密码。示例:mongopassword

  • MONGODB_IP_ADDRESS:指定托管 MongoDB 服务器的虚拟机的内部 IP 地址以及 端口号。 示例:10.0.0.1:27017

    • 对于未分片但配置了 副本集的部署, 集合中任何副本的 IP 地址都是有效的。不过,我们建议使用其中一个辅助副本。

    • 对于 分片集群, 请指定其中一个 mongos 服务器的地址。

  • (仅适用于未分片但包含副本集的集群) REPLICA_SET:指定必须用于迁移过程的副本 集的名称。示例:rs0

  • MONGODB_DATABASE_NAME:与 MongoDB 兼容的来源 数据库的名称。示例:source_db

  • BASTION_IP_ADDRESS:网络中 可以接受 SSH 连接的主机的地址。这可以是 MongoDB 服务器本身,也可以是 指定的 堡垒 主机,该主机 允许从公共网络进行 SSH 访问,并提供与实际 MongoDB 服务器的内部 连接。示例:30.0.0.1

  • BASTION_SSH_PORT:主机上的 SSH 端口。示例:22

  • BASTION_SSH_USERNAME:用于 SSH 连接的用户名。

  • BASTION_SSH_PRIVATE_KEY:SSH 私钥的完整载荷。 例如,对于 RSA 密钥,此载荷将包含 -----BEGIN RSA PRIVATE KEY----- 标头和 -----END RSA PRIVATE KEY----- 页脚。 示例:BASTION_SSH_PRIVATE_KEY=$(cat ~/.ssh/private_key)

Amazon DocumentDB

确保您拥有 Amazon EC2 实例的专用 SSH 密钥,该实例将提供与 DocumentDB 集群的连接。另请确保您已按照 在 资源配置 部分中所述下载特定于区域的证书软件包,并提取和验证了特定证书。

以下变量特定于通过转发 SSH 隧道连接到 DocumentDB 来源数据库。在继续执行本指南中的其他命令之前,请设置这些变量:

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

替换以下内容:

  • MONGODB_USERNAME:DocumentDB 来源 数据库的用户名。示例:mongouser

  • MONGODB_PASSWORD:DocumentDB 来源 数据库的密码。示例:mongopassword

  • MONGODB_HOST_ADDRESS:DocumentDB 集群的地址。 示例:mydocumentdb.cluster-abcd.us-east-2.docdb.amazonaws.com:27017

  • REPLICA_SET:指定必须 用于迁移过程的副本集的名称。示例:rs0

  • MONGODB_DATABASE_NAME:DocumentDB 来源 数据库的名称。示例:source_db

  • BASTION_IP_ADDRESS:EC2 实例的外部 IP 地址 ,该实例允许从公共网络进行 SSH 访问,并提供与 Amazon VPC 中的 DocumentDB 集群的内部 连接。 示例:30.0.0.1

  • BASTION_SSH_PORT:主机上的 SSH 端口。示例:22

  • BASTION_SSH_USERNAME:用于 SSH 连接的用户名。

  • BASTION_SSH_PRIVATE_KEY:SSH 私钥的完整载荷。 例如,对于 RSA 密钥,此载荷将包含 -----BEGIN RSA PRIVATE KEY----- 标头和 -----END RSA PRIVATE KEY----- 页脚。 示例:BASTION_SSH_PRIVATE_KEY=$(cat ~/ec2_bastion_host.pem)

  • DOCUMENT_DB_CA_CERTIFICATE:DocumentDB CA 证书的完整载荷。 此载荷应包含 -----BEGIN CERTIFICATE----- 标头和 -----END CERTIFICATE----- 页脚,并且只能包含一个证书。 示例:BASTION_SSH_PRIVATE_KEY=$(cat ~/us-east-1.pem)

Azure Cosmos DB

以下变量特定于 Azure Cosmos DB 来源数据库。在继续执行本指南中的其他命令之前,请设置这些变量:

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

替换以下内容:

  • MONGODB_USERNAME:与 MongoDB 兼容的来源 数据库的用户名。示例:mongouser
  • MONGODB_PASSWORD:与 MongoDB 兼容的来源 数据库的密码。示例:mongopassword
  • MONGODB_HOST_ADDRESS:与 MongoDB 兼容的 来源数据库的主机名。该值必须符合 MongoDB SRV 连接格式。 示例:host.cosmos.azure.example.com
  • MONGODB_DATABASE_NAME:与 MongoDB 兼容的来源 数据库的名称。示例:source_db

MongoDB Atlas

以下变量特定于 MongoDB Atlas 来源数据库。在继续执行本指南中的其他命令之前,请设置这些变量:

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

替换以下内容:

  • MONGODB_USERNAME:与 MongoDB 兼容的来源 数据库的用户名。示例:mongouser
  • MONGODB_PASSWORD:与 MongoDB 兼容的来源 数据库的密码。示例:mongopassword
  • MONGODB_HOST_ADDRESS:与 MongoDB 兼容的 来源数据库的主机名。该值必须符合 MongoDB SRV 连接格式。 示例:host.mongodb.example.com
  • MONGODB_DATABASE_NAME:与 MongoDB 兼容的来源 数据库的名称。示例:source_db

后续步骤

继续创建 连接配置文件