使用 MongoShake 实现 MongoDB 数据同步

使用 MongoShake 实现 MongoDB 数据同步

对于跨境的服务来说,经常需要在两端做数据同步,我所在的团队,就有这样的需求,但是目前是采用定时任务,触发脚本来实现数据同步的。

需求

我们的团队需要将我们的中国 MongoDB 数据库的数据同步到日本的数据库中,因为国内的服务会产生数据,而日本那边的业务则是用这些数据做分析。有些情况下可能还需要将日本那边修改的数据再同步回国内数据库。

调研了市面上所有 MongoDB 数据库的同步工具,目前就只有 MongoShake 符合我们的要求。

简介

MongoShake 是阿里巴巴基于 Go 实现的一个 MongoDB 数据同步的开源项目,基于mongodb oplog的集群复制工具,可以满足迁移和同步的需求,进一步实现灾备和多活功能。已经在 MongoDB 云版数据库中得到了广泛应用,但是很多特性只有阿里云的 MongoDB 数据库才能使用,而自己采用开源版本搭建的数据库则无法支持,这是因为阿里云对 MongoDB 的核心做了修改。

MongoShake 支持多种方式实现数据的同步,其中有 RPC、TCP、File、Kafka、自定义的 API 以及 Direct。我们主要采用的是 Direct 这种方式同步,获取源端的 Oplog 然后直接写入目标数据库的对应 NameSpace 中。

MongoShake 支持的同步模式有:全量加增量、全量和增量,可以按需修改配置文件来实现不同的同步模式。

同时支持黑白名单的设置,用于排除某些不需要同步的数据库或集合,或者仅同步指定的数据库或集合。

安装

评论