二、支持的版本
| 类型 | 支持版本 |
| 自建 MongoDB | 3.6 / 4.0 / 4.2 / 4.4 / 5.0 / 6.0 / 7.0 / 8.0 |
| 腾讯云数据库 MongoDB | 3.6 / 4.0 / 4.2 / 4.4 / 5.0 / 6.0 / 7.0 / 8.0 |
实时同步(Change Streams)要求 MongoDB 版本 ≥ 3.6。
三、读取能力
| 能力 | 支持情况 | 说明 |
| 离线同步(读 / 写) | ✓ / – | 支持作为离线同步任务的源端读取数据;DataBuddy 数据源仅支持接入读取,不支持写入 |
| 实时同步(读 / 写) | ✓ / – | 支持作为实时同步任务的源端读取整库数据变更;DataBuddy 数据源仅支持接入读取,不支持写入 |
完整数据源能力对照参见 支持的数据源与读取能力。
五、实时同步限制
| 限制项 | 说明 |
| 版本要求 | MongoDB 版本必须 ≥ 3.6 |
| 副本集 | 需配置为副本集(Replica Set)模式才能使用 Change Streams |
| oplog 保留 | 需要足够的 oplog 保留时间以支持增量同步 |
| 系统集合 | 不支持 system.* 等系统集合的同步 |
六、离线同步限制
| 限制项 | 说明 |
| 单文档大小 | 不超过 16 MB(MongoDB 限制) |
| 嵌套深度 | 建议控制文档嵌套深度,过深可能影响性能 |
七、支持的字段类型
完整 BSON 类型请参见 MongoDB 产品文档。
| 字段类型 | 离线读 | 实时读 |
| Int32 / Int64 / Long / Double / Decimal128 | ✅ | ✅ |
| Boolean / String / ObjectId / UUID / Symbol / Regex | ✅ | ✅ |
| JavaScript / BinData | ✅ | ✅ |
| Date / Timestamp | ✅ | ✅ |
| Object / Array / Null / Undefined / MinKey / MaxKey / DBPointer | ✅ | ✅ |
注意:说明:
注意:MongoDB 为 Schema-free 数据库,同一字段可能存在多种类型,建议在源端统一字段类型以避免同步异常。
八、字段类型映射(离线同步)
同步时源端字段类型会转换为 DataBuddy 内部类型(同步链路中的中间类型)。配置任务前请重点核对「备注」列标注的类型,避免精度丢失或语义变化。
| 源端类型(BSON) | DataBuddy 内部类型 | 备注 |
| Int32 / Int64 | Long | – |
| Double(声明为 INT / INT32 / INTEGER / INT64 / BIGINT) | Long | 截断取整,丢失小数部分 |
| Double(其他声明) | Double | 遵循 IEEE 754 浮点精度 |
| Decimal128 | String | 按文本读取,高精度的十进制语义保留为字符串 |
| Boolean | Boolean | – |
| Date / Timestamp | Date | – |
| String | String | – |
| ObjectId / Symbol / Regex / JavaScript / JavaScript(with scope) | String | 按文本读取,不做结构解析 |
| BinData / UUID | String | 按文本读取,不做内容解析 |
| Object / Array | String | 按 JSON 文本序列化读取 |
| Null / Undefined / MinKey / MaxKey / DBPointer | String | 取不到值时按空值读取 |
九、字段类型映射(实时同步)
实时同步(整库多表)由 CDC 连接器解析源端类型并写入 TCLake。下表为自动建表时目标表实际使用的字段类型 ,配置任务前请重点核对「备注」列标注的类型。
| 源端类型(BSON) | TCLake 目标类型 | 备注 |
| Int | INTEGER | – |
| Long | LONG | – |
| Double | DOUBLE | – |
| Decimal128 | DECIMAL | – |
| Boolean | BOOLEAN | – |
| Date | TIMESTAMP | – |
| Timestamp | TIMESTAMP | 精度为秒级 |
| String | STRING | – |
| Object / Array | STRING | 按文本读取,不解析结构 |
| ObjectId / Symbol / Regex / JavaScript / JavaScript(with scope) | STRING | 按文本读取 |
| BinData | STRING | 二进制按字符串承载 |
| DBPointer / MinKey / MaxKey / Null / Undefined | STRING | 按文本读取 |
十一、DML
| 操作 | 是否支持 | 说明 |
| INSERT / UPDATE / REPLACE / DELETE | 是 | 文档级变更操作 |
十二、DDL
| 操作 | 是否支持 |
| DROP COLLECTION / DROP DATABASE / RENAME COLLECTION | 否 |
MongoDB 基于 Change Streams 进行变更捕获,不支持 DDL 变更的自动同步。集合的删除、重命名等操作需要在目标端手动处理。
十四、1. 确认副本集配置(仅实时同步)
rs.status()
十五、2. 配置账号权限
离线同步 :
use admindb.createUser({ user: "wedata_user", pwd: "your_password", roles: [{ role: "read", db: "your_database" }]})
实时同步 :
use admindb.createUser({ user: "wedata_cdc_user", pwd: "your_password", roles: [ { role: "read", db: "your_database" }, { role: "read", db: "local" } // 读取 oplog 必需 ]})
十六、3. 配置 oplog 大小(仅实时同步)
use localdb.oplog.rs.stats() // 查看当前 oplog 配置db.adminCommand({ replSetResizeOplog: 1, size: 10240 }) // 单位 MB
注意:说明:
注意:修改 oplog 大小需要在副本集每个节点执行。
十八、操作步骤
1. 登录 DataBuddy 控制台。
2. 在顶部切换到目标地域和 Workspace。
3. 进入 数据集成 > 数据源管理 (或 平台管理 > 数据源管理 )。
4. 点击 添加数据源 ,选择 MongoDB 。
5. 填写连接配置与认证信息,详见 参数说明。
6. 点击 连通性测试 (参见 数据源连通性测试)。
7. 测试通过后点击 保存 或 保存 & 创建任务 。
十九、参数说明
| 参数 | 说明 | 是否必填 |
| 数据源名称 | 数据源在工作空间内的唯一标识 | 是 |
| 连接地址 | MongoDB 连接地址(见下方格式) | 是 |
| 数据库 | 默认连接的数据库 | 是 |
| 用户名 | 数据库连接账号(如开启认证) | 视认证情况 |
| 密码 | 数据库连接密码(如开启认证;支持 SSM 凭证托管) | 视认证情况 |
| 数据源版本 | 见 支持的版本 | 是 |
20、连接地址格式
| 部署方式 | 格式示例 |
| 单节点 | mongodb://host:port |
| 副本集 | mongodb://host1:port1,host2:port2,host3:port3/?replicaSet=rsName |
| 分片集群 | mongodb://mongos1:port1,mongos2:port2 |
完整示例:
mongodb://10.0.0.1:27017,10.0.0.2:27017,10.0.0.3:27017/?replicaSet=rs0mongodb://10.0.0.1:27017/mydb?authSource=admin
22、实时整库
| 配置项 | 说明 |
| 来源表范围 | 指定集合 (仅同步选中的几个,新增集合需重启)/ 正则匹配 (指定库名 + 集合名正则,符合规则的新增集合自动接入) |
| 读取模式 | 全量 + 增量 / 仅增量 |
| 订阅类型 | 可勾选 INSERT / UPDATE / DELETE,至少勾选一种 |
23、离线单表
| 参数 | 说明 |
| 库 / 集合 | 必填;支持选择或手动输入 |
| 筛选条件 | MongoDB 查询条件(JSON 格式) |
筛选条件示例:
{"age": {"$gte": 18}, "status": "active"}{"create_time": {"$gte": {"$date": "2024-01-01T00:00:00Z"}}}
详细任务配置参见 表到表同步 与 实时整库多表任务配置。
24、最佳实践
·账号权限最小化 :使用专用账号,避免 root 权限。
·oplog 保留时间 :建议 ≥ 72 小时,防止任务重启后数据丢失。
·索引优化 :离线同步时在查询字段上建索引以提升读取效率。
·网络打通 :优先使用内网连接。
26、Q:连接失败?
A:检查网络连通性、确认用户名密码正确、检查 authSource 配置。
27、Q:报错 Change Streams 不可用?
A:MongoDB 未配置为副本集模式或版本 < 3.6。请将 MongoDB 配置为副本集,并升级到 3.6 及以上版本。
28、Q:增量同步报错找不到 oplog?
A:oplog 保留时间太短,已被覆盖。增加 oplog 大小:
db.adminCommand({ replSetResizeOplog: 1, size: 20480 })
29、Q:同步过程中报错类型不匹配?
A:MongoDB 是 Schema-free 的,同一字段可能存在不同类型。建议在源端统一数据类型,或在写入端配置类型转换。
30、Q:某些文档同步失败?
A:单文档超过 16 MB 限制。请拆分大文档,或使用 GridFS 存储大文件。
31、相关文档
·添加数据源连接
·数据源连通性测试
·支持的数据源与读取能力
·实时整库多表任务配置