MongoShake 两区域双向同步实践
文章目录
【注意】最后更新于 September 21, 2020,文中内容可能已过时,请谨慎使用。
背景
公司日本房地产业务,主要服务对象中国、港澳台地区有在日购房或移民日本需求的客户,C端数据库部署在中国,B端中介在日本,上传房源也在日本,为了保证速度,再日本也部署了一台数据服务,中介上传了新房源在日本区数据库,通过脚本代码同步到中国区,有些时候中国区下面的数据也需要同步到日本区,供日本区下管理后台读和写,也是有脚本代码同步。
分析
通过上面介绍的脚本同步,很明细有很多缺陷,比如:同步时间问题,两库数据不一致问题。
解决
使用 mongoshake 构建两地数据同步服务。
联系阿里云工程师,开启 Mongodb 全局 gid,拿到 gid 后根据 gid 配置到 MongoShake 里面:
- 同步进程 MongoShake1 负责A->B同步,则A的gid配置到MongoShake1参数里面;
- 同步进程 MongoShake2 负责B->A同步,则B的gid配置到MongoShake2的参数里面
这台用于处理数据同步的服务器最好单独一台,只处理这一个事物,如果这两台数据库地区一台在国内,一台在日本,经测试这台服务器最好开在日本,这样可以避免 CH 数据同步至 JP 丢包严重的问题。
插曲
当时 MongoShake 部署在国内服务器时,发现老是出现错误和丢失数据,很不稳定,经过排查是网络问题,部署在日本 ECS 服务器便解决了此问题。
点评
截止现在(2021年11月09日18:40:44),已经平稳运行了近2年,开发时完全不用必考虑2个两个库的存在,相当舒服
文章作者 BING
上次更新 2020-09-21