本发明属于多数据库的联机数据交互领域,具体涉及一种跨机房数据库的数据一致性校验方法。
背景技术:
伴随着B2B电子商务行业的发展,互联网服务业务越来越多,用户基数也越来越大,为保障可靠性的需求,网站多会部署在在不同地域的机房中,各机房中部署数据库系统,并提供完整的网站服务,各机房数据库之间数据互相复制,保证各机房都有一套完整的数据。然而,多机房最大的挑战是机房之间因网络延迟而带来的数据更新延迟,最终导致各机房数据库之间的数据不一致。现有主备数据库校验一致性技术中都是将在同一时间的主数据库和备用数据库进行比对以确定两个数据库之间的数据是否已实现同步,然而,因数据同步一般是在主数据库发生数据更新后,主数据库再将更新的数据同步到备用数据库中,这样就导致数据同步过程中会存在一定的延时,如果以同一时间点两个数据库之间的数据进行比对的话,往往会因为时间延迟问题导致本该判定为一直的数据被判为不一致;常用的数据库一致性技术校验方法是先对数据库中的表关键字排序,随后再以相应的算法比较,这类解决方案占用诸如内存、swap空间能大量数据库资源,在数据量巨大的时候尤为明显,甚至影响数据库的性能。
为在不影响数据库性能的前提下解决数据库不一致的问题,专利“数据库一致性校验方法及系统、定位数据库差异的方法及系统(申请号:201310704107.X)”做了技术探究,提出一种校验数据库不一致性的方法,具体步骤包括:a.按照预定条件将主数据库与备数据库中的数据行分组;b.计算主数据库每一分组及备数据库每一分组的md5值;c.将所计算的主数据库的每一分组的md5值与相应的备数据库分组的md5值比较,如果主数据库所有分组的md5值与相应的备数据库分组的md5值一致,则表明主数据库与备数据库一致。还提供相应的系统,以及基于该方法的定位数据库差异的方法及系统。该专利虽然能够以较小的计算量及网络数据传输量,定位到存在差异的数据,但该专利仍旧还仅停留在主备数据库一致性校验的研究上,而且采用分组形式校验并不适用于大量不一致数据,反而将带来因不一致数据分散在不同分组而导致需要重复查询数据的问题,同时该专利也没有对如何实现跨地域数据库间的数据自动化定时校验给予明确的解决方案。
技术实现要素:
为解决现有技术存在的缺陷,本发明目的是,提供一种跨机房数据库数据一致性校验的方法,通过在跨地域的数据库间部署消息系统,并预先配置校验任务信息,包括校验频率、有校验需要的数据库表及校验字段;当校验启动后,能按照预先设置的校验频率,定时地启动校验操作,并在校验任务过程中持续地收集各个数据库表内某一具体数据的校验值,实时反馈校验结果,不仅保证在跨地域环境中自动化且高效地发现不一致的问题,而且能准确定位到具体的数据,有利于提高数据库不一致性问题的解决速度。
本发明的技术方案是,一种跨机房数据库数据一致性校验的方法,具体步骤包括:步骤1:一致性校验环境的设置,具体为:在各个地域的机房内分别部署主节点数据库和子节点数据库,且每个数据库中设有相同的表结构;主节点数据库和子节点数据库之间构建消息系统,实现跨地域数据库间以消息传递的方式传输校验值;
步骤2:配置校验任务信息,校验任务信息包括校验执行的频率、有校验需求的数据库表及有校验需求的表字段;
步骤3:按照校验执行的频率,每隔固定的时间段,主节点数据库主动触发校验任务,待校验任务开始后,主节点数据库将校验任务信息,包括“有校验需求的数据库、表及有校验需求的表字段”,以消息传递的形式,通过数据库间的消息系统发送至各个子节点数据库;
步骤4:各个子节点数据库接收到校验任务信息后,提取信息中数据库、数据表及表字段信息指令,当前子节点数据库中从本数据库中查询数据表的特定表字段,并按照表主键排序提取具体数据并通过加密算法的计算,生成唯一的校验值,并将最终的校验值结果以消息传递的形式,通过数据库间的消息系统批量发送至主节点数据库;
步骤5:主节点数据库一直保持接收各子节点数据库发送数据的状态,一边接收校验结果,一边对校验结果进行比对,并判断各个子节点的校验结果是否一致;
如果一致,表明各机房数据库中的数据是一致的;
如果不一致,表明各机房数据库中的数据是不一致的,记录不一致的数据;
步骤6:待主节点数据库将所有子节点数据库发送的校验值全部比对结束后,将所有已记录的不一致数据存储,以做后续的分析;
步骤7:按照校验的频率,每当过一个间隔期,特定数据表中特定字段的校验任务重新开启,转步骤2:
有益效果:本发明与现有技术相比,具备的技术效果有:
(1)本发明通过构建消息系统,搭建跨地域数据库之间的消息传递机制,并以提前配置校验任务信息的方式,控制数据一致性校验的按需执行和执行频率,实现跨地域数据库一致性校验的自动化;
(2)本发明通过对每一条数据单独计算校验值,以最小的成本,不仅准确定位到存在差异的主或子节点数据库,而且能具体到数据库中的某一个数据,有利于提高数据库不一致性问题的解决速度;
(3)本发明通过为数据库及表校验配置校验信息,将校验以任务的形式交由主节点管理和控制,实现针对特定表及表内特定字段的定时校验,提高校验过程的自动化和定制化。
附图说明
图1为本发明实施例中数据库一致性校验结构示意图
图2为本发明实施例中数据库一致性校验流程图;
图3本发明实施例中主数据库发送数据校验信息命令的示意图
图4本发明实施例中各子节点反馈校验值结果的示意图
具体实施方式
为了使本发明的目的、技术方案更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
图1为本发明实施例中数据库一致性校验结构示意图,本发明实施例中有4个数据中心,即IDC1、IDC2、IDC3及IDC4,4个数据中心可设置在不同地域,也可设置在不同地域;每一个机房内部署一个数据库,即DB1、DB2、DB3、DB4,且4个数据库的表结构保持一致;根据实际的校验需求,选取任意数据中心内的数据库作为主节点和子节点;本发明实施例选用IDC1中的数据库DB1作为主节点,其余3个数据库作为子节点;主节点数据库和子节点数据库之间构建消息系统MQ,通过消息系统MQ,跨地域数据库间以消息传递的方式传输校验值;
图2是本发明实施例中数据库一致性校验方法的流程图,应用于校验主数据库与备数据库之间的一致性。以验证数据表A内数据一致性为例,校验步骤具体包括:
步骤201:配置数据表A校验的任务信息,具体包括校验执行的频率、有校验需求的数据库表及有校验需求的表字段,并交由主节点数据库DB1管理此任务;
步骤202:按照校验频率,每隔固定的时间段,主节点数据库DB1主动触发校验任务,待校验任务开始后,主节点数据库DB1将校验任务信息,包括“有校验需求的数据库、表及有表A的表字段;接着,按照表主键排序提取表A中的具体数据,结合任意加密算法计算,生成关于表A的唯一校验值,并将最终的校验值结果以消息传递的形式,通过数据库间的消息系统MQ批量发送至主节点数据库DB1,如图4;
步骤204:主节点数据库DB1一直保持接收各子节点发送数据的状态,一边接收校验结果,一边对校验结果进行比对,并判断各个子节点的校验结果是否保持一致;
如果一致,表明各机房数据库中的数据是一致的,删除已参与校验的结果;
如果不一致,表明各机房数据库中的数据是不一致的,记录不一致的数据库及数据中心;
步骤205:待主节点将所有子节点发送的校验值全部比对结束后,将所有已记录的不一致数据存储,以便后续提取进行分析;
步骤206:按照校验的频率,每当过一个间隔期,特定数据表中特定字段的校验任务重新开启,转步骤201:
所属领域的普通技术人员应当理解:以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。