功能操作说明
1.参数含义
当设置 MongoDB 数据同步任务时,以下是每个参数的详细含义:
workName:
- 含义:任务名称
- 说明:用于标识数据同步任务的名称,如果未提供,则默认生成为 "workNameDefault"。
sourceDsUrl:
- 含义:源端 MongoDB 连接 URL
- 说明:指定源端 MongoDB 数据库的连接 URL,可以为单节点、复制集或分片。
targetDsUrl:
- 含义:目标端 MongoDB 连接 URL
- 说明:指定目标端 MongoDB 数据库的连接 URL,可以为单节点、复制集或分片。
syncMode:
- 含义:同步模式
- 说明:指定数据同步的模式,可以是以下几种选项:
- "all": 全量模式,同步所有表,不同步同步期间对源表进行的操作。
- "allAndRealTime": 全量加实时模式,先进行全量同步,然后开始实时同步。
- "allAndIncrement": 全量加增量模式,进行全量同步后,仅同步同步期间对源表进行的操作。
- "realTime": 实时模式,根据配置的开始和结束时间进行实时同步。
realTimeType:
- 含义:实时任务类型
- 说明:选择实时任务使用的类型,可以是 "oplog" 或 "changestream"。
- 详细说明:
- "oplog": 使用 MongoDB 的 oplog 进行实时同步,适用于源端为复制集,支持 DDL 操作,速度较快。
- "changestream": 使用 MongoDB 的 changestream 进行实时同步,适用于源端为复制集或 mongos,不支持 DDL 操作,速度一般。
fullType:
- 含义:全量任务类型
- 说明:选择全量任务使用的类型,可以是 "sync" 或 "reactive"。
- 详细说明:
- "sync": 使用稳定的传输方式进行全量同步。
- "reactive": 使用更快的传输方式进行全量同步。
dbTableWhite:
- 含义:需要同步的表
- 说明:使用正则表达式指定需要同步的表,例如同步 mongodb 库下的所有表:mongodb\..+,默认为同步全部表。
ddlFilterSet:
- 含义:需要同步的 DDL 操作
- 说明:指定需要同步的 DDL 操作,多个操作之间用英文逗号隔开,默认为 *,代表同步所有 DDL 操作。
sourceThreadNum:
- 含义:源端任务线程数(全量模式)
- 说明:指定全量同步情况下读取源端任务的线程数。
targetThreadNum:
- 含义:目标端任务线程数(全量模式)
- 说明:指定全量同步情况下写入目标端任务的线程数。
createIndexThreadNum:
- 含义:建立索引的并发线程数(全量模式)
- 说明:指定全量同步情况下建立索引的并发线程数。
batchSize:
- 含义:每批次数据大小
- 说明:指定每次传输的数据批次大小,默认为 128。
bucketNum:
- 含义:缓存桶个数
- 说明:指定内存中的缓存桶个数,默认为 20。
bucketSize:
- 含义:每个缓存桶缓存批次数量
- 说明:指定每个缓存桶缓存的数据批次数量,默认为 20。
startOplogTime:
- 含义:实时同步的开始时间
- 说明:在实时同步模式下,指定读取 oplog 的开始时间,默认为程序启动时刻的 10 位时间戳。
endOplogTime:
- 含义:实时同步的结束时间
- 说明:在实时同步模式下,指定读取 oplog 的结束时间,默认为 0,表示没有结束时间。
delayTime:
- 含义:实时同步的延迟时间
- 说明:在实时同步模式下,指定读取 oplog 的延迟时间,默认为 0,表示没有延迟时间。
nsBucketThreadNum:
- 含义:解析桶的线程数(实时同步)
- 说明:在实时同步中解析桶的线程数,默认为系统计算值。
writeThreadNum:
- 含义:写数据的线程数(实时同步)
- 说明:在实时同步中写数据的线程数,默认为系统计算值。
ddlWait:
- 含义:每个 DDL 操作最大耗时
- 说明:设置同步中每个 DDL 操作的最大耗时,单位为秒。
clusterInfoSet:
- 含义:全量同步时的预处理操作
- 说明:设置全量同步时的预处理操作,用逗号隔开,可组合多个操作,例如 "0,1,2,3,4,5,6,7",默认为空。每个操作的含义如下:
- 0: 是否删除目标端已经存在的表
- 1: 打印输出集群全部用户信息
- 2: 同步库表结构
- 3: 同步库表索引信息
- 4: 全部库开启库分片
- 5: 同步库表 shard key
- 6: 同步 config.setting 表
- 7: 库
表预切分 chunk
- bind_ip:
- 含义:开启 monitor 监控时的本机 IP 地址
- 说明:在开启监控时,配置监控所绑定的本机 IP 地址。
通过配置这些参数,您可以根据您的需求,定制 MongoDB 数据同步任务的行为和特性。
2.参数使用范围
| 参数 | 实时任务 | 全量任务 | 全量加增量任务 | 全量加实时任务 |
|----------------------|--------|--------|-------------|--------------|
| workName | ✔️ | ✔️ | ✔️ | ✔️ |
| sourceDsUrl | ✔️ | ✔️ | ✔️ | ✔️ |
| targetDsUrl | ✔️ | ✔️ | ✔️ | ✔️ |
| syncMode | ✔️ | ✔️ | ✔️ | ✔️ |
| realTimeType | ✔️ | | ✔️ | ✔️ |
| fullType | | ✔️ | ✔️ | ✔️ |
| dbTableWhite | ✔️ | ✔️ | ✔️ | ✔️ |
| ddlFilterSet | ✔️ | | ✔️ | ✔️ |
| batchSize | ✔️ | ✔️ | ✔️ | ✔️ |
| bucketNum | ✔️ | ✔️ | ✔️ | ✔️ |
| bucketSize | ✔️ | ✔️ | ✔️ | ✔️ |
| startOplogTime | ✔️ | | | |
| endOplogTime | ✔️ | | ✔️ | ✔️ |
| delayTime | ✔️ | | | |
| nsBucketThreadNum | ✔️ | | | |
| writeThreadNum | ✔️ | | | |
| ddlWait | ✔️ | ✔️ | ✔️ | ✔️ |
| clusterInfoSet | ✔️ | ✔️ | ✔️ | ✔️ |
| bind_ip | ✔️ | ✔️ | ✔️ | ✔️ |
3.数据校验
#校验数据脚本
# 0:多线程进行校验:配置后1-8的校验方式,可以并发的进行处理
# 1:预估库表count校验,count库表数量可能不准确
# 2:精确库表count校验,count库表数量准确
# 3:库表dbHash校验(会锁库,谨慎操作), 利用mongodb自带统计工具,对库表的每一行数据进行计算,最终得到表hash值
# 4:库表随机取100条数据进行校验,源端随机抽取100条数据,校验100条数据是否存在于目标端
# 5:库表每种数据类型取100条进行校验数据, _id每种数据类型均抽取100条(_id排序前50条,后五十条),校验100条数据是否存在于目标端
# 6:检查库表缺失索引信息
# 7:检查库表缺失索引信息且补充建立缺失索引
# 8:库dbHash校验(会锁库,谨慎操作)
# 9:输出详细校验日志信息。不填写9时,日志仅记录异常校验信息
# 可以组合使用 例如 123456 123457 1237。若不填写,默认使用组合16
checkData=12456