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

文档序号:9667322阅读:来源:国知局
控制权限,并且要获取与所述DDL语句相对应的表隶属的访问权限、实例、库的相应的读权限;又如,对于DML语句,一般所述的操作对象是记录,如对数据库中的某一记录进行查询、增加、删除、修改等操作,所以需要获得所述记录的控制权限,优选地,通过获得所述记录对应的主键的控制权限来定位所述记录,并且要获取与所述DML语句相对应的记录隶属的访问权限、实例、库、表的相应的读权限。
[0028]在此,不同的数据操作记录可以同时获得某一个层级对象的读权限。所述操作对象的控制权限包括读权限和写权限。当存在一个或多个数据操作记录获得某个层级对象的读权限时,是不会存在另一个数据操作记录获得所述层级对象的写权限的,而当某一个数据操作记录获得对应层级对象的写权限时,也就不允许其他数据操作记录获得对该层级对象进行的读权限或写权限。
[0029]在此,可以按照数据操作记录对应层级对象的层级顺序获得各层级对象的相应读权限或是控制权限,若是在数据操作记录的并发检测中,某一层级对象的权限无法获得,则会等待该层级对象的权限,或者,若此时,所述数据操作记录的下层对象的权限可以获得,则所述数据操作记录还可以提前预约所述下层对象的相应权限。例如,某一 DDL语句T的具体的操作对象是表D,则需要获得所述表D的控制权限,并且要获取与所述DDL语句T相对应的表隶属的访问权限A、实例B、库C的相应的读权限。若在获得相应访问权限A的读权限后,不能立即获得相应实例B的读权限,则可以等待所述实例B的读权限并不做其他操作,若此时下一层级库C的读权限可以获得,或是再下一层的表D的控制权限可以获得,也可以在等待所述实例B的读权限的同时,根据需要预约所述库C的读权限或是所述表D的控制权限。更进一步,若是此时对于所预约的所述库C或是所述表D有其他数据操作记录需要获得相应读权限或是控制权限,可以依据实际的需要设定相应的规则,例如预约排队等待,或是权重优选获取等来合理安排各个数据操作记录获得所对应层级对象相应权限的顺序。这样可以节约所述数据操作记录完全执行过程中的等待时间,避免一个数据操作记录在多层对象上为了获取多个权限而多次等待,可以在整体上优化和调整并发同步。
[0030]接着,数据库同步设备1的第三装置103对所述主数据库所对应的备份数据库中的所述操作对象执行所述数据操作记录。在此,优选地,所述第三装置103获得所述控制权限及所述上层对象的读权限,即通过给予各个待同步的数据操作记录所需的对应操作对象的上层对象的读权限和与所述数据操作记录相对应的、关于所述操作对象的控制权限,从而使得各个数据操作记录在主备同步时能够最大可能进行并行。所述数据操作记录获得各个层级对象相应权限这一过程可以存在于从主数据库生成串行的二进制日志文件到写入备份数据库之前的任一阶段。配合着相应权限的获得,对应各个数据操作记录并发同步到所述备份数据库,进而,基于同步到所述备份数据库中的所述数据操作记录,对相应的操作对象执行对应操作。
[0031]在此,在主备同步过程中,对待同步的数据操作分别获取其相对应的上层对象的读权限,并获取与所述数据操作记录相对应的、关于所述操作对象的控制权限,使得各个数据操作记录依照实际的需要获得相应操作层级对应的操作权限,从而在执行DCL、DDL、DML等语句时,将DCL语句或DDL语句对数据同步的影响范围缩小,使得DCL和DDL可以与DML并发执行且不影响事务的一致性,加快了主备同步的效率,进而依据同步的所述数据操作记录对备份数据库中的相应的操作对象执行对应的操作,更加高效地实现对数据库的管理和操作。
[0032]优选地,所述数据库同步设备1中,所述获取关于所述数据操作记录所对应操作对象的上层对象的读权限包括:从所述数据操作记录所对对象的最上层对象顺序获取关于所述操作对象的上层对象的读权限。
[0033]具体地,可以按照数据操作记录对应操作对象的上层对象的层级顺序,从上到下依次获得各层级对象的相应读权限。例如数据操作记录T对应的操作对象是记录E,记录E包含于表D,表D包含于库C,库C包含于实例B,实例B从属于访问权限A,则对于数据操作记录T,若要获得对应操作对象的各个上层对象的读权限,需要先获得访问权限A的读权限,若是立即获得了所述访问权限A的读权限后则继续获得所述实例B的读权限,若是无法立即获得所述访问权限A的读权限则等待,待获得后再继续获得所述实例B的读权限,以此类推,依次获得库C、表D的读权限。
[0034]优选地,所述数据库同步设备1中,所述获取与所述数据操作记录相对应的、关于所述操作对象的控制权限包括:当获取关于所述上层对象的读权限时,获取与所述数据操作记录相对应的、关于所述操作对象的控制权限。
[0035]具体地,若要获取与所述数据操作记录相对应的、关于所述操作对象的控制权限,首先获得与所述操作对象相对应的上层对象的读权限,例如例如数据操作记录R对应的操作对象是库Q,库Q包含于实例P,实例P从属于访问权限0,则,若是想要获取所述数据操作记录R对应的操作对象是库Q的操作权限,要先依次获得与所述库Q从属的访问权限0和实例P的读权限。
[0036]优选地,所述数据库同步设备1中,所述获取与所述数据操作记录相对应的、关于所述操作对象的控制权限包括:根据权限规则,获取与所述数据操作记录相对应的、关于所述操作对象的控制权限,其中,所述控制权限包括关于所述操作对象的读权限或写权限。例如,若一个数据操作记录的操作对象是同一个表下的两条记录,记录A和记录B,需要读取记录A,同时需要修改记录B,此时所述操作对象的控制权限,既包括对记录A的读权限,也包括对记录B的写权限。
[0037]优选地,所述数据库同步设备1中,所述权限规则包括以下至少任一项:当所述控制权限包括所述操作对象的读权限,且未有其他数据操作已获得要求所述操作对象的写权限,获得所述操作对象的读权限;当所述控制权限包括所述操作对象的写权限,且未有其他数据操作已获得所述操作对象的读权限或写权限,获得所述操作对象的写权限。
[0038]具体地,所述数据操作记录对应的所述操作对象的控制权限包括读权限和写权限。所述权限规则可以包括:当所述数据操作记录对应的所述控制权限包括所述操作对象的读权限,若所述数据操作记录想要获得该操作对象的读权限,则此时,不能有其他数据操作记录获取所述操作对象对应的写权限,但是此时可以有其他数据操作记录获取所述操作对象对应的读权限;当所述控制权限包括所述操作对象的写权限,若所述数据操作记录想要获得该操作对象的写权限,则此时,不能有其他数据操作记录获取所述操作对象对应的写权限或是读权限。因此,一个操作对象可以同时给予多个不同数据操作记录读权限,但是只能一次给予一个数据操作记录写权限。
[0039]本领域技术人员应能理解,上述优选地,所述权限规则仅为举例,其他权限规则如可适用本申请,也应包含在本申请的保护范围以内,并在此以引用方式包含于此。
[0040]优选地,所述数据库同步设备1中,所述第二装置102根据所述数据操作记录确定所述数据操作记录所对应的操作对象,以及所述操作对象所对应的上层对象;获取关于所述上层对象的读权限,并获取与所述数据操作记录相对应的、关于所述操作对象的控制权限。
[0041]具体地,所述数据操作记录对应的操作对象因为具体数据操作记录的不同而存在差异,可以是访问权限、实例、库、表、记录各个层级对象中的一个或多个。例如,一条DDL语句:alter database'dbl'character_set gbk,据此所述DDL语句对应的操作对象是库dbl,所以所述操作对象对应的上层对象就是库dbl从属的实例和访问权限。进而对于所确定的所述上层对象和操作对象分别获得相应的读权限和控制权限。
[0042]优选地,所述数据库同步设备1中,所述第二装置102还用于当所述数据操作记录为DCL类型时,获取所述数据操作记录所对应的数据库根节点的写权限,并执行所述数据操作记录。
[0043]具体地,所述数据操作记录DCL是用来设置或更改数据库用户或角色权限的语句,对于DCL语句一般只进行根节点的权限判断,在此,优选地,根节点包括访问权限节点这一数据库层级对象,对所述DCL语句只进行访问权限的判断,所以在执行时需要相应访问权限这一层级的控制权限,在此,优选地,所述控制权限包括写权限。当所述DCL语句获得相应访问节点的写权限后,即可相应同步到所述备份数据库,并执行相应的数据操作记录。
[0044]优选地,所述数据库
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1