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

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