掌桥专利:专业的专利平台
掌桥专利
首页

用于实现数据库双向同步的同步节点装置

文献发布时间:2023-06-19 11:57:35


用于实现数据库双向同步的同步节点装置

技术领域

本发明涉及数据库双向同步技术领域,具体地说是用于实现数据库双向同步的同步节点装置。

背景技术

在生产环境中,由于性能、可用性等需要,同类的数据需要分布在不同的数据库中处理,如异地的两个数据库中,两个数据库按照一定规则分别会更新逻辑上属同一个表的数据,同时还要求一个数据库A中数据改变(包括增、删、改操作)要同步到另一个数据库B中,同样另一个数据库B的数据改变也要同步到此数据库A中。常用的数据库单向同步方式不能简单用于该场景中,例如基于日志的数据同步方式,因为该种方式会造成同步操作陷入死循环。

公开号为CN103970833B的中国专利公开了一种基于日志的异构数据库同步系统中双向同步数据循环的解决方法,包括以下步骤:在进行双向同步的数据库中分别建立特殊表;当增量数据由源数据库传输到目的数据库时,首先在目的数据库中插入一条特殊表数据,然后在目的数据库中执行完毕所有增量数据,最后在目的数据库手动提交增量数据事务;进行增量数据同步时具体操作如下:从日志中以事务为单位获取增量数据,检查事务中是否包含一条数据库B的特殊表B的插入数据,如果此条插入数据存在且数据的来源为数据库A,则不再将增量数据同步至数据库A;否则,将增量数据同步至数据库A。该发明在不影响数据库性能的同时,利用事务的原子性,简单方便地解决了数据循环的问题。但该专利也有一个问题,一要在双方库中建特殊表,还要手动提交增量数据事务,实际生产系统经常是不被允许的,因此该方法难以实施,使用场景受限。

云消息服务平台CMSP是一个分布式的消息系统,它可以缓存和传输消息,并能够分布式部署。

如何在不对双方数据库做任何改变、不需要手动提交增量数据事务的情况下,达到数据库双向同步且不会死循环的目的,并提供性能,是需要解决的技术问题。

发明内容

本发明的技术任务是针对以上不足,提供用于实现数据库双向同步的同步节点装置,来解决如何在不对双方数据库做任何改变、不需要手动提交增量数据事务的情况下,达到数据库双向同步且不会死循环的技术问题。

第一方面,本发明提供用于实现数据库双向同步的同步节点装置,配置于数据库上,用于实现数据库之间的双向同步,所述同步节点中配置有:

云消息服务节点CMSP,所述云消息服务节点CMSP用于缓存和发送对端数据库的增量数据;

双向同步入库模块,所述双向同步入库模块与所述云消息服务节点CMSP连接,用于从云消息服务节点CMSP中获取来自对方数据库的数据库增量数据,将上述对端数据库的增量数据存入本端数据库;

增量数据日志模块,所述增量数据日志模与所述双向同步入库模块连接,用于记录对端数据库的增量数据;

双向同步采集模块,所述双向同步采集模块用于采集其对应数据库本端数据库的数据库变化数据增量数据,并将上述本端数据库的增量数据据与存储于增量数据日志模块中的对端数据库的增量数据进行比对,如果增量数据日志模块中没有记录上述本端数据库的增量数据变化数据,将所述本端数据库的增量数据变化数据发送至云消息服务节点CMSP中,并通过云消息服务节点CMSP中将所述本端数据库的增量数据变化数据发送至对方数据库。

作为优选,所述增量数据包括每条增量记录对应的相关信息,包括主键或索引列的key值、hash值、增量变化类型以及记录时间。

作为优选,所述增量变化类型包括增加、修改和删除。

作为优选,所述双向同步采集模块将本端数据库的增量数据据与存储于增量数据日志模块中的对端数据库的增量数据进行比对时,采用主键或索引列的Key值、生成的完整记录的hash值与增量数据日志模块保存的数据库增量数据进行核对,二者完全一致,才认为是来自于对端数据库中的数据库增量数据,则不需要同步。

作为优选,所述增量数据日志模块中配置有线程,所述线程用于根据设置的增量数据过期时间和记录时间,周期性删除过期的增量数据日志,以节省存储资源和保持增量数据日志模块的运行效率。

作为优选,双向同步的数据库为同构数据库或异构数据库,且所述数据库不限于两个。

作为优选,所述云消息服务节点CMSP可替换为相关功能的消息服务软件。

第二方面,本发明提供数据库双向同步方法,包括如下步骤:

对于双向同步的数据库,每个数据库均配置一个如权利要求1-7任一项所述的用于实现数据库双向同步的同步节点装置;

对于每个数据库,通过云消息服务节点CMSP缓存和发送对端数据库的增量数据;

对于每个数据库,通过双向同步入库模块从云消息服务节点CMSP中获取对端数据库的增量数据,将上述对端数据库的增量数据存入本端数据库;

对于每个数据库,通过增量数据日志模记录对端数据库的增量数据;

对于每个数据库,通过双向同步采集模块采集本端数据库的增量数据,并将上述本端数据库的增量数据与存储于增量数据日志模块中的对端数据库的增量数据进行比对,如果增量数据日志模块中没有记录上述本端数据库的增量数据,将所述本端数据库的增量数据发送至云消息服务节点CMSP中,并通过云消息服务节点CMSP中将所述本端数据库的增量数据发送至对方数据库。

作为优选,所述双向同步采集模块将本端数据库的增量数据与存储于增量数据日志模块中的对端数据库的增量数据进行比对时,采用主键或索引列的Key值、生成的完整记录的hash值与增量数据日志模块保存的数据库增量数据进行核对,二者完全一致,才认为是来自于对端数据库中的数据库增量数据,则不需要同步。

作为优选,通过增量数据日志模块中配置的线程,根据设置的增量数据过期时间和记录时间,周期性删除过期的增量数据日志,以节省存储资源和保持增量数据日志模块的运行效率。

本发明的用于实现数据库双向同步的同步节点装置具有以下优点:在数据库上配置同步节点装置后,可以不对双方数据库做任何改变的情况下,即不对双方数据库建特殊表,也不需要手动提交增量数据事务的情况下,达到数据库双向同步且不会死循环的目的,同时具备更高的性能。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

下面结合附图对本发明进一步说明。

图1为实施例1用于实现数据库双向同步的同步节点装置的工作原理框图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互结合。

本发明实施例提供用于实现数据库双向同步的同步节点装置,用于解决如何在不对双方数据库做任何改变、不需要手动提交增量数据事务的情况下,达到数据库双向同步且不会死循环的技术问题。

实施例1:

本发明的用于实现数据库双向同步的同步节点装置,配置于数据库上,用于实现数据库之间的双向同步,该同步节点中配置有云消息服务节点CMSP、双向同步入库模块、增量数据日志模块以及双向同步采集模块,云消息服务节点CMSP用于缓存和发送对端数据库的增量数据;双向同步入库模块与所述云消息服务节点CMSP连接,用于从云消息服务节点CMSP中获取来自对方数据库的数据库增量数据,将上述对端数据库的增量数据存入本端数据库;增量数据日志模与所述双向同步入库模块连接,用于记录对端数据库的增量数据双向同步采集模块用于采集其对应数据库本端数据库的数据库变化数据增量数据,并将上述本端数据库的增量数据据与存储于增量数据日志模块中的对端数据库的增量数据进行比对,如果增量数据日志模块中没有记录上述本端数据库的增量数据变化数据,将所述本端数据库的增量数据变化数据发送至云消息服务节点CMSP中,并通过云消息服务节点CMSP中将所述本端数据库的增量数据变化数据发送至对方数据库。

本实施例中,增量数据包括每条增量记录对应的相关信息,包括主键或索引列的key值、hash值、增量变化类型以及记录时间;增量变化类型包括增加、修改和删除等。

双向同步采集模块将本端数据库的增量数据据与存储于增量数据日志模块中的对端数据库的增量数据进行比对时,采用主键或索引列的Key值、生成的完整记录的hash值与增量数据日志模块保存的数据库增量数据进行核对,二者完全一致,才认为是来自于对端数据库中的数据库增量数据,则不需要同步。

云消息服务节点CMSP可替换为相关功能的消息服务软件。

本实施例的用于实现数据库双向同步的同步节点装置,可以配置在异构数据库或同构数据库之间,在不对数据库做改变的基础上实现数据库同步。

具体地,工作流程为:

数据库A的云消息服务节点CMSP中获取来自数据库B的数据库增量数据,将数据库增量数据入库到数据库A,并存储到到数据库A的增量数据日志模块中;

数据库A的双向同步采集模块负责采集数据库A的数据库变化数据,并将采集到的数据库变化数据与存储于增量数据日志模块的数据库增量数据进行比对,如增量数据日志模块无该信息则将数据库变化数据记录到云消息服务节点CMSP中,并通过云消息服务节点CMSP将数据库A的数据库增量数据发送到数据库B,从而实现数据库同步。

作为本实施例的改进,在增量数据日志模块中配置有线程,所述线程用于根据设置的增量数据过期时间和记录时间,周期性删除过期的增量数据日志,以节省存储资源和保持增量数据日志模块的运行效率。

实施例2:

本发明的数据库双向同步方法,实现同构数据库或异构数据库之间的公布。步骤如下:

S100、对于双向同步的数据库,每个数据库均配置一个实施例1公开的用于实现数据库双向同步的同步节点装置;

S200、对于每个数据库,通过云消息服务节点CMSP缓存和发送对端数据库的增量数据;

S300、对于每个数据库,通过双向同步入库模块从云消息服务节点CMSP中获取对端数据库的增量数据,将上述对端数据库的增量数据存入本端数据库;

S400、对于每个数据库,通过增量数据日志模记录对端数据库的增量数据;

S500、对于每个数据库,通过双向同步采集模块采集本端数据库的增量数据,并将上述本端数据库的增量数据与存储于增量数据日志模块中的对端数据库的增量数据进行比对,如果增量数据日志模块中没有记录上述本端数据库的增量数据,将所述本端数据库的增量数据发送至云消息服务节点CMSP中,并通过云消息服务节点CMSP中将所述本端数据库的增量数据发送至对方数据库。

本实施例中,双向同步采集模块将本端数据库的增量数据与存储于增量数据日志模块中的对端数据库的增量数据进行比对时,采用主键或索引列的Key值、生成的完整记录的hash值与增量数据日志模块保存的数据库增量数据进行核对,二者完全一致,才认为是来自于对端数据库中的数据库增量数据,则不需要同步。

基于上述步骤,对于要双向同步的数据库A和数据库B,数据库A端和数据库B端各设置一个同步节点,每个同步节点各安装一个双向同步采集模块、双向同步入库模块、增量数据日志模块及云消息服务节点CMSP,两端同步节点的各模式协同执行双向同步。

对于数据库A端节点,双向同步采集模块负责采集数据库A的变化信息,并将采集到的数据库A变化信息与存储到增量数据日志模块的数据库变化信息比对,如增量数据日志模块无该信息则记录到云消息服务节点CMSP中发送到数据库B;双向同步入库模块负责从云消息服务节点CMSP中获取来自数据库B的同步信息并入库到数据库A和存储到增量数据日志模块中;增量数据日志模块用于记录来自于数据库B的增量数据信息;云消息服务节点CMSP用于缓存和发送数据库增量数据。

对于数据库B端节点,双向同步采集模块负责采集数据库B的变化信息,并将采集到的数据库B变化信息与存储到增量数据日志模块的数据库变化信息比对,如增量数据日志模块无该信息则记录到云消息服务节点CMSP中发送到数据库A;双向同步入库模块负责从云消息服务节点CMSP中获取来自数据库A的同步信息并入库到数据库B和存储到增量数据日志模块中;增量数据日志模块用于记录来自于数据库A的增量数据信息;云消息服务节点CMSP用于缓存和发送数据库增量数据。

作为改进,通过增量数据日志模块中配置的线程,根据设置的增量数据过期时间和记录时间,周期性删除过期的增量数据日志,以节省存储资源和保持增量数据日志模块的运行效率。

需要说明的是,上述各流程和各系统结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。

以上各实施例中,硬件单元可以通过机械方式或电气方式实现。例如,一个硬件单元可以包括永久性专用的电路或逻辑(如专门的处理器,FPGA或ASIC)来完成相应操作。硬件单元还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。

上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。

相关技术
  • 用于实现数据库双向同步的同步节点装置
  • 双向同步通信的一种两线实现装置及采用该装置实现双向同步通信的方法
技术分类

06120113117166