配置环境变量
本页介绍了 迁移过程 的准备工作,即在本地环境中配置环境变量。在此环境中,您稍后将执行用于配置和启动迁移过程的命令。每个命令都将使用您在此阶段设置的一个或多个环境变量。
在此阶段,您需要执行以下操作:
设置所有受支持的与 MongoDB 兼容的来源共用的环境变量。
设置特定于与 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"
替换以下内容:
常规参数:
PROJECT_ID:迁移流水线将在其中运行的项目的项目 ID。 Google Cloud 示例:
example-project。您可以使用位于另一个项目中的目标与 MongoDB 兼容的 Firestore 数据库。 不过,本指南假定所有相关资源都位于同一项目中。
LOCATION: 迁移流水线将在其中运行的区域。示例:
nam5、us-central1。我们建议使用与目标与 MongoDB 兼容的 Firestore 数据库相同的区域。
Datastream 连接参数:
SRC_CONNECTION_PROFILE_NAME:与 MongoDB 兼容的来源数据库的 Datastream 连接配置文件 的易记名称。 示例:
source-mongo-profile。您稍后将使用此名称创建连接配置文件。
DST_CONNECTION_PROFILE_NAME:目标 Cloud Storage 存储桶的 Datastream 连接配置文件 的易记名称。示例:
destination-gcs-profile。您稍后将使用此名称创建目标连接配置文件。
DATASTREAM_NAME:Datastream 流的易记名称,该流会将数据从与 MongoDB 兼容的来源数据库传输到 Cloud Storage。示例:
mongo-to-gcs-stream。您稍后将创建此流。
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 模板参数:
GCS_BUCKET_TEMPLATE_PATH:Dataflow 模板将在其中暂存的 GCS_BUCKET_ROOT_PATH目录中的子路径。示例:
mongo-migration-template-path。NUM_WORKERS:用于运行 Dataflow 模板的工作器起始数量。示例:
2。MAX_WORKERS:用于运行 Dataflow 模板的工作器数量上限。示例:
8。WORKER_TYPE:用于 Dataflow 作业的 Compute Engine 实例类型。建议的机器类型为
e2-highmem-8。
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。(仅适用于未分片但包含副本集的集群) 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。(仅适用于未分片但包含副本集的集群) 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。
后续步骤
继续创建 连接配置文件。