一种数据库同步的方法和装置的制造方法_5

文档序号:8487865阅读:来源:国知局
[0194]源端中继服务器将N条第一响应消息通过M个数据传输通道发送给目标端服务器。
[0195]基于前述相同构思,目标端服务器连接多个目标数据库时,则目标端服务器需要同步所有与该目标端服务器连接的目标数据库,目标端服务器也需分别为每个目标数据库构造一条第一请求消息,用于获取该目标数据库需同步的数据变更事件。假设该目标端服务器连接的N个目标数据库,目标端服务器构造了 N条第一请求消息。
[0196]进一步,较佳的,本发明实施例中,目标端服务器向源端中继服务器发送该N条第一请求消息时,可建立TCP连接的数据传输通道。较佳的,多条请求消息可共用一个数据传输通道,较优的方案为,一条请求消息占用一个数据传输通道,即M等于N,此时,目标端服务器可通过N条数据传输通道向源端中继服务器发送N条第一请求消息,从而提高了目标端服务器连接多个目标数据库时的数据传输效率,同时降低同步延时。较佳的,源端中继服务器可通过该M个数据传输通道向该目标端服务器返回N条第一响应消息。
[0197]较佳的,配置参数至少包括目标数据库标识号、目标数据库的类型、目标数据库存储的数据表的目标数据表标识号、目标数据表标识号与源数据库中的源数据表标识号的对应关系;
[0198]源端中继服务器接收目标服务器发送的注册请求,其中,注册请求是该目标服务器启动时,加载完与该目标服务器连接的目标数据库的配置参数之后发送的;
[0199]源端中继服务器向该目标服务器发送注册响应,以使该目标服务器与源端中继服务器建立连接。
[0200]具体来说,与源端中继服务器连接的目标端服务器配置有目标数据库的配置参数,配置参数包括与该目标端服务器连接的所有目标数据库标识号、目标数据库的类型、目标数据库存储的数据表的目标数据表标识号、目标数据表标识号与源数据库中的源数据表标识号的对应关系等。而且源端中继服务器至少连接两个目标端服务器。
[0201 ] 较佳的,目标端服务器中预先配置有与该目标端服务器对应连接的目标数据库的配置参数,接着目标端服务器加载完成该配置参数之后,目标端服务器向源端中继服务器发送注册请求,以便进行登录。本发明实施例也支持在目标端服务器的正常运行过程对预先配置的目标数据库的配置参数进行修改,修改之后需对应的该目标端服务器进行设置或重启。
[0202]较佳的,当目标数据库发生变动时,如增加、修改或升级某个目标数据库,则仅需对应增加、修改或重启与该新增目标数据库连接的目标端服务器,并对应增加或更改该目标端服务器中的该目标数据库对应的配置参数,之后将该发生变动的目标数据库的配置参数对应加载在与该发生变动的目标数据库连接的目标端服务器中。当该发生变动的目标端服务器参数加载完并进行重启之后,该发生变动的目标端服务器会向源端中继服务器进行注册。较佳的,目标端服务器每次重启后,均执行注册过程。具体注册过程为:
[0203]源端中继服务器接收目标端服务器发送的注册请求,其中,注册请求是该目标端服务器启动时,加载完与该目标端服务器连接的目标数据库的配置参数之后发送的;源端中继服务器向该目标端服务器发送注册响应,以使该目标端服务器与源端中继服务器建立连接。
[0204]当发生变动的目标端服务器在源端中继服务器中注册成功之后,源端中继服务器与该目标端服务器即建立连接,该发生变动的目标数据库即可与源数据库之间进行数据同步。该过程中源端中继服务器以及与该源端中继服务器连接的其它目标端服务器均未进行重启。进而与该未进行重启的目标端服务器连接的目标数据库的数据同步过程也不会中断,从而实现多个目标数据库与源数据库之间的数据同步,且当某个目标数据库发生变化时,其它目标数据库的数据同步过程不受影响。
[0205]可见,由于源端中继服务器连接目标端服务器,目标端服务器连接目标数据库,且目标端服务器配置有目标数据库的配置参数,因此,当某个目标数据库发生变动,如新增一个目标数据库时,仅需要修改该新增的目标数据库对应连接的目标端服务器中的配置参数,并重启该目标端服务器即可,而不需要重启源端中继服务器,因此,其它未进行参数配置修改的目标端服务器不需重启,进而与该未进行参数配置修改的目标端服务器连接的目标数据库的数据同步过程也不会中断,从而实现多个目标数据库与源数据库之间的数据同步,且当某个目标数据库发生变化时,其它目标数据库的数据同步过程不受影响。
[0206]较佳的,目标端服务器对目标数据库执行同步操作,具体包括:
[0207]目标端服务器根据对应连接的目标数据库的类型,将第一响应消息或第三响应消息中的第一全局标识号之后的数据变更事件转换为目标数据库的操作语言所对应的数据变更事件,并对目标数据库执行同步操作。
[0208]较佳的,目标端服务器对目标数据库执行同步操作,具体包括:
[0209]数据变更事件为二进制格式;
[0210]当该目标端服务器对应连接的目标数据库为关系型数据库时,目标端服务器根据对应连接的目标数据库的类型,将第一响应消息中的第一全局标识号之后的数据变更事件转换为结构化查询语句(Structured Query Language,简称SQL)语句,并对目标数据库执行同步操作;
[0211]当该目标端服务器对应连接的目标数据库为非关系型数据库时,目标端服务器根据对应连接的目标数据库的类型,将第一响应消息中的第一全局标识号之后的数据变更事件转换为软件开发工具包(Software Development Kit,简称SDK)语句,并对目标数据库执行同步操作。
[0212]具体来说,目标端服务器从源端中继服务器或源端历史服务器获取数据变更事件之后,较佳的,目标端服务器根据对应连接的目标数据库的类型,将第一全局标识号之后的数据变更事件转换为目标数据库的操作语言所对应的数据变更事件,并对目标数据库执行同步操作。
[0213]由于源端中继服务器将实时捕获的数据变更事件解析为数据变更事件,该数据变更事件为一中立的二进制格式,进而通过目标端服务器转换为其它多种格式,如SQL语句、SDK语句等。目标端服务器具有格式转换功能,当目标端服务器接收到该二进制格式的数据变更事件之后,可根据目标数据库的类型,将第一全局标识号之后的数据变更事件转换为目标数据库的操作语言所对应的数据变更事件,并对目标数据库执行同步操作。因此,目标数据库与源数据库结构或类型不一致时,如源数据库为关系型数据库,目标数据库为非关系型数据库时,目标端服务器可根据目标数据库的类型对数据变更事件进行转换,从而实现了源数据库与目标数据库的同步,进而实现了源数据库与目标数据库结构类型不同时的数据同步。
[0214]较佳的,本发明实施例的源数据库和目标数据库之间的关系可为以下几种:
[0215](I)源数据库和目标数据库之间可为同类型且同版本数据库,如源数据库为DB2-V9,目标数据库为DB2-V9 ;
[0216](2)源数据库和目标数据库可为同类型但不同版本数据库,如源数据库为DB2-V9,目标数据库为DB2-V10 ;
[0217](3)源数据库和目标数据库可为不同类型,如源数据库为DB2,目标数据库为MySql ;
[0218](4)源数据库和目标数据库可为结构不一致的异构数据库,如源数据库为关系型数据库DB2,而目标数据库为非关系型数据库,非关系型数据库如MongoDB、Redis等;
[0219](5)较佳的,目标数据库还可为一些非数据库形式的联机系统,如目标数据库的形式可为消息队列、索引文件更新模块等。
[0220]较佳的,本发明实施例中的源数据库为关系型数据库,通过本发明实施例所提供的方法可实现异构数据库之间的数据同步。
[0221]较佳的,数据变更事件为二进制格式;当该目标端服务器对应连接的目标数据库为关系型数据库时,目标端服务器根据对应连接的目标数据库的类型,将第一全局标识号之后的数据变更事件转换为SQL语句,并对目标数据库执行同步操作;
[0222]当该目标端服务器对应连接的目标数据库为非关系型数据库时,目标端服务器根据对应连接的目标数据库的类型,将第一全局标识号之后的数据变更事件转换为SDK语句,并对目标数据库执行同步操作。
[0223]具体实施中,本发明实施例中目标端服务器至少连接两个目标数据库,源端中继服务器也可连接多个源数据库,本发明实施例可实现将多个源数据库中的数据同步至多个目标数据库中。
[0224]较佳的,配置参数包括目标数据库标识号、目标数据库的类型;目标端服务器至少连接两个目标数据库,请求消息中还携带该目标数据库标识号;响应消息中还携带该目标数据库标识号,以使目标端服务器根据该目标数据库标识号确定出该目标数据库,并根据该目标数据库的类型,将第一全局标识号之后的数据变更事件转换为该目标数据库的操作语言所对应的数据变更事件,并对该目标数据库执行同步操作。
[0225]具体来说,当目标端服务器至少连接两个目标数据库时,目标端服务器中可配置与该目标端服务器连接的所有目标数据库的配置参数,目标端服务器可对应构造一条包含所有目标数据库需同步的全局标识号的请求消息,也可分别构造多条请求消息,其中每条请求消息中均携带一个目标数据库的标识号,以及该目标数据库对应的第一全局标识号。
[0226]进一步,当同一个目标端服务器所连接的两个目标数据库的类型或结构不同时,目标端服务器可分别将获取的每个目标数据库所对应的待同步的数据变更事件分别转换为该目标数据库的操作语言所对应的数据变更事件,并对每个与该目标端服务器连接的目标数据库执行同步操作。
[0227]从上述内容可以看出:由于源端中继服务器根据该数据变更事件的源数据表标识号,将数据变更事件保存至源数据表标识号对应的事件队列中,如此,当目标数据库储存的数据表仅为部分源数据库储存的数据表时,即目标数据库仅需同步部分源数据库中的数据表时,源端中继服务器则可快速从数据表对应的事件队列中确定出第一全局标识号之后的数据变更事件,并发送给目标端服务器,以使目标端服务器对目标数据库执行同步操作,可见,由于源端中继服务器对数据变更事件进行了归类,因此提高了源端中继服务器筛选数据变更事件的效率,从而提高了目标数据库储存的数据表为源数据库储存的全部数据表的部分数据表时的数据同步效率。
[0228]综上所述,由于源端历史服务器储存的数据变更事件的最远日期远于所述源端中继服务器储存的数据变更事件的最远日期,因此当第一全局标识号对应的数据变更事件的生成时间与当前时间的时间差不小于第一中断时长,从源端历史服务器获取所述第一全局标识号之后的数据变更事件,否则,从源端中继服务器获取所述第一全局标识号之后的数据变更事件。可见,源端历史服务器存储空间较大,可存储时间较长的数据变更事件,而源端中继服务器中仅存储较新的数据变更事件,因此,目标端服务器若发生较长时间的中断,源端中继服务器中可能已经没有中断点处的数据变更事件,则目标端服务器可从源端历史服务器中获取中断点处的数据变更事件,进一步,由于源端历史服务器和源端中继服务器的功能分离,发生中断的目标端服务器可从源端历史服务器中获取历史数据变更事件,处于正常工作状态的目标端服务器可继续从源端中继服务器获取数据变更事件,如此,源端中继服务器中的负荷量不会因发生中断的目标端服务器恢复正常工作而加重,因此保证了未发生中断的目标端服务器执行数据同步效率不变的同时,提高发生中断的目标端服务器自动恢复正常工作状态的效率。
[0229]进一步由于目标端服务器连接目标数据库,且目标端服务器配置有目标数据库的配置参数,因此,当某个目标数据库发生变动,如新增一个目标数据库时,仅需要修改该新增的目标数据库对应连接的目标端服务器中的配置参数,并重启该目标端服务器即可,因此,其它未进行参数配置修改的目标端服务器不需重启,进而与该未进行参数配置修改的目标端服务器连接的目标数据库的数据同步过程也不会中断,从而实现多个目标数据库与源数据库之间的数据同步,且当某个目标数据库发生变化时,其它目标数据库的数据同步过程不受影响。
[0230]图3示例性示出本发明实施例提供一种数据库同步的装置的结构示意图。
[0231]基于相同构思,本发明实施例提供一种数据库同步的装置,如图3所示,包括与源数据库101连接的源端服务器107,与源端服务器107连接的目标端端服务器103,与目标端服务器103连接的目标数据库104。源端服务器107包括源端中继服务器102和源端历史服务器105,源端中继服务器102与源数据库101、目标端服务器103以及源端历史服务器105连接,源端历史服务器105与源端中继服务器102、目标端服务器103连接。较佳的,目标端服务器103也可连接非数据库类型的系统108。
[0232]目标端服务器,包括确定单元301、第一获取单元302、第二获取单元303:
[0233]确定单元,用于根据预设对应关系确定目标端服务器所连接的目标数据库中目标数据标识号在源数据库中所对应的源数据标识号,并确定出目标数据表标识号对应的已同步的日期最新数据变更事件的第一全局标识号;其中,源数据标识号与目标数据标识号一一对应;其中,数据变更事件是源端服务器实时捕获源数据库产生的数据变更事件得到的;数据变更事件包括该数据变更事件的生成时间;
[0234]第一获取单元,用于若第一全局标识号对应的数据变更事件的生成时间与当前时间的时间差不小于第一中断时长,则从源端历史服务器获取第一全局标识号之后的数据变更事件,并根据从源端历史服务器获取的数据变更事件对目标数据库执行同步操作;其中,每条数据变更事件包括该数据变更事件对应的全局标识号;源端历史服务器储存的数据变更事件的最远日期远于源端中继服务器储存的数据变更事件的最远日期;
[0235]第二获取单元,用于若第一全局标识号对应的数据变更事件的生成时间与当前时间的时间差小于第一中断时长,则从源端中继服务器获取第一全局标识号之后的数据变更事件,并根据从源端中继服务器获取的数据变更事件对目标数据库执行同步操作;目标端服务器配置有目标数据库的配置参数。
[0236]较佳的,源端历史服务器,用于:
[0237]向源端中继服务器发送第二请求消息;其中,第二请求消息中携带源端历史服务器需同步的源数据表标识号对应的已同步的日期最新数据变更事件的全局标识号;源端历史服务器根据第二响应消息中的数据变更事件对应的源数据表标识号,将数据变更事件保存至源数据表标识号对应的事件队列中;其中,每个源数据表标识号对应一个事件队列,每个事件队列对应一个事件队列标识号;
[0238]源端中继服务器,用于:
[0239]根据第二请求消息,将源数据表标识号对应的已同步的日期最新数据变更事件的全局标识号之后的数据变更事件携带于第二响应消息中,并将第二响应消息发送给源端历史服务器。
[0240]较佳的,第一获取单元,具体用于:
[0241]向源端历史服务器发送第三请求消息;其中,第三请求消息携带目标端服务器对应连接的目标数据库需同步的至少一个源数据表标识号对应的事件队列标识号,以及源数据表标识号对应的数据表已同步的日期最新数据变更事件的第一全局标识号;其中,至少一个目标数据库储存单个源数据库储存的全部数据表中的部分数据表;
[0242]源端历史服务器,具体用于:
[0243]根据第三请求消息,从对应的事件队列中将第三请求消息中的第一全局标识号之后的数据变更事件携带于第三响应消息中,并将第三响应消息发送给目标端服务器,以使目标端服务器对目标数据库执行同步操作。
[0244]较佳的,第一获取单元,具体用于:
[0245]向源端历史服务器发送第三请求消息;其中,第三请求消息携带目标端服务器对应连接的目标数据库需同步的至少一个源数据表标识号对应的事件队列标识号,以及源数据表标识号对应的数据表已同步的日期最新的数据变更事件的生成时间;其中,至少一个目标数据库储存单个源数据库储存的全部数据表中的部分数据表;
[0246]源端历史服务器,具体用于:
[0247]根据第三请求消息,从对应的事件队列中将第三请求消息中的已同步的日期最新的数据变更事件的生成时间之后的数据变更事件携带于第三响应消息中,并将第三响应消息发送给目标端服务器,以使目标端服务器对目标数据库执行同步操作。
[0248]较佳的,第一获取单元,具体用于:
[0249]通过M个数据传输通道向源端历史服务器发送N条第三请求消息;其中,M为大于等于I的正整数,M小于等于N ;每条数据传输通道至少承载一条第三请求消息;
[0250]源端历史服务器,具体用于:
[0251]将N条第三响应消息通过M个数据传输通道发送给目标端服务器。
[0252]较佳的,源端历史服务器,具体用于:
[0253]通过M个数据传输通道向源端中继服务器发送N条第二请求消息;其中,M为大于等于I的正整数,M小于等于N ;每条数据传输通道至少承载一条第二请求消息;
[0254]源端中继服务器,具体用于:
[0255]将N条第二响应消息通过M个数据传输通道发送给源端历史服务器。
[0256]较佳的,源端中继服务器,具体用于:
[0257]源端中继服务器实时捕获源数据库产生的数据变更事件;其中,每条数据变更事件至少包括该数据变更事件对应的全局标识号、该数据变更事件对应的源数据库中的源数据表标识号;
[0258]源端中继服务器根据数据变更事件的源数据表标识号,将数据变更事件保存至源数据表标识号对应的事件队列中;其中,每个源数据库的每个源数据表标识号对应一个事件队列,每个事件队列至少对应一个源数据表标识号,每个事件队列对应一个事件队列标识号;
[0259]源端中继服务器接收目标端服务器发送的第一请求消息;其中,第一请求消息中携带目标端服务器对应连接的目标数据库需同步的至少一个源数据表标识号对应的事件队列标识号、源数据表标识号对应的数据表已同步的日期最新数据变更事件的第一全局标识号;其中,至少一个目标数据库储存单个源数据库储存的全部数据表中的部分数据表;目标端服务器配置有与目标端服务器连接的目标数据库的配置参数;
[0260]源端中继服务器根据第一请求消息,从事件队列标识号对应的事件队列中将第一全局标识号之后的数据变更事件携带于第一响应消息中,并将第一响应消息发送给目标端服务器,以使目标端服务器对目标数据库执行同步操作。
[02
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1