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

文档序号:9667322阅读:来源:国知局
同步设备1中,所述第三装置103在执行所述数据操作记录后,释放所述控制权限及关于所述上层对象的读权限。
[0045]具体地,所述数据操作记录在执行时需要获得相对应的操作对象的控制权限,以及所对应的操作对象的上层对象的读权限,当所述数据操作记录占据某一个层级对象的读权限时,其他数据操作记录无法获得所述层级对象的写权限,而当所述数据操作记录占据某一个层级对象的写权限时,其他数据操作记录无法获得所述层级对象的写权限和读权限,但是主数据库中二进制日志文件中存储的数据操作记录在不断变化,主备并发同步的进程一直在进行,所以当某个数据操作记录执行完毕后,需要及时释放其对应的所述操作对象的控制权限和所述上层对象的读权限,才能避免资源的浪费,保证其他的数据操作记录顺利的获得所需要的相应层级对象的相应权限,整个主备同步进程才能高效顺利的进行。
[0046]优选地,所述数据库同步设备1中,所述数据操作记录包括多个子数据操作记录;其中,所述第二装置102根据所述子数据操作记录的顺序信息,获取关于所述子数据操作记录所对应操作对象的上层对象的读权限,并获取与所述子数据操作记录相对应的、关于所述操作对象的控制权限;其中,所述第三装置103对所述主数据库所对应的备份数据库中的所述操作对象执行所述子数据操作记录。
[0047]具体地,所述多个子数据操作记录是指多个待同步的数据操作记录,每个所述的待同步的数据操作记录的执行都要获得相应操作对象的控制权限和所述上层对象的读权限。优选地,根据各个所述带同步额数据操作记录在主数据库二进制日志文件中记录的先后顺序依次进行并发同步检测判断。对于能够并发的数据操作记录并发同步到所述备份数据库,对于无法并发的数据操作记录独自同步到所述备份数据库。进而对于与所述主数据库对应的所述备份数据库中的所述操作对象执行相应的数据操作记录。
[0048]例如,主数据库中的二进制日志文件中记录了多个数据操作记录,依次为:DML1、DDL2、DDL3、DML4。其中,DML1需要获得访问权限P、实例E、库D、表A的读权限以及记录Μ的写权限;DDL2需要获得访问权限P、实例E、库D的读权限以及表A的写权限;DDL3需要获得访问权限P、实例E、库D的读权限以及表B的写权限;DML4需要获得访问权限P、实例E、库D、表C的读权限以及记录N的写权限。则在并发同步检测中,从DML1开始判断,DML1可以获得执行所需要的所有层级对象的相应权限;DDL2需要等待DML1执行完后获得其释放表A后才可以获得表A的写权限,进而执行;DDL3和DML4也可以获得行所需要的所有层级对象的相应权限。所以在所述多个数据操作记录DML1、DDL2、DDL3、DML4中,DML1、DDL3、DML4是可以并发执行的,而DDL2也只是需要等待DML1执行完后获得其释放表A就可以获得表A的写权限。
[0049]图2示出根据本申请另一个方面的一种数据库同步的方法流程图。
[0050]其中,在步骤S201中,获取主数据库中待同步的数据操作记录;在步骤S202中,获取关于所述数据操作记录所对应操作对象的上层对象的读权限,并获取与所述数据操作记录相对应的、关于所述操作对象的控制权限;在步骤S203中,对所述主数据库所对应的备份数据库中的所述操作对象执行所述数据操作记录。
[0051]具体地,在步骤S201中,数据库同步设备1获取主数据库中待同步的数据操作记录。在数据库主备同步中,一方是主数据库,另一方是备份数据库,主数据库中通过二进制日志文件(binary log)记录下所述主数据库中的变更事务的数据操作记录。依照所述数据库的二进制日志文件中记录的先后顺序获得待同步的数据操作记录。在此,所述数据操作记录包括 Oracle、Mysql、Sql Sever、0ceanbase、DB2 等数据库中应用的 DCL、DDL、DML 等语句。其中,DCL是用来设置或更改数据库用户或角色权限的语句;DDL是用于定义和管理SQL数据库中的所有对象的语句;DML是用来对数据库里的数据进行操作的语句。在此,优选地,所述主备同步是Mysql数据库中基于ROW模式下的并发同步,优选地,所述数据操作记录是与所述Mysql数据库相对应的DCL、DDL、DML语句。
[0052]本领域技术人员应能理解,上述优选地,所述主备同步是Mysql数据库中基于ROW模式下的并发同步,优选地,所述数据操作记录是与所述Mysql数据库相对应的DCL、DDL、DML语句仅为举例,其他数据库、日志文件的模式、数据操作记录如可适用本申请,也应包含在本申请的保护范围以内,并在此以引用方式包含于此。
[0053]接着,在步骤S202中,数据库同步设备1获取关于所述数据操作记录所对应操作对象的上层对象的读权限,并获取与所述数据操作记录相对应的、关于所述操作对象的控制权限。在此,所述数据操作记录对应的操作对象是基于数据库的层级概念抽象组合成的树形关系,其中,用户在执行任何数据库操作时都需要先拥有数据库的访问权限,所以将所述的访问权限设置为所述数据操作记录所对应操作对象的最上层对象,根据数据库的层级概念,访问权限之下是的对象是数据库实例,数据库实例包含若干库,库包含若干表,表中有若干记录。在此,所述访问权限、实例、库、表、记录都是数据库的层级对象,并且分别是相应的数据操作记录的操作对象。不同的数据操作记录对应的具体的操作对象是不同的,所以其所对应的上层对象也是不同的。例如,若一个数据操作记录的操作对象是某张表,则该数据操作记录对应的上层对象就是相应的访问权限、实例和库;若一个数据操作记录的操作对象是某条记录,则该数据操作记录对应的上层对象就是相应的访问权限、实例、库和表。相应的,执行所述的数据操作记录需要获得对应的操作对象的上层对象的读权限,并获取与所述数据操作记录相对应的、关于所述操作对象的控制权限。在此,一个确定的数据操作记录对于某一数据库层级对象是获得读权限还是控制权限是基于所述确定的数据操作记录的具体需求来安排的。例如,对于DCL语句,一般只进行访问权限的判断,所以在执行时要获得相应访问权限这一层级的控制权限;又如,对于DDL语句,要先解析该语句具体影响到的操作对象的层级,若所述DDL语句的具体的操作对象是库,如对库进行修改,则需要获得相应库的控制权限,并且要获取与所述DDL语句相对应的库隶属的访问权限、实例的相应的读权限;若所述DDL语句的具体的操作对象是表,如创建或修改一个表,则需要获得所述表的控制权限,并且要获取与所述DDL语句相对应的表隶属的访问权限、实例、库的相应的读权限;又如,对于DML语句,一般所述的操作对象是记录,如对数据库中的某一记录进行查询、增加、删除、修改等操作,所以需要获得所述记录的控制权限,优选地,通过获得所述记录对应的主键的控制权限来定位所述记录,并且要获取与所述DML语句相对应的记录隶属的访问权限、实例、库、表的相应的读权限。
[0054]在此,不同的数据操作记录可以同时获得某一个层级对象的读权限。所述操作对象的控制权限包括读权限和写权限。当存在一个或多个数据操作记录获得某个层级对象的读权限时,是不会存在另一个数据操作记录获得所述层级对象的写权限的,而当某一个数据操作记录获得对应层级对象的写权限时,也就不允许其他数据操作记录获得对该层级对象进行的读权限或写权限。
[0055]在此,可以按照数据操作记录对应层级对象的层级顺序获得各层级对象的相应读权限或是控制权限,若是在数据操作记录的并发检测中,某一层级对象的权限无法获得,则会等待该层级对象的权限,或者,若此时,所述数据操作记录的下层对象的权限可以获得,则所述数据操作记录还可以提前预约所述下层对象的相应权限。例如,某一 DDL语句T的具体的操作对象是表D,则需要获得所述表D的控制权限,并且要获取与所述DDL语句T相对应的表隶属的访问权限A、实例B、库C的相应的读权限。若在获得相应访问权限A的读权限后,不能立即获得相应实例B的读权限,则可以等待所述实例B的读权限并不做其他操作,若此时下一层级库C的读权限可以获得,或是再下一层的表D的控制权限可以获得,也可以在等待所述实例B的读权限的同时,根据需要预约所述库C的读权限或是所述表D的控制权限。更进一步,若是此时对于所预约的所述库C或是所述表D有其他数据操作记录需要获得相应读权限或是控制权限,可以依据实际的需要设定相应的规则,例如预约排队等待,或是权重优选获取等来合理安排各个数据操作记录获得所对应层级对象相应权限的顺序。这样可以节约所述数据操作记录
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1