配置环境变量

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

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

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

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

设置通用环境变量

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

该模板会配置以下一组环境变量:

  • 适用于整个迁移过程的常规参数
  • 用于创建和管理 Datastream 连接配置文件Datastream 连接参数
  • 用于管理迁移期间 Cloud Storage 存储桶中的数据放置位置的 Datastream 数据放置位置参数
  • 用于管理将数据从 Cloud Storage 存储桶复制到 Firestore(与 MongoDB 兼容)数据库的流水线的 Dataflow 模板参数
  • 其他 Dataflow 模板参数:这些参数派生自您指定的其他参数,您无需设置它们。
  • 用于建立与目标 Firestore(具有 MongoDB 兼容性)数据库的连接的 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:迁移流水线将运行的 Google Cloud 项目的项目 ID。 示例:example-project

      您可以使用位于其他项目中的目标 Firestore(与 MongoDB 兼容)数据库。 不过,本指南假定所有相关资源都位于同一项目中。

    • LOCATION:迁移流水线将运行的区域。示例:nam5us-central1

      建议您使用与目标 Firestore with MongoDB compatibility 数据库相同的区域。

  • Datastream 连接参数:

    • SRC_CONNECTION_PROFILE_NAME:与 MongoDB 兼容的源数据库的 Datastream 连接配置文件的人类可读名称。 示例:source-mongo-profile

      您稍后会创建具有此名称的连接配置文件。

    • DST_CONNECTION_PROFILE_NAME:目标 Cloud Storage 存储桶的 Datastream 连接配置文件的人为可读名称。示例: destination-gcs-profile

      您稍后将创建具有此名称的目标连接配置文件。

    • DATASTREAM_NAMEDatastream 流的人类可读名称,该流会将数据从与 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_PATHGCS_BUCKET_ROOT_PATH 目录中将暂存 Dataflow 模板的子路径。示例: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

    • 对于未分片但配置了副本集的部署,该集合中任何副本的 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

后续步骤

继续前往创建连接配置文件