从源 Mongo 数据库导入
本页面介绍了迁移过程的第一阶段,您将使用 Datastream 数据流捕获与 MongoDB 兼容的源数据库的内容,并将其转移到 Cloud Storage 存储桶中。
为数据流创建 YAML 配置文件
除了常用的命令行标志之外,创建数据流还需要两个 YAML 格式的配置文件:
mongo_source_config.yaml文件用于配置要迁移的特定资源的选择,例如数据库名称。Mongo 连接参数(例如主机名、用户名和密码)都是连接配置文件的属性。但是,数据库(以及该数据库中的任何特定集合)是数据流的属性。gcs_dst_config.yaml文件用于配置 Cloud Storage 中的数据放置。Cloud Storage 存储桶和存储桶中的根路径是连接配置文件的属性。但是,数据格式和 Cloud Storage 存储桶结构中的数据放置是数据流的属性。
以下命令示例会创建这些文件,并使用您之前设置的环境变量中的值 填充这些文件。或者,您可以在任何文本编辑器中创建这些文件,并手动替换这些值。
echo "$(cat <<EOF
includeObjects:
databases:
- database: ${MONGODB_DATABASE_NAME}
EOF
)" > mongo_source_config.yaml
echo "$(cat <<EOF
path: "/${GCS_BUCKET_SUB_PATH}"
avroFileFormat: {}
EOF
)" > gcs_dst_config.yaml
上一个示例配置了 $MONGODB_DATABASE_NAME 的完整内容以进行迁移。您还可以将迁移限制为数据库中的特定集合。例如,如需仅迁移集合 users 和 chats,请使用以下命令:
includeObjects:
databases:
- database: ${MONGODB_DATABASE_NAME}
collections:
- collection: users
- collection: chats
创建 Datastream 数据流
接下来,创建一个连接来源和目标的数据流:
数据流标签 json_canonical_mode=true 可确保 Datastream 正确处理包含非标准值(例如 Infinity 或 NaN)的 MongoDB 文档事件。
gcloud datastream streams create "$DATASTREAM_NAME" \
--display-name="$DATASTREAM_NAME" \
--location="$LOCATION" \
--source="$SRC_CONNECTION_PROFILE_NAME" \
--destination="$DST_CONNECTION_PROFILE_NAME" \
--mongodb-source-config=./mongo_source_config.yaml \
--gcs-destination-config=./gcs_dst_config.yaml \
--labels="json_canonical_mode=true" \
--backfill-all
如需详细了解如何监控 Datastream 数据流 创建,请参阅 问题排查。
激活 Datastream 数据流
最后,激活新数据流。
当数据流开始从 Mongo 来源提取数据并流式传输更改时,您可以在 Cloud Storage 存储桶中观察到在连接配置文件和数据流中配置的路径下创建的新目录和文件。
如需激活数据流,请运行以下命令:
gcloud datastream streams update "$DATASTREAM_NAME" \
--location="$LOCATION" \
--state=RUNNING \
--update-mask=state