一种数据库同步方法与设备的制造方法_4

文档序号:9667322阅读:来源:国知局
完全执行过程中的等待时间,避免一个数据操作记录在多层对象上为了获取多个权限而多次等待,可以在整体上优化和调整并发同步。
[0056]接着,在步骤S203中,数据库同步设备1对所述主数据库所对应的备份数据库中的所述操作对象执行所述数据操作记录。在此,优选地,所述数据库同步设备1获得所述控制权限及所述上层对象的读权限,即通过给予各个待同步的数据操作记录所需的对应操作对象的上层对象的读权限和与所述数据操作记录相对应的、关于所述操作对象的控制权限,从而使得各个数据操作记录在主备同步时能够最大可能进行并行。所述数据操作记录获得各个层级对象相应权限这一过程可以存在于从主数据库生成串行的二进制日志文件到写入备份数据库之前的任一阶段。配合着相应权限的获得,对应各个数据操作记录并发同步到所述备份数据库,进而,基于同步到所述备份数据库中的所述数据操作记录,对相应的操作对象执行对应操作。
[0057]在此,在主备同步过程中,对待同步的数据操作分别获取其相对应的上层对象的读权限,并获取与所述数据操作记录相对应的、关于所述操作对象的控制权限,使得各个数据操作记录依照实际的需要获得相应操作层级对应的操作权限,从而在执行DCL、DDL、DML等语句时,将DCL语句或DDL语句对数据同步的影响范围缩小,使得DCL和DDL可以与DML并发执行且不影响事务的一致性,加快了主备同步的效率,进而依据同步的所述数据操作记录对备份数据库中的相应的操作对象执行对应的操作,更加高效地实现对数据库的管理和操作。
[0058]优选地,所述数据库同步设备1中,所述获取关于所述数据操作记录所对应操作对象的上层对象的读权限包括:从所述数据操作记录所对对象的最上层对象顺序获取关于所述操作对象的上层对象的读权限。
[0059]具体地,可以按照数据操作记录对应操作对象的上层对象的层级顺序,从上到下依次获得各层级对象的相应读权限。例如数据操作记录τ对应的操作对象是记录E,记录E包含于表D,表D包含于库C,库C包含于实例B,实例B从属于访问权限A,则对于数据操作记录T,若要获得对应操作对象的各个上层对象的读权限,需要先获得访问权限A的读权限,若是立即获得了所述访问权限A的读权限后则继续获得所述实例B的读权限,若是无法立即获得所述访问权限A的读权限则等待,待获得后再继续获得所述实例B的读权限,以此类推,依次获得库C、表D的读权限。
[0060]优选地,所述数据库同步设备1中,所述获取与所述数据操作记录相对应的、关于所述操作对象的控制权限包括:当获取关于所述上层对象的读权限时,获取与所述数据操作记录相对应的、关于所述操作对象的控制权限。
[0061]具体地,若要获取与所述数据操作记录相对应的、关于所述操作对象的控制权限,首先获得与所述操作对象相对应的上层对象的读权限,例如例如数据操作记录R对应的操作对象是库Q,库Q包含于实例P,实例P从属于访问权限0,则,若是想要获取所述数据操作记录R对应的操作对象是库Q的操作权限,要先依次获得与所述库Q从属的访问权限0和实例P的读权限。
[0062]优选地,所述数据库同步设备1中,所述获取与所述数据操作记录相对应的、关于所述操作对象的控制权限包括:根据权限规则,获取与所述数据操作记录相对应的、关于所述操作对象的控制权限,其中,所述控制权限包括关于所述操作对象的读权限或写权限。例如,若一个数据操作记录的操作对象是同一个表下的两条记录,记录A和记录B,需要读取记录A,同时需要修改记录B,此时所述操作对象的控制权限,既包括对记录A的读权限,也包括对记录B的写权限。
[0063]优选地,所述数据库同步设备1中,所述权限规则包括以下至少任一项:当所述控制权限包括所述操作对象的读权限,且未有其他数据操作已获得要求所述操作对象的写权限,获得所述操作对象的读权限;当所述控制权限包括所述操作对象的写权限,且未有其他数据操作已获得所述操作对象的读权限或写权限,获得所述操作对象的写权限。
[0064]具体地,所述数据操作记录对应的所述操作对象的控制权限包括读权限和写权限。所述权限规则可以包括:当所述数据操作记录对应的所述控制权限包括所述操作对象的读权限,若所述数据操作记录想要获得该操作对象的读权限,则此时,不能有其他数据操作记录获取所述操作对象对应的写权限,但是此时可以有其他数据操作记录获取所述操作对象对应的读权限;当所述控制权限包括所述操作对象的写权限,若所述数据操作记录想要获得该操作对象的写权限,则此时,不能有其他数据操作记录获取所述操作对象对应的写权限或是读权限。因此,一个操作对象可以同时给予多个不同数据操作记录读权限,但是只能一次给予一个数据操作记录写权限。
[0065]本领域技术人员应能理解,上述优选地,所述权限规则仅为举例,其他权限规则如可适用本申请,也应包含在本申请的保护范围以内,并在此以引用方式包含于此。
[0066]优选地,在步骤S202中,所述数据库同步设备1根据所述数据操作记录确定所述数据操作记录所对应的操作对象,以及所述操作对象所对应的上层对象;获取关于所述上层对象的读权限,并获取与所述数据操作记录相对应的、关于所述操作对象的控制权限。
[0067]具体地,所述数据操作记录对应的操作对象因为具体数据操作记录的不同而存在差异,可以是访问权限、实例、库、表、记录各个层级对象中的一个或多个。例如,一条DDL语句:alter database'dbl'character_set gbk,据此所述DDL语句对应的操作对象是库dbl,所以所述操作对象对应的上层对象就是库dbl从属的实例和访问权限。进而对于所确定的所述上层对象和操作对象分别获得相应的读权限和控制权限。
[0068]优选地,在步骤S202中,所述数据库同步设备1还用于当所述数据操作记录为DCL类型时,获取所述数据操作记录所对应的数据库根节点的写权限,并执行所述数据操作记录。
[0069]具体地,所述数据操作记录DCL是用来设置或更改数据库用户或角色权限的语句,对于DCL语句一般只进行根节点的权限判断,在此,优选地,根节点包括访问权限节点这一数据库层级对象,对所述DCL语句只进行访问权限的判断,所以在执行时需要相应访问权限这一层级的控制权限,在此,优选地,所述控制权限包括写权限。当所述DCL语句获得相应访问节点的写权限后,即可相应同步到所述备份数据库,并执行相应的数据操作记录。
[0070]优选地,在步骤S203中,所述数据库同步设备1在执行所述数据操作记录后,释放所述控制权限及关于所述上层对象的读权限。
[0071]具体地,所述数据操作记录在执行时需要获得相对应的操作对象的控制权限,以及所对应的操作对象的上层对象的读权限,当所述数据操作记录占据某一个层级对象的读权限时,其他数据操作记录无法获得所述层级对象的写权限,而当所述数据操作记录占据某一个层级对象的写权限时,其他数据操作记录无法获得所述层级对象的写权限和读权限,但是主数据库中二进制日志文件中存储的数据操作记录在不断变化,主备并发同步的进程一直在进行,所以当某个数据操作记录执行完毕后,需要及时释放其对应的所述操作对象的控制权限和所述上层对象的读权限,才能避免资源的浪费,保证其他的数据操作记录顺利的获得所需要的相应层级对象的相应权限,整个主备同步进程才能高效顺利的进行。
[0072]优选地,所述数据库同步设备1中,所述数据操作记录包括多个子数据操作记录;其中,在步骤S202中,所述数据库同步设备1根据所述子数据操作记录的顺序信息,获取关于所述子数据操作记录所对应操作对象的上层对象的读权限,并获取与所述子数据操作记录相对应的、关于所述操作对象的控制权限;其中,在步骤S203中,所述数据库同步设备1对所述主数据库所对应的备份数据库中的所述操作对象执行所述子数据操作记录。
[0073]具体地,所述多个子数据操作记录是指多个待同步的数据操作记录,每个所述的待同步的数据操作记录的执行都要获得相应操作对象的控制权限和所述上层对象的读权限。优选地,根据各个所述带同步额数据操作记录在主数据库二进制日志文件中记录的先后顺序依次进行并发同步检测判断。对于能够并发的数据操作记录并发同步到所述备份数据库,对于无法并发的数据操作记录独自同步到所述备份数据库。进而对于与所述主数据库对应的所述备份数据库中的所述操作对象执行相应的数据操作记录。
[0074]例如,主数据库中的二进制日志文件中记录了多个数据操作记录,依次为:DML1、DDL
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1