背景

公司日本房地产业务,主要服务对象中国、港澳台地区有在日购房或移民日本需求的客户,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个两个库的存在,相当舒服