数据库快照同步处理方法及装置制造方法
【专利摘要】本发明公开了一种数据库快照同步处理方法及装置。该方法包括:确定源数据库和目标数据库;根据源数据库生成数据库快照,其中,数据库快照是用于将源数据库中的数据转移至目标数据库中的数据库,在数据库快照中包括用于执行同步操作的脚本文件;确定脚本文件中需要删除的脚本代码;对脚本文件进行修改,删除脚本文件中需要删除的脚本代码,得到修改后的脚本文件;通过修改后的脚本文件对数据库快照执行同步处理。通过本发明,解决了现有技术中数据库快照同步处理速度慢的问题。
【专利说明】数据库快照同步处理方法及装置
【技术领域】
[0001]本发明涉及数据处理领域,具体而言,涉及一种数据库快照同步处理方法及装置。
【背景技术】
[0002]随着大数据时代的来临,数据库的高可用性变得日益重要。然而在采用结构化查询语言的结构化查询语言系统(Structured Query Language Server,简称为SQL Server)中数据库复制技术是高可用性的一种方案。当源数据库变得不可用时,目标数据库将作为后备数据库,继续维持正常的系统运作。为了目标数据库能作为后备数据库,需要将源数据库做成一个数据库快照(snapshot)并将该数据库快照内容同步到目标数据库上去。
[0003]在数据库复制技术的执行过程中,需要初始化目标数据库。初始化目标数据库分为两个步骤,即,生成源数据库快照的步骤和将该数据库快照同步到目标数据库的步骤。然而在数据库快照同步的过程中,处理速度比较慢,耗时较长。
[0004]针对现有技术中数据库快照同步处理速度慢的问题,目前尚未提出有效的解决方案。
【发明内容】
[0005]本发明的主要目的在于提供一种数据库快照同步处理方法及装置,以解决现有技术中数据库快照同步处理速度慢的问题。
[0006]为了实现上述目的,根据本发明的一个方面,提供了一种数据库快照同步处理方法。
[0007]根据本发明的数据库快照同步处理方法包括:确定源数据库和目标数据库;根据源数据库生成数据库快照,其中,数据库快照是用于将源数据库中的数据转移至目标数据库中的数据库,在数据库快照中包括用于执行同步操作的脚本文件;确定脚本文件中需要删除的脚本代码;对脚本文件进行修改,删除脚本文件中需要删除的脚本代码,得到修改后的脚本文件;以及通过修改后的脚本文件对数据库快照执行同步处理。
[0008]进一步地,对脚本文件进行修改,删除脚本文件中需要删除的脚本代码,得到修改后的脚本文件包括:获取删除指令,其中,删除指令为用于删除脚本文件中需要删除的脚本代码的指令;根据删除指令对脚本文件中需要删除的脚本代码执行删除操作,得到修改后的脚本文件的脚本代码;获取写入指令,其中,写入指令用于将修改后的脚本文件的脚本代码写入脚本文件中;以及根据写入指令将修改后的脚本文件的脚本代码写入脚本文件中,得到修改后的脚本文件。
[0009]进一步地,在得到修改后的脚本文件之后,该方法还包括:获取覆盖指令,其中,覆盖指令为用于将修改后的脚本文件的脚本代码覆盖脚本文件的脚本代码的指令;以及根据覆盖指令,将修改后的脚本文件的脚本代码覆盖修改前脚本文件的脚本代码。
[0010]进一步地,根据源数据库生成数据库快照包括:获取第一预设代理程序,其中,第一预设代理程序为用于生成数据库快照的程序;根据第一预设代理程序得到生成指令,其中,生成指令为用于执行生成数据库快照操作的指令;以及根据生成指令生成数据库快照。
[0011]进一步地,通过修改后的脚本文件对数据库快照执行同步处理包括:获取第二预设代理程序,其中,第二预设代理程序为用于同步数据库快照的程序;根据第二预设代理程序,得到同步指令,其中,同步指令为用于执行同步数据库快照操作的指令;以及根据同步指令将修改后的数据库快照同步至目标数据库。
[0012]为了实现上述目的,根据本发明的另一方面,提供了一种数据库快照同步处理装置。
[0013]根据本发明的数据库快照同步处理装置包括:第一确定单元,用于确定源数据库和目标数据库;生成单元,用于根据源数据库生成数据库快照,其中,数据库快照是用于将源数据库中的数据转移至目标数据库中的数据库,在数据库快照中包括用于执行同步操作的脚本文件;第二确定单元,用于确定脚本文件中需要删除的脚本代码;修改单元,用于对脚本文件进行修改,删除脚本文件中需要删除的脚本代码,得到修改后的脚本文件;以及同步单元,用于通过修改后的脚本文件对数据库快照执行同步处理。
[0014]进一步地,修改单元包括:第一获取模块,用于获取删除指令,其中,删除指令为用于删除脚本文件中需要删除的脚本代码的指令;删除模块,用于根据删除指令对脚本文件中需要删除的脚本代码执行删除操作,得到修改后的脚本文件的脚本代码;第二获取模块,用于获取写入指令,其中,写入指令用于将修改后的脚本文件的脚本代码写入脚本文件中;以及写入模块,用于写入指令将修改后的脚本文件的脚本代码写入脚本文件中,得到修改后的脚本文件。
[0015]进一步地,该装置还包括:第三获取模块,用于获取覆盖指令,其中,覆盖指令为用于将修改后的脚本文件的脚本代码覆盖脚本文件的脚本代码的指令;以及覆盖模块,用于根据覆盖指令,将修改后的脚本文件的脚本代码覆盖修改前脚本文件的脚本代码。
[0016]进一步地,生成单元包括:第四获取模块,用于获取第一预设代理程序,其中,第一预设代理程序为用于生成数据库快照的程序;第五获取模块,用于第一预设代理程序得到生成指令,其中,生成指令为用于执行生成数据库快照操作的指令;以及生成模块,用于生成指令生成数据库快照。
[0017]进一步地,同步单元包括:第六获取模块,用于获取第二预设代理程序,其中,第二预设代理程序为用于同步数据库快照的程序;第七获取模块,用于第二预设代理程序,得到同步指令,其中,同步指令为用于执行同步数据库快照操作的指令;以及同步模块,用于同步指令将修改后的数据库快照同步至目标数据库。
[0018]对于上述数据库快照同步处理方法,通过确定源数据库和目标数据库;根据源数据库生成数据库快照,其中,数据库快照是用于将源数据库中的数据转移至目标数据库中的数据库,在数据库快照中包括用于执行同步操作的脚本文件;确定脚本文件中需要删除的脚本代码;对脚本文件进行修改,删除脚本文件中需要删除的脚本代码,得到修改后的脚本文件;通过修改后的脚本文件对数据库快照执行同步处理,解决了现有技术中数据库快照同步处理速度慢的问题,有效地提升了数据库快照同步处理速度。
【专利附图】
【附图说明】
[0019]构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0020]图1是根据本发明实施例的数据库快照同步处理方法的流程图;
[0021]图2是根据本发明实施例的数据库快照同步处理方法对脚本文件进行修改的示意图;以及
[0022]图3是根据本发明实施例的数据库快照同步处理装置的示意图。
【具体实施方式】
[0023]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
[0024]为了使本【技术领域】的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0025]需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0026]图1是根据本发明实施例的数据库快照同步处理方法的流程图。如图1所示,该方法包括如下的步骤SlOl至步骤S105:
[0027]步骤SlOI,确定源数据库和目标数据库。
[0028]在源数据库中确定源数据库和目标数据库。源数据库为发布数据库,目标数据库为订阅者数据库。将发布数据库中的数据同步至订阅者数据库中,当发布数据库不可用时,订阅者数据库可作为后备数据库维持系统正常运行。在本发明中,源数据库优选为SQLServer数据库,即在SQL Server数据库中确定源数据库和目标数据库。
[0029]步骤S102,根据源数据库生成数据库快照。
[0030]根据源数据库生成数据库快照,其中,数据库快照是源数据库的只读静态视图。优选地,源据库为SQL Server数据库。生成数据库快照之后,数据库快照在事务上与源数据库一致。在本发明实施例中的数据库快照用于将源数据库中的数据转移至目标数据库。
[0031]在数据库快照中包括用于执行同步操作的脚本文件。
[0032]具体地,获取第一预设代理程序,其中,第一预设代理程序为用于生成数据库快照的程序;根据第一预设代理程序得到生成指令,其中,生成指令为用于执行生成数据库快照操作的指令;以及根据生成指令生成数据库快照。
[0033]优选地,源数据库为SQL Server数据库,获取用于生成数据库快照的第一预设代理程序为SQL Server目录下的snapshot, exe代理程序,根据SQL Server目录下的snapshot, exe代理程序得到生成指令,根据生成指令生成数据库快照。
[0034]步骤S103,确定脚本文件中需要删除的脚本代码。
[0035]当源数据库为SQL Server数据库时,在SQL Server数据库中有一部分SQL语句是用于维护外键关系,很多数据库系统不需要进行维护外键关系,没有必要进行外键检查等操作,因此在数据库系统下就需要删除这些操作对应的脚本代码。即在数据库快照中确定脚本文件中需要删除的脚本代码。例如,脚本文件中外键维护的脚本代码为:
[0036]if obj ect_id ( ; sys.sp_msresavedforeignkeys’ )<0exec sys.sp_msdropferencingartic Ie
[0037]通过该步骤,确定出外键维护的脚本代码为需要删除的脚本代码。
[0038]步骤S104,对脚本文件进行修改,删除脚本文件中需要删除的脚本代码,得到修改后的脚本文件。
[0039]当源数据库为SQL Server数据库时,在SQL Server数据库中有一部分SQL语句是用于维护外键关系,很多数据库系统不需要进行维护外键关系,没有必要进行外键检查等操作,因此在数据库系统下就需要删除这些操作对应的脚本代码。即在数据库快照中删除脚本文件中需要删除的脚本代码。对脚本文件进行修改,删除脚本文件中需要删除的脚本代码,得到修改后的脚本文件。具体地,获取删除指令,其中,删除指令为用于删除脚本文件中需要删除的脚本代码的指令;根据删除指令对脚本文件中需要删除的脚本代码执行删除操作,得到修改后的脚本文件的脚本代码;获取写入指令,其中,写入指令用于将修改后的脚本文件的脚本代码写入脚本文件中;根据写入指令将修改后的脚本文件的脚本代码写入脚本文件中,得到修改后的脚本文件。
[0040]需要说明的是,上述的删除指令和写入指令,可以是接收外部输入的删除指令和写入指令,也可以是接收系统根据上一步操作自动生成的用于执行删除操作的删除指令和写入指令。
[0041]例如,如上述确定出需要删除的脚本代码,即需要删除的外键维护的脚本代码为:
[0042]if object_id( ‘sys.sp_msresavedforeignkeys> )〈Oexec sys.sp_msdropferencingartic Ie
[0043]通过该步骤,删除需要删除的脚本代码。
[0044]图2是根据本发明实施例的数据库快照同步处理方法对脚本文件进行修改的示意图。如图2所示,脚本文件为.pre文件,.pre文件中包括执行外键维护的脚本代码,如图2中.pre文件中的粗线所示。读取.pre文件中脚本代码;确定出.pre文件中需要删除的脚本代码,即粗线所示的脚本代码;删除.pre文件中需要删除的脚本代码,即删除.pre文件中粗线所示的脚本代码,得到更改后的.pre文件。
[0045]优选地,为了提升对脚本文件进行修改的效率,在.pre文件中删除需要删除的脚本代码,数据库快照中.pre文件的数量和源数据库中.pre文件数量相同,每个文件大小为Ik左右。即使是对于超大容量的数据库,对数据库所有的.pre文件进行自动修改,只需花极少的时间。
[0046]优选地,为了保证脚本文件中脚本代码的精确性,在本发明实施例提供的数据库快照同步处理方法中,该方法还包括:获取覆盖指令,其中,覆盖指令为用于将修改后的脚本文件的脚本代码覆盖脚本文件的脚本代码的指令;以及根据覆盖指令,将修改后的脚本文件的脚本代码覆盖修改前脚本文件的脚本代码。
[0047]需要说明的是,上述的覆盖指令,可以是接收外部输入的覆盖指令,也可以是接收系统根据上一步操作自动生成的用于执行删除操作的覆盖指令。
[0048]通过将修改后的脚本文件的脚本代码覆盖修改前脚本文件的脚本代码,保证了修改后脚本文件中脚本代码的精确性,从而根据精确的脚本文件中脚本代码同步处理,提升了数据库快照同步处理速度。
[0049]步骤S105,通过修改后的脚本文件对数据库快照执行同步处理。
[0050]通过修改后的脚本文件对数据库快照执行同步处理。
[0051]具体地,获取第二预设代理程序,其中,第二预设代理程序为用于同步数据库快照的程序;根据第二预设代理程序,得到同步指令,其中,同步指令为用于执行同步数据库快照操作的指令;根据同步指令将修改后的数据库快照同步至目标数据库。
[0052]优选地,源数据库为SQL Server数据库,获取用于同步数据库快照的第二预设代理程序为SQL Server目录下的Distrib.exe代理程序,根据SQL Server目录下的Distrib.exe代理程序得到同步指令,根据同步指令同步数据库快照。
[0053]本发明实施例提供的一种数据库快照同步处理方法,通过确定源数据库和目标数据库;根据源数据库生成数据库快照,其中,数据库快照是用于将源数据库中的数据转移至目标数据库中的数据库,在数据库快照中包括用于执行同步操作的脚本文件;确定脚本文件中需要删除的脚本代码;对脚本文件进行修改,删除脚本文件中需要删除的脚本代码,得到修改后的脚本文件;通过修改后的脚本文件对数据库快照执行同步处理。通过本发明,解决了现有技术中数据库快照同步处理速度慢的问题,有效地提升了数据库快照同步处理速度。
[0054]需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0055]本发明实施例还提供了一种数据库快照同步处理装置,需要说明的是,本发明实施例的数据库快照同步处理装置可以用于执行本发明实施例所提供的用于数据库快照同步处理方法。以下对本发明实施例提供的数据库快照同步处理装置进行介绍。
[0056]图3是根据本发明的实施例的数据库快照同步处理装置的示意图。如图3所示,该装置包括:第一确定单元10、生成单元20、第二确定单元30、修改单元40和同步单元50。
[0057]第一确定单元10,用于确定源数据库和目标数据库。
[0058]生成单元20,用于根据源数据库生成数据库快照,其中,数据库快照是用于将源数据库中的数据转移至目标数据库中的数据库,在数据库快照中包括用于执行同步操作的脚本文件。
[0059]具体地,该生成单元20包括:第四获取模块,用于获取第一预设代理程序,其中,第一预设代理程序为用于生成数据库快照的程序;第五获取模块,用于第一预设代理程序得到生成指令,其中,生成指令为用于执行生成数据库快照操作的指令;以及生成模块,用于生成指令生成数据库快照。
[0060]第二确定单元30,用于确定脚本文件中需要删除的脚本代码。
[0061]修改单元40,用于对脚本文件进行修改,删除脚本文件中需要删除的脚本代码,得到修改后的脚本文件。
[0062]具体地,该修改单元40包括:第一获取模块,用于获取删除指令,其中,删除指令为用于删除脚本文件中需要删除的脚本代码的指令;删除模块,用于根据删除指令对脚本文件中需要删除的脚本代码执行删除操作,得到修改后的脚本文件的脚本代码;第二获取模块,用于获取写入指令,其中,写入指令用于将修改后的脚本文件的脚本代码写入脚本文件中;以及写入模块,用于写入指令将修改后的脚本文件的脚本代码写入脚本文件中,得到修改后的脚本文件。
[0063]优选地,在本发明实施例提供的数据库快照同步处理装置中,该装置还包括:第三获取模块,用于获取覆盖指令,其中,覆盖指令为用于将修改后的脚本文件的脚本代码覆盖脚本文件的脚本代码的指令;以及覆盖模块,用于根据覆盖指令,将修改后的脚本文件的脚本代码覆盖修改前脚本文件的脚本代码。
[0064]同步单元50,用于通过修改后的脚本文件对数据库快照执行同步处理。
[0065]具体地,该同步单元50包括:第六获取模块,用于获取第二预设代理程序,其中,第二预设代理程序为用于同步数据库快照的程序;第七获取模块,用于第二预设代理程序,得到同步指令,其中,同步指令为用于执行同步数据库快照操作的指令;以及同步模块,用于同步指令将修改后的数据库快照同步至目标数据库。
[0066]本发明实施例提供的一种数据库快照同步处理装置,通过第一确定单元10确定源数据库和目标数据库;生成单元20根据源数据库生成数据库快照,其中,数据库快照是用于将源数据库中的数据转移至目标数据库中的数据库,在数据库快照中包括用于执行同步操作的脚本文件;第二确定单元30确定脚本文件中需要删除的脚本代码;修改单元40对脚本文件进行修改,删除脚本文件中需要删除的脚本代码,得到修改后的脚本文件;同步单元50通过修改后的脚本文件对数据库快照执行同步处理。通过本发明,解决了现有技术中数据库快照同步处理速度慢的问题,有效地提升了数据库快照同步处理速度。
[0067]显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0068]以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种数据库快照同步处理方法,其特征在于,包括: 确定源数据库和目标数据库; 根据所述源数据库生成数据库快照,其中,所述数据库快照是用于将所述源数据库中的数据转移至所述目标数据库中的数据库,在所述数据库快照中包括用于执行同步操作的脚本文件; 确定所述脚本文件中需要删除的脚本代码; 对所述脚本文件进行修改,删除所述脚本文件中需要删除的脚本代码,得到修改后的脚本文件;以及 通过所述修改后的脚本文件对所述数据库快照执行同步处理。
2.根据权利要求1所述的方法,其特征在于,对所述脚本文件进行修改,删除所述脚本文件中需要删除的脚本代码,得到修改后的脚本文件包括: 获取删除指令,其中,所述删除指令为用于删除所述脚本文件中需要删除的脚本代码的指令; 根据所述删除指令对所述脚本文件中需要删除的脚本代码执行删除操作,得到修改后的脚本文件的脚本代码; 获取写入指令,其中,所述写入指令用于将修改后的脚本文件的脚本代码写入所述脚本文件中;以及 根据所述写入指令将修改后的脚本文件的脚本代码写入所述脚本文件中,得到修改后的脚本文件。
3.根据权利要求2所述的方法,其特征在于,在得到修改后的脚本文件之后,所述方法还包括: 获取覆盖指令,其中,所述覆盖指令为用于将修改后的所述脚本文件的脚本代码覆盖所述脚本文件的脚本代码的指令;以及 根据所述覆盖指令,将修改后的所述脚本文件的脚本代码覆盖修改前所述脚本文件的脚本代码。
4.根据权利要求1所述的方法,其特征在于,根据所述源数据库生成数据库快照包括: 获取第一预设代理程序,其中,所述第一预设代理程序为用于生成所述数据库快照的程序; 根据所述第一预设代理程序得到生成指令,其中,所述生成指令为用于执行生成所述数据库快照操作的指令;以及 根据所述生成指令生成所述数据库快照。
5.根据权利要求1所述的方法,其特征在于,通过所述修改后的脚本文件对所述数据库快照执行同步处理包括: 获取第二预设代理程序,其中,所述第二预设代理程序为用于同步所述数据库快照的程序; 根据所述第二预设代理程序,得到同步指令,其中,所述同步指令为用于执行同步所述数据库快照操作的指令;以及 根据所述同步指令将修改后的所述数据库快照同步至目标数据库。
6.一种数据库快照同步处理装置,其特征在于,包括: 第一确定单元,用于确定源数据库和目标数据库; 生成单元,用于根据所述源数据库生成数据库快照,其中,所述数据库快照是用于将所述源数据库中的数据转移至所述目标数据库中的数据库,在所述数据库快照中包括用于执行同步操作的脚本文件; 第二确定单元,用于确定所述脚本文件中需要删除的脚本代码; 修改单元,用于对所述脚本文件进行修改,删除所述脚本文件中需要删除的脚本代码,得到修改后的脚本文件;以及 同步单元,用于通过所述修改后的脚本文件对所述数据库快照执行同步处理。
7.根据权利要求6所述的装置,其特征在于,所述修改单元包括: 第一获取模块,用于获取删除指令,其中,所述删除指令为用于删除所述脚本文件中需要删除的脚本代码的指令; 删除模块,用于根据所述删除指令对所述脚本文件中需要删除的脚本代码执行删除操作,得到修改后的脚本文件的脚本代码; 第二获取模块,用于获取写入指令,其中,所述写入指令用于将修改后的脚本文件的脚本代码写入所述脚本文件中;以及 写入模块,用于所述写入指令将修改后的脚本文件的脚本代码写入所述脚本文件中,得到修改后的脚本文件。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括: 第三获取模块,用于获取覆盖指令,其中,所述覆盖指令为用于将修改后的所述脚本文件的脚本代码覆盖所述脚本文件的脚本代码的指令;以及 覆盖模块,用于根据所述覆盖指令,将修改后的所述脚本文件的脚本代码覆盖修改前所述脚本文件的脚本代码。
9.根据权利要求6所述的装置,其特征在于,所述生成单元包括: 第四获取模块,用于获取第一预设代理程序,其中,所述第一预设代理程序为用于生成所述数据库快照的程序; 第五获取模块,用于所述第一预设代理程序得到生成指令,其中,所述生成指令为用于执行生成所述数据库快照操作的指令;以及 生成模块,用于所述生成指令生成所述数据库快照。
10.根据权利要求6所述的装置,其特征在于,所述同步单元包括: 第六获取模块,用于获取第二预设代理程序,其中,所述第二预设代理程序为用于同步所述数据库快照的程序; 第七获取模块,用于所述第二预设代理程序,得到同步指令,其中,所述同步指令为用于执行同步所述数据库快照操作的指令;以及 同步模块,用于所述同步指令将修改后的所述数据库快照同步至目标数据库。
【文档编号】G06F11/14GK104462342SQ201410735317
【公开日】2015年3月25日 申请日期:2014年12月4日 优先权日:2014年12月4日
【发明者】储雨知 申请人:北京国双科技有限公司