一种数据库同步方法、装置、服务器和存储介质制造方法及图纸

技术编号:22308254 阅读:15 留言:0更新日期:2019-10-16 08:21
本发明专利技术实施例公开了一种数据库同步方法、装置、服务器和存储介质,其中,方法包括:获取源数据库中发生数据变更时的原始SQL变更语句;将所述原始SQL变更语句发送到各子节点服务器,并指示所述各子节点服务器根据接收的所述原始SQL变更语句,对所述子节点服务器各自下游的目标数据库执行所述原始SQL变更语句。本发明专利技术实施例通过区块链的方式来进行数据库的数据同步,可以保证数据传输的可靠性,而且各数据库无需相互访问,可降低各数据库之间的耦合性,同时对各子节点下游的数据库执行原始SQL变更语句,便于解析。

A method, device, server and storage medium for database synchronization

【技术实现步骤摘要】
一种数据库同步方法、装置、服务器和存储介质
本专利技术实施例涉及数据库领域,尤其涉及一种数据库同步方法、装置、服务器和存储介质。
技术介绍
数据库应用中,为了应对巨大的数据访问量的问题,通常会采用主从复制(Master-Slave)的数据库架构模式,在此模式中,主库承担数据的增删改等变更操作,而从库承担查询操作,以减少对主库的访问压力,提高业务能力。在主从数据库模式下,为了满足业务的读写一致性,通过特定通信方式来传输主库的事务日志来实现数据库多个实例之间的数据同步。如图1所示,其示出了现有的MySQL数据库主从同步的方案,需要尽量缩短主库和从库之间的数据延迟。主库(Master)将所有的数据库变更记录写入到事务日志(Binarylog)文件中,当从库(Slave)连接到主库时,主库会开启一个日志文件导出线程,负责响应从库IO线程的请求,从库通过开启一个IO线程,请求主库的事务日志文件,并在接收到日志文件后将日志写入到relay-log文件中,同时从库会开启一个SQL线程以执行relay-log中的事件,以此实现主、从数据库之间的数据同步。然而,现有的数据库同步方式仍有以下两点不足:1)所有的从节点必须访问主库才能实现数据同步。2)主库的数据变更在从库执行时是通过从数据库的内部机制实现SQL重写的,无法直接获取到主库原生的SQL变更语句,不便于解析。
技术实现思路
本专利技术实施例提供一种数据库同步方法、装置、服务器和存储介质,已解决现有技术中存在的只能通过访问主库实现数据同步,且无法直接获取到原生的SQL变更语句的问题。第一方面,本专利技术实施例提供了一种数据库同步方法,应用于基于区块链构造的分布式网络中的目标节点服务器,所述分布式网络还包括多个子节点服务器,所述方法包括:获取源数据库中发生数据变更时的原始SQL变更语句;将所述原始SQL变更语句发送到各子节点服务器,并指示所述各子节点服务器根据接收的所述原始SQL变更语句,对所述子节点服务器各自下游的目标数据库执行所述原始SQL变更语句。第二方面,本专利技术实施例还提供了一种数据库同步装置,配置于基于区块链构造的分布式网络中的目标节点服务器,所述分布式网络还包括多个子节点服务器,所述装置包括:语句获取模块,用于获取源数据库中发生数据变更时的原始SQL变更语句;同步指示模块,用于将所述原始SQL变更语句发送到各子节点服务器,并指示所述各子节点服务器根据接收的所述原始SQL变更语句,对所述子节点服务器各自下游的目标数据库执行所述原始SQL变更语句。第三方面,本专利技术实施例还提供了一种服务器,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本专利技术任一实施例所述的数据库同步方法。第四方面,本专利技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本专利技术任一实施例所述的数据库同步方法。本专利技术实施例中,基于区块链构造的分布式网络中的目标节点服务器在获取源数据库中发生数据变更时的原始SQL变更语句后,将所述原始SQL变更语句发送到各子节点服务器,并指示所述各子节点服务器各自下游的目标数据库执行所述原始SQL变更语句。由此通过区块链的方式来进行数据库的数据同步,可以保证数据传输的可靠性,而且分布式网络各节点服务器下游的数据库无需相互访问,可降低各数据库之间的耦合性,同时对各子节点下游的数据库执行原始SQL变更语句,便于解析。附图说明图1是现有技术中的MySQL数据库主从同步的方法的示意图;图2为本专利技术实施例一中的数据库同步方法的流程图;图3是本专利技术实施例二中数据库同步装置的结构示意图;图4是本专利技术实施例三中的服务器的结构示意图。具体实施方式下面结合附图和实施例对本专利技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部结构。实施例一图2为本专利技术实施例一提供的数据库同步方法的流程图,本实施例可适用于将任一数据库的数据变更同步到其他数据库的情况,该方法可以由数据库同步装置来执行,该装置可以采用软件和/或硬件的方式实现,并可集成在服务器上。如图2所示,所述数据库同步方法应用于基于区块链构造的分布式网络中的目标节点服务器,分布式网络还包括多个子节点服务器,具体包括:S101、获取源数据库中发生数据变更时的原始SQL变更语句。其中,数据变更是指对数据库中某一个表的结构或表中的数据进行变更操作,例如向表中增加数据、删除数据或修改表结构等,也可以包括其他变更操作。示例性的,可通过对数据库执行SQL变更语句来实现数据变更。由此原始SQL变更语句也即是使数据可发生数据变更的SQL语句,在本专利技术实施例中,目标节点服务器上预先设置有数据探针,所述数据探针可基于通信协议访问源数据库,并监测源数据库中指定表的数据变更。由此,可通过数据探针获取源数据库中指定表发生数据变更时的原始SQL变更语句。具体的,通过数据探针获取所述源数据库中指定表发生数据变更时的原始SQL变更语句的操作可按如下步骤进行:S1.通过数据探针获取所述源数据库中所述指定表当前的表结构和表数据。S2.将所述指定表当前的表结构和表数据与上一次保存的指定表的表结构与表数据进行比对。其中,数据探针可以周期性的获取指定表的表结构与表数据,并在获取到当前表结构和表数据后与上一次保存的指定表的表结构与表数据进行比对,以确定变更数据。在此需要说明的是,在确定数据探针监测指定表后,将指定表初始状态下的表结构和表数据等信息保存,后续每比对完一次,都将当前表结构和表数据进行保存。S3.根据比对结果确定已变更的数据,并基于所述已变更的数据解析出原始SQL变更语句。示例性的,指定表为人员信息表(表名为test1),表中记录有各人员的id、名字(name)、性别(sex)、年龄(age)等。通过S1-S2比对,确定id=1的人员的年龄由21变成了23,则表明对该指定表中id=1的人员年龄进行修改。由于SQL语言的修改表中一行单列的语法规则为:update表名set列名1=值,列名2=值where条件;由此,基于语法规则解析出实现该数据变更的原始SQL变更语句为:updatetest1setage='23'whereid='1'。S102、将所述原始SQL变更语句发送到各子节点服务器,并指示所述各子节点服务器根据接收的所述原始SQL变更语句,对所述子节点服务器各自下游的目标数据库执行所述原始SQL变更语句。在各子节点服务器接收到原始SQL变更语句后,可直接对其下游的目标服务器执行原始SQL变更语句,以实现数据同步。示例性的,各各子节点服务器对各自下游的目标数据库执行updatetest1setage='23'whereid='1'语句,目标数据可直接将表test1中id=1的人员年龄修改为23。由于对目标服务器执行的是原始SQL变更语句,可提升数据同步的准确性和效率。在此需要说明的是,现有技术中从事务日志中获得的数据变更通常是由二进制或其它指定格式的数据表示的,后续需要将二进制或其它指定格式的数据解析成SQL语句,由此得到的S本文档来自技高网...

【技术保护点】
1.一种数据库同步方法,其特征在于,应用于基于区块链构造的分布式网络中的目标节点服务器,所述分布式网络还包括多个子节点服务器,所述方法包括:获取源数据库中发生数据变更时的原始SQL变更语句;将所述原始SQL变更语句发送到各子节点服务器,并指示所述各子节点服务器根据接收的所述原始SQL变更语句,对所述子节点服务器各自下游的目标数据库执行所述原始SQL变更语句。

【技术特征摘要】
1.一种数据库同步方法,其特征在于,应用于基于区块链构造的分布式网络中的目标节点服务器,所述分布式网络还包括多个子节点服务器,所述方法包括:获取源数据库中发生数据变更时的原始SQL变更语句;将所述原始SQL变更语句发送到各子节点服务器,并指示所述各子节点服务器根据接收的所述原始SQL变更语句,对所述子节点服务器各自下游的目标数据库执行所述原始SQL变更语句。2.根据权利要求1所述的方法,其特征在于,所述目标节点服务器上预先设置有数据探针,所述数据探针用于访问所述源数据库,并监测所述源数据库中指定表的数据变更;相应的,获取源数据库中发生数据变更时的原始SQL变更语句,包括:通过所述数据探针获取所述源数据库中指定表发生数据变更时的原始SQL变更语句。3.根据权利要求2所述的方法,其特征在于,通过所述数据探针获取所述源数据库中指定表发生数据变更时的原始SQL变更语句,包括:通过所述数据探针获取所述源数据库中所述指定表当前的表结构和表数据;将所述指定表当前的表结构和表数据与上一次保存的所述指定表的表结构与表数据进行比对;根据比对结果确定已变更的数据,并基于所述已变更的数据解析出原始SQL变更语句。4.根据权利要求1所述的方法,其特征在于,所述各子节点服务器还用于对所述原始SQL变更语句进行解析,并转换成可视化数据。5.一种数据库同步装置,其特征在于,配置于基于区块链构造的分布式网络中的目标节点服务器,所述分布式网络还包括多个子节点服务器,所述装置包括:语句获取模...

【专利技术属性】
技术研发人员:郑羽周雷皓段炜
申请(专利权)人:北京启迪区块链科技发展有限公司
类型:发明
国别省市:北京,11

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

1