一种制造技术

技术编号:39505993 阅读:12 留言:0更新日期:2023-11-24 11:38
本发明专利技术特别涉及一种

【技术实现步骤摘要】
一种MongoDB双向同步系统及实现方法


[0001]本专利技术涉及数据库迁移
,特别涉及一种
MongoDB
双向同步系统及实现方法


技术介绍

[0002]MongoDB
是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的

它支持的数据结构非常松散,是类似
json

bson
格式,因此可以存储比较复杂的数据类型

[0003]Change Stream(
变更流
)
是从
MongoDB3.6
版本开始支持的一种新特性,是
MongoDB
向应用发布数据变更的一种方式,即数据库中有任何数据变化,应用端都可以得到通知,类似于触发器的概念

[0004]MongoDB
数据库双向同步,即为将
MongoDB
源数据库与目标数据库构建成双主架构,源数据库与目标数据库数据均可接收业务读写请求,实现源数据库与目标数据库之间的数据同步任务,保证源数据库与目标数据库的数据一致性

[0005]在双向同步过程中,如未作特殊处理,则
A
端数据经过正向同步过程写入
B
端后,经逆向同步过程增量数据会回到
A
端,同理再次经过正向同步过程写入
B
端,整个循环无终止条件,数据会在
A、B/>双端形成死循环

[0006]针对与
MongoDB
数据库的双向同步,专利文件
CN112667698A
公开了一种基于融媒体平台的
MongoDB
数据同步方法,该方法包括数据采集

数据处理和数据入库三个功能组件,支持仅全量同步

仅增量同步和先全量后增量同步三种同步模式,支持的源数据库为
MongoDB
副本集集群部署

主从模式集群部署

分片模式部署,支持数据同步效率和部署主机资源使用情况的权衡配置;能够满足数据库迁移,数据灾备,多活多中心数据库等多种业务场景

[0007]上述方法存在如下缺点:
[0008](1)oplog.rs
日志机制必须针对每个
shard
进行
tailingoplog
,并且这个过程中不能有
moveChunk
操作,否则结果可能乱序,该机制对
MongoDB
分片架构不太友好

[0009](2)oplog.rs
日志集合包含所有变更信息,直接操作该集合会大幅提升
MongoDB
数据库压力降低数据库性能,并且检索效率缓慢,对于部分集合同步操作不太友好

[0010](3)
对于双向同步数据回环问题的处理表述不明

[0011]为了解决上述问题,本专利技术提出了一种
MongoDB
双向同步系统及实现方法


技术实现思路

[0012]本专利技术为了弥补现有技术的缺陷,提供了一种简单高效的
MongoDB
双向同步系统及实现方法

[0013]本专利技术是通过如下技术方案实现的:
[0014]一种
MongoDB
双向同步系统,其特征在于:包括两个
MongoDB
数据库,分别为
MongoDB

a
库和
MongoDB

b
库,所述
MongoDB

a
库和
MongoDB

b
库双向同步,互为源数据库和目标数据库;
[0015]还包括正向采集模块,正向入库模块,逆向采集模块,逆向入库模块和
Redis
消息中间件;
[0016]所述
Redis
消息中间件作为连接双端进程的连接桥梁,接收正向采集模块
/
逆向采集模块写入的数据,为正向入库模块
/
逆向入库模块提供入库数据;
[0017]所述
Redis
消息中间件利用
Redis
事务机制处理双向同步数据回环问题,避免增量数据在源数据库和目的库间产生数据回环,进而保证双端数据库数据最终一致性

[0018]所述正向采集模块负责连接
MongoDB

a
库,基于
MongoDB
主从复制机制与
Change Stream
机制,实现
MongoDB
数据库全量数据及增量数据的采集及处理任务,最终写入到
Redis
消息中间件供正向入库模块消费;
[0019]所述正向入库模块负责连接
Redis
消息中间件,基于
PSYNC
主从复制机制模拟成
Redis
消息中间件的伪从机,消费
Redis
消息中间件中的数据,完成消息数据的解析过滤,最终将数据写入到
MongoDB

b


[0020]所述逆向采集模块负责连接
MongoDB

b
库,基于
MongoDB
主从复制机制与
Change Stream
机制,实现
MongoDB
数据库增量数据的采集与处理任务,最终写入到
Redis
消息中间件供逆向入库模块消费;
[0021]所述逆向入库模块负责连接
Redis
消息中间件,基于
PSYNC
主从复制机制模拟成
Redis
消息中间件的伪从机,消费
Redis
消息中间件中的数据,完成消息数据的解析过滤,最终将数据写入到
MongoDB

a


[0022]当增量数据写入
Redis
消息中间件时,变更数据的
objectid

md5
数据以
key

value
键值对的形式写入
Redis
消息中间件;相同的
objectid

md5
数据只能写入一次,因而当本端数据从另一端返回时,事务无法正常写入
Redis
消息中间件,破坏了数据循环条件,从而避免了增量数据在双端数据库中产生数据回环

[0023]一种...

【技术保护点】

【技术特征摘要】
1.
一种
MongoDB
双向同步系统,其特征在于:包括两个
MongoDB
数据库,分别为
MongoDB

a
库和
MongoDB

b
库,所述
MongoDB

a
库和
MongoDB

b
库双向同步,互为源数据库和目标数据库;还包括正向采集模块,正向入库模块,逆向采集模块,逆向入库模块和
Redis
消息中间件;所述
Redis
消息中间件作为连接双端进程的连接桥梁,接收正向采集模块
/
逆向采集模块写入的数据,为正向入库模块
/
逆向入库模块提供入库数据;所述
Redis
消息中间件利用
Redis
事务机制处理双向同步数据回环问题,避免增量数据在源数据库和目的库间产生数据回环,进而保证双端数据库数据最终一致性
。2.
根据权利要求1所述的
MongoDB
双向同步系统,其特征在于:所述正向采集模块负责连接
MongoDB

a
库,基于
MongoDB
主从复制机制与
Change Stream
机制,实现
MongoDB
数据库全量数据及增量数据的采集及处理任务,最终写入到
Redis
消息中间件供正向入库模块消费;所述正向入库模块负责连接
Redis
消息中间件,基于
PSYNC
主从复制机制模拟成
Redis
消息中间件的伪从机,消费
Redis
消息中间件中的数据,完成消息数据的解析过滤,最终将数据写入到
MongoDB

b

。3.
根据权利要求1所述的
MongoDB
双向同步系统,其特征在于:所述逆向采集模块负责连接
MongoDB

b
库,基于
MongoDB
主从复制机制与
Change Stream
机制,实现
MongoDB
数据库增量数据的采集与处理任务,最终写入到
Redis
消息中间件供逆向入库模块消费;所述逆向入库模块负责连接
Redis
消息中间件,基于
PSYNC
主从复制机制模拟成
Redis
消息中间件的伪从机,消费
Redis
消息中间件中的数据,完成消息数据的解析过滤,最终将数据写入到
MongoDB

a

。4.
根据权利要求2或3所述的
MongoDB
双向同步...

【专利技术属性】
技术研发人员:洪传玉苏玉玲徐士强李承林
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1