一种数据容灾同步的方法及装置的制造方法

文档序号:10552790阅读:363来源:国知局
一种数据容灾同步的方法及装置的制造方法
【专利摘要】本发明公开了一种数据容灾同步的方法及装置,该方法包括接收源数据库发送的日志信息,从所述日志信息中获取源数据库的数据修改操作;将所述数据修改操作的参数绑定到与所述数据修改操作的类型相匹配的语句模板中,生成数据修改操作语句;将所述数据修改操作语句添加到语句组中;当语句组的语句数量达到预设值时,在目标数据库中查找到与源数据库中修改的数据具有相同存储位置的数据,运行所述数据修改操作语句,完成对在目标数据库中查找到的数据的修改。该方法实现提高数据容灾同步效率。
【专利说明】
一种数据容灾同步的方法及装置
技术领域
[0001]本发明涉及数据容灾技术领域,特别是涉及一种数据容灾同步的方法及装置。
【背景技术】
[0002]目前,数据容灾通常包括如下部署模式:主备模式、双主模式、跨地域主备容灾模式、异构数据库复制模式等。其中,双主模式是指两个节点的数据库都支持业务访问,支持负载均衡,当一个节点发生故障时,可以将业务切换到另一个节点。上述任何部署模式都需要复制源节点的更新事务到对端节点,复制的方式通常有物理复制和逻辑复制,物理复制是将数据文件物理位置的修改复制到目标节点同样的位置,这种方式只适用于主备模式。逻辑复制是将源节点的修改操作记录为日志信息,在目标节点上以重放事务的方式完成数据同步复制。逻辑复制的处理流程比物理复制复杂的多,其处理性能与系统的可靠性紧密相关。
[0003]但是,现有数据库双主模式中,源数据库在修改事务时产生日志信息,接收端将日志信息还原成结构化查询语言sql,对于每一条日志信息,均需要解析和编译sql语句,并逐条执行sql语句,完成事务同步,执行的语句数目没有限制,这种方式使得数据库同步效率低下,即数据容灾同步效率较低。

【发明内容】

[0004]本发明的目的是提供一种数据容灾同步的方法及装置,以实现提高数据容灾同步效率。
[0005]为解决上述技术问题,本发明提供一种数据容灾同步的方法,包括:
[0006]接收源数据库发送的日志信息,从所述日志信息中获取源数据库的数据修改操作;
[0007]将所述数据修改操作的参数绑定到与所述数据修改操作的类型相匹配的语句模板中,生成数据修改操作语句;
[0008]将所述数据修改操作语句添加到语句组中;
[0009]当语句组的语句数量达到预设值时,在目标数据库中查找到与源数据库中修改的数据具有相同存储位置的数据,运行所述数据修改操作语句,完成对在目标数据库中查找到的数据的修改。
[0010]优选的,所述语句模板包括3条结构化sql查询语句,分别用于实现删除、插入和更新功能。
[0011]优选的,所述方法还包括:
[0012]当所述数据修改操作的参数与语句模板不匹配时,利用目标数据库的内置函数调整所述语句模板,使所述数据修改操作的参数与调整后的语句模板相匹配,将所述数据修改操作的参数绑定到调整后的语句模板中,生成数据修改操作语句。
[0013]优选的,将所述数据修改操作语句添加到语句组中,包括:
[0014]确定所述数据修改操作语句的类型;
[0015]依据所述数据修改操作语句的类型,将所述数据修改操作添加至与所述数据修改操作语句的类型相同的语句组中。
[0016]优选的,将所述数据修改操作语句添加到语句组中之前,还包括:
[0017]利用目标数据库的申请函数申请所述语句组。
[0018]本发明还提供一种数据容灾同步的装置,包括:
[0019]接收模块,用于接收源数据库发送的日志信息,从所述日志信息中获取源数据库的数据修改操作;
[0020]绑定模块,用于将所述数据修改操作的参数绑定到与所述数据修改操作的类型相匹配的语句模板中,生成数据修改操作语句;
[0021 ]添加模块,用于将所述数据修改操作语句添加到语句组中;
[0022]修改模块,用于当语句组的语句数量达到预设值时,在目标数据库中查找到与源数据库中修改的数据具有相同存储位置的数据,运行所述数据修改操作语句,完成对在目标数据库中查找到的数据的修改。
[0023]优选的,所述语句模板包括3条结构化sql查询语句,分别用于实现删除、插入和更新功能。
[0024]优选的,所述装置还包括:
[0025]调整模块,用于当所述数据修改操作的参数与语句模板不匹配时,利用目标数据库的内置函数调整所述语句模板,使所述数据修改操作的参数与调整后的语句模板相匹配,将所述数据修改操作的参数绑定到调整后的语句模板中,生成数据修改操作语句。
[0026]优选的,所述添加模块包括:
[0027]确定单元,用于确定所述数据修改操作语句的类型;
[0028]添加单元,用于依据所述数据修改操作语句的类型,将所述数据修改操作添加至与所述数据修改操作语句的类型相同的语句组中。
[0029]优选的,所述装置还包括:
[0030]申请模块,用于利用目标数据库的申请函数申请所述语句组。
[0031]本发明所提供的一种数据容灾同步的方法及装置,接收源数据库发送的日志信息,从所述日志信息中获取源数据库的数据修改操作;将所述数据修改操作的参数绑定到与所述数据修改操作的类型相匹配的语句模板中,生成数据修改操作语句;将所述数据修改操作语句添加到语句组中;当语句组的语句数量达到预设值时,在目标数据库中查找到与源数据库中修改的数据具有相同存储位置的数据,运行所述数据修改操作语句,完成对在目标数据库中查找到的数据的修改。可见,将数据修改操作语句添加至语句组中,当语句组的语句数量达到预设值时才执行数据修改操作语句,如此语句组中包括的数据修改操作语句是有限的,从而有效提高源数据库和目标数据库同步的效率,即通过在目标库中设置语句组,从而提升数据容灾同步效率。
【附图说明】
[0032]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0033]图1为本发明所提供一种数据容灾同步的方法的流程图;
[0034]图2为本发明所提供一种数据容灾同步的装置的结构示意图。
【具体实施方式】
[0035]本发明的核心是提供一种数据容灾同步的方法及装置,以实现提高数据容灾同步效率。
[0036]为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0037]请参考图1,图1为本发明所提供一种数据容灾同步的方法的流程图,该方法包括:
[0038]Sll:接收源数据库发送的日志信息,从日志信息中获取源数据库的数据修改操作;
[0039]S12:将数据修改操作的参数绑定到与数据修改操作的类型相匹配的语句模板中,生成数据修改操作语句;
[0040]S13:将数据修改操作语句添加到语句组中;
[0041 ] S14:当语句组的语句数量达到预设值时,在目标数据库中查找到与源数据库中修改的数据具有相同存储位置的数据,运行数据修改操作语句,完成对在目标数据库中查找到的数据的修改。
[0042]可见,该方法将数据修改操作语句添加至语句组中,当语句组的语句数量达到预设值时才执行数据修改操作语句,如此语句组中包括的数据修改操作语句是有限的,从而有效提高源数据库和目标数据库同步的效率,即通过在目标库中设置语句组,从而提升数据容灾同步效率。
[0043]其中,数据库双主模式下,在业务切换的过程中,对源数据库所做的更新操作需要更新到目标数据库,具体是将源数据库的修改操作记录为日志信息,在目标数据库上以重新执行日志信息的方式完成对目标数据库的同步操作。因此,接收到的源数据库发送的日志信息,该日志信息用于表示源数据库中的数据修改操作,目标数据库接收源数据库发送的日志信息后,可将其放入目标数据库的缓冲区。
[0044]其中,语句模板包括3条结构化sql查询语句,分别用于实现删除、插入和更新功會K。
[0045]基于上述方法,具体的,当数据修改操作的参数与语句模板不匹配时,利用目标数据库的内置函数调整语句模板,使数据修改操作的参数与调整后的语句模板相匹配,将数据修改操作的参数绑定到调整后的语句模板中,生成数据修改操作语句。
[0046]其中,将数据修改操作语句添加到语句组中的过程具体为:确定数据修改操作语句的类型;依据数据修改操作语句的类型,将数据修改操作添加至与数据修改操作语句的类型相同的语句组中。
[0047]其中,将数据修改操作语句添加到语句组中之前,利用目标数据库的申请函数申请语句组。
[0048]基于上述方法,详细的,接收源数据库发送的日志信息,日志信息用于表示源数据库中的数据修改操作;获取日志信息中数据修改操作的类型和参数,并将获取的数据修改操作的参数绑定到与数据修改操作的类型对应的语句模板中,生成数据修改操作语句;在数据修改操作的参数与语句模板不匹配时,利用内置函数调整语句模板,并将数据修改操作的参数绑定到调整后的语句模板中生成数据修改操作语句;将数据修改操作语句添加到语句组,当语句组的语句数量达到预设值时,运行数据修改操作语句,完成对目标数据库中相同存储位置的数据的修改。如此主要通过在目标数据库中设置语句组,从而提高数据容灾同步效率,也就提高了数据库同步效率,用以解决在数据容灾双主系统中事务复制同步的性能瓶颈问题,从而提升事务复制同步的效率。
[0049]其中,由于数据修改操作的类型包括删除,插入和更新三种,因此目标数据库包括对应的语句模板,该语句模板包括3条结构化sql查询语句,3条sql语句分别用于实现删除,插入和更新功能,在目标数据库启动过程中,语句模板中所包括的3条sql语句完成编译和解析,目标数据库获取数据修改操作的类型和参数后,将获取的数据修改操作的参数绑定到与数据修改操作的类型对应的语句模板中生成数据修改操作语句,其中数据修改操作语句形式是上述3条sql语句。
[0050]当目标数据库将获取的数据修改操作的参数绑定到对应的语句模板中生成数据修改操作语句后,运行数据修改操作语句,完成对目标数据库中相同存储位置的数据的修改。其中相同存储位置指的是源数据库中数据与目标数据库对应数据具有相同的表项标识和字段标识。
[0051]其中,数据修改操作的类型包括删除、插入和修改,参数包括数据库中表名、表中的字段名、以及字段名所对应的参数等。将获取的数据修改操作的参数绑定到与数据修改操作的类型对应的语句模板中,生成数据修改操作语句之前还需要生成语句模板,从而在执行数据修改操作语句时,只需将获得的数据修改操作的参数绑定到语句模板执行即可。
[0052]其中,由于根据日志信息生成的数据修改操作语句可能存在数目较多的情况,因此在目标数据库中可以设置语句组。首先确定数据修改操作语句的类型,并根据数据修改操作语句的类型将数据修改操作语句添加到对应的语句组。具体可以将数据修改操作语句进行分类,并根据分类添加到对应语句组中,其中分类方式可以为将同类型数据修改操作语句放入同一个语句组,也可以为不同类型,此处不限制分类方式。将数据修改操作语句添加至语句组可以通过gm_execute_add函数实现,即利用gm_execute_add函数将数据修改操作语句添加到语句组中。
[0053]在目标数据库启动时,目标数据库通过一个申请函数申请上述语句组。目标数据库在执行上述的数据修改操作语句之前,首先要通过申请函数申请语句组。申请函数可以为gm_a Ilo c_group函数,即利用gm_a Ilo c_group函数申请语句组。
[0054]其中,目标数据库为每一个语句组设置预设值,使得语句组中包括的数据修改操作语句有限,从而有效提高源数据库与目标数据库同步的效率。并且数据库双主模式下,源数据库和目标数据库都支持业务访问,数据库中数据以表的形式存储。每一个二维表对应一个关系,二维表中的每一行有若干个数据项,每一列称为一个字段。所谓数据的表项标识表示的是该数据属于哪一张表。所谓数据的字段标识指的是该数据属于哪一列。源数据库的表项和字段与目标数据库的表项和字段存在对应关系。同时存在对应关系的表项则具有相同的表项标识。存在一一对应关系的字段则具有相同的字段标识。因此,如果在源数据库的一个数据与目标数据库中的另一个数据具有相同的表项标识和字段标识,则可以确定这两个数据具有相同的存储位置。
[0055]在业务切换的过程中,对源数据库所做的更新操作需要更新到目标数据库,当确定完日志信息所涉及的源数据库中的数据的表项标识和字段标识后,则需要对目标数据库中相同表项标识和字段标识的数据执行对应类型的数据修改操作语句。其中执行数据修改操作语句可通过gm_eXeCute_all函数实现,目标数据库执行完一个语句组中所有的数据修改操作语句后,可以通过目标数据库中的初始化函数对该语句组进行初始化,经过初始化后的语句组可以被重复使用。或者若该语句组不再被使用时,可以通过目标数据库中的释放函数来释放语句组所占用的资源。其中,初始化函数形式为gm_clean_group,释放函数形式可以为gm_free_group 0
[0056]详细的,数据修改操作语句具体为3条sql语句,分别具有删除,插入和更新的功會K。
[0057]3条sql语句模板分别为:
[0058](l)、Delete sql:
[0059]DELETE FROM TBL_DML WHERE A=:A AND NVL(ROffVER,0) =:ROffVER
[0060](2)、Insert sql:
[0061]INSERT INTO TBL_DML(A,B,C,D,ROffVER)VALUES(:A,:B,:C,:D,:ROffVER)
[0062](3)、Update sql:
[0063]UPDATE TBL_DML SET A = NVLFN(:A,A,:0) ,B = NVLFN(:B,B,:1),
[0064]C = NVLFN(: C, C,: 2),D = NVLFN(: D,D,: 3),ROffVER = NVLFN(: ROffVER,ROffVER,:4)
[0065]WHERE A =: A AND NVL(ROffVER,0) =:ROffVER
[0066]其中,每个表创建时都需创建主键,同时添加ROWVER用作两端操作的冲突处理。NVL(R0WVER,0)功能为:如果ROWVER为NULL,则NVL函数返回O,否则返回ROWVER的值。
[0067]其中,获取日志信息中数据修改操作的类型和参数,并将获取的数据修改操作的参数绑定到与数据修改操作的类型对应的语句模板中,生成数据修改操作语句的过程具体包括:获取日志信息中数据修改操作的类型和参数,在数据修改操作的参数不匹配语句模板时,利用内置函数调整语句模板,并将数据修改操作的参数绑定到调整过的语句模板中生成数据修改操作语句。
[0068]其中,内置函数具体为:NVLFN(express1nl,express1n2,val),其功能为:如果express1nlSNULL,ivalS“l”,则返回NULL。
[0069]当val 为 “O”,则返回 express 1n2。如果express 1n I 为非NULL,则返回express1nl0
[0070]该内置函数用于对一个字段进行多种操作,多种操作包括:修改为新值、不修改、置空。
[0071]上述修改操作模板包括的3条sql语并不能实现对多个字段进行多种操作,即数据修改操作的参数存在不匹配语句模板的情况,因此通过将用来完成更新操作的sql语句与该内置函数结合可以实现对多个字段进行多种操作,从而提升了数据容灾同步的效率。
[0072]请参考图2,图2为本发明所提供一种数据容灾同步的装置的结构示意图,该装置包括:
[0073]接收模块101,用于接收源数据库发送的日志信息,从日志信息中获取源数据库的数据修改操作;
[0074]绑定模块102,用于将数据修改操作的参数绑定到与数据修改操作的类型相匹配的语句模板中,生成数据修改操作语句;
[0075]添加模块103,用于将数据修改操作语句添加到语句组中;
[0076]修改模块104,用于当语句组的语句数量达到预设值时,在目标数据库中查找到与源数据库中修改的数据具有相同存储位置的数据,运行数据修改操作语句,完成对在目标数据库中查找到的数据的修改。
[0077]可见,该装置将数据修改操作语句添加至语句组中,当语句组的语句数量达到预设值时才执行数据修改操作语句,如此语句组中包括的数据修改操作语句是有限的,从而有效提高源数据库和目标数据库同步的效率,即通过在目标库中设置语句组,从而提升数据容灾同步效率。
[0078]具体的,语句模板包括3条结构化sql查询语句,分别用于实现删除、插入和更新功會K。
[0079]所述装置还包括:调整模块,用于当数据修改操作的参数与语句模板不匹配时,利用目标数据库的内置函数调整语句模板,使数据修改操作的参数与调整后的语句模板相匹配,将数据修改操作的参数绑定到调整后的语句模板中,生成数据修改操作语句。
[0080]添加模块包括:
[0081 ]确定单元,用于确定数据修改操作语句的类型;
[0082]添加单元,用于依据数据修改操作语句的类型,将数据修改操作添加至与数据修改操作语句的类型相同的语句组中。
[0083]详细的,所述装置还包括:申请模块,用于利用目标数据库的申请函数申请语句组。需要说明的是,该装置应用于目标数据库中。
[0084]综上,本发明所提供的一种数据容灾同步的方法及装置,接收源数据库发送的日志信息,从日志信息中获取源数据库的数据修改操作;将数据修改操作的参数绑定到与数据修改操作的类型相匹配的语句模板中,生成数据修改操作语句;将数据修改操作语句添加到语句组中;当语句组的语句数量达到预设值时,在目标数据库中查找到与源数据库中修改的数据具有相同存储位置的数据,运行数据修改操作语句,完成对在目标数据库中查找到的数据的修改。可见,将数据修改操作语句添加至语句组中,当语句组的语句数量达到预设值时才执行数据修改操作语句,如此语句组中包括的数据修改操作语句是有限的,从而有效提高源数据库和目标数据库同步的效率,即通过在目标库中设置语句组,从而提升数据容灾同步效率。
[0085]以上对本发明所提供的一种数据容灾同步的方法及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
【主权项】
1.一种数据容灾同步的方法,其特征在于,包括: 接收源数据库发送的日志信息,从所述日志信息中获取源数据库的数据修改操作; 将所述数据修改操作的参数绑定到与所述数据修改操作的类型相匹配的语句模板中,生成数据修改操作语句; 将所述数据修改操作语句添加到语句组中; 当语句组的语句数量达到预设值时,在目标数据库中查找到与源数据库中修改的数据具有相同存储位置的数据,运行所述数据修改操作语句,完成对在目标数据库中查找到的数据的修改。2.如权利要求1所述的方法,其特征在于,所述语句模板包括3条结构化sql查询语句,分别用于实现删除、插入和更新功能。3.如权利要求1所述的方法,其特征在于,还包括: 当所述数据修改操作的参数与语句模板不匹配时,利用目标数据库的内置函数调整所述语句模板,使所述数据修改操作的参数与调整后的语句模板相匹配,将所述数据修改操作的参数绑定到调整后的语句模板中,生成数据修改操作语句。4.如权利要求1所述的方法,其特征在于,将所述数据修改操作语句添加到语句组中,包括: 确定所述数据修改操作语句的类型; 依据所述数据修改操作语句的类型,将所述数据修改操作添加至与所述数据修改操作语句的类型相同的语句组中。5.如权利要求1至4中任意一项所述的方法,其特征在于,将所述数据修改操作语句添加到语句组中之前,还包括: 利用目标数据库的申请函数申请所述语句组。6.一种数据容灾同步的装置,其特征在于,包括: 接收模块,用于接收源数据库发送的日志信息,从所述日志信息中获取源数据库的数据修改操作; 绑定模块,用于将所述数据修改操作的参数绑定到与所述数据修改操作的类型相匹配的语句模板中,生成数据修改操作语句; 添加模块,用于将所述数据修改操作语句添加到语句组中; 修改模块,用于当语句组的语句数量达到预设值时,在目标数据库中查找到与源数据库中修改的数据具有相同存储位置的数据,运行所述数据修改操作语句,完成对在目标数据库中查找到的数据的修改。7.如权利要求6所述的装置,其特征在于,所述语句模板包括3条结构化sql查询语句,分别用于实现删除、插入和更新功能。8.如权利要求6所述的装置,其特征在于,还包括: 调整模块,用于当所述数据修改操作的参数与语句模板不匹配时,利用目标数据库的内置函数调整所述语句模板,使所述数据修改操作的参数与调整后的语句模板相匹配,将所述数据修改操作的参数绑定到调整后的语句模板中,生成数据修改操作语句。9.如权利要求6所述的装置,其特征在于,所述添加模块包括: 确定单元,用于确定所述数据修改操作语句的类型; 添加单元,用于依据所述数据修改操作语句的类型,将所述数据修改操作添加至与所述数据修改操作语句的类型相同的语句组中。10.如权利要求6至9中任意一项所述的装置,其特征在于,还包括: 申请模块,用于利用目标数据库的申请函数申请所述语句组。
【文档编号】G06F17/30GK105912427SQ201610282532
【公开日】2016年8月31日
【申请日】2016年4月29日
【发明人】薛强, 陈良华, 杜彦魁
【申请人】浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1