关于数据库:5分钟搞定-MongoDB-到-MongoDB-数据迁移和同步CloudCanal实战

38次阅读

共计 1587 个字符,预计需要花费 4 分钟才能阅读完成。

简述

MongoDB 是一种宽泛应用的文档型数据库,对于 schema 弱要求、可扩展性强让其在很多场景广泛实用。

本文次要介绍如何应用 CloudCanal 疾速构建一条稳固高效运行的 MongoDB 到 MongoDB 数据同步链路,示例中 MongoDB 均为 ReplicationSet (正本集)。

技术点

MongoDB 源端增量技术

MongoDB 增量数据能够通过 local 库的 oplog.rs collection 获取增量变更数据(须要搭正本集)。

其中事件蕴含以下子 Document (不同版本 MongoDB 有些许差别), CloudCanal 通过解析事件记录同步增量数据

子 document 名字数据含意
op操作类型, CloudCanal 反对的类型包含:c (管制操作) , i (INSERT) , u (UPDATE),d (DELETE)
ns命名空间(namespace) , 格局为 dbName.collectionName , 其中 collectionName 能够为 $cmd , 则示意在对应数据库上的操作
ts执行操作的事件戳,单位秒
o变更的数据,对应 INSERT/UPDATE 后镜像数据,DELETE 为前镜像数据, 须要留神的是,MongoDB 4.x 版本和其余版本在这个 Document 有所不一样
o2只在 UPDATE 事件中有值,能够认为是主键或者定位数据的标识符

MongoDB 的数据类型反对

CloudCanal 从 2021 年 8 月份反对 MongoDB 开始,经验多个版本迭代,逐渐丰盛了对 MongoDB 数据类型的反对。

无论间接从 MongoDB 做全量迁徙,还是生产 oplog 进行增量同步,类型转换对自定义代码解决和上游数据源写入都有重要意义。

从 MongoDB 全量读取反对的类型包含: null,ObjectId,Date,Number,String

从 MongoDB oplog 增量同步反对的类型包含:ObjectId,Date,Number,String,Integer,Long,BigInteger,Double,BigDecimal

以上类型并不是起点,随着越来越多用户应用,一直扩大中。

操作示例

前置条件

  • 登陆 CloudCanal SaaS 版, 应用参见疾速上手文档
  • 筹备好 2 个 MongoDB 实例(本例应用阿里云 MongoDB 4.2 和 5.0,模仿用户 MongoDB 实例版本升级)
  • 登录 CloudCanal 平台,增加 MongoDB

  • 创立一条 MySQL -> MongoDB 链路作为增量数据起源

工作创立

  • 工作治理 -> 工作创立
  • 测试链接 并抉择 指标 数据库
  • 点击下一步

  • 抉择 数据同步 ,并勾选 全量数据初始化, 其余选项默认

  • 抉择须要迁徙同步的 collection

  • 确认创立工作

  • 工作主动做 构造迁徙 全量迁徙 增量同步

校验数据

  • 程序造数据,采纳 MySQL -> MongoDB -> MongoDB

  • 工作失常运行一段时间后,进行造数据
  • 点击 MongoDB -> MongoDB 工作 详情 更多 > 创立类似工作,第二步抉择 数据校验

  • 数据校验 OK

常见问题

目前对 sharding 版本的 MongoDB 反对如何?

CloudCanal 反对 MongoDB sharding 版本,如果作为源端,须要一一配置底下正本集实例,也就是迁徙同步工作存在多个,作为对端,则将 sharding 实例当作单个实例写入即可。

单个 collection 蕴含多种主键数据怎么办?

CloudCanal 全量迁徙是通过 “id” 进行分页扫描进行,所以如果 “id” 类型多种,则会导致位点获取或者断点续传出问题。

后续针对这种状况,咱们思考应用无主键形式进行解决。

反对其余对端数据源么?

目前凋谢 MongoDB 到 Kafka , MySQL,TiDB, MongoDB,如果各位有需要,能够在社区反馈给咱们。

总结

本文简略介绍了如何应用 CloudCanal  进行 MongoDB -> MongoDB 数据迁徙同步。各位读者敌人,如果你感觉还不错,请点赞、评论加转发吧。

正文完
 0