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

文档序号:9667322阅读:222来源:国知局
一种数据库同步方法与设备的制造方法
【技术领域】
[0001]本申请涉及计算机领域,尤其涉及一种数据库同步技术。
【背景技术】
[0002]随着数据库性能的提升,通常运用数据库之间的主备同步的方式能够实现对数据库进行管理和操作的多种需求,如进行数据备份、实现负载均衡、提高数据库的可用性和容错性等。当一定数量的数据操作记录,如数据库中的DCL(数据控制语言)、DDL(数据定义语言)、DML(数据操作语言)等语句,在数据库中或数据库之间进行同步时,若是能够并发执行所述数据操作记录,将会大大增加主备同步的速度。
[0003]目前,该领域采用的方案为:
[0004]针对数据库中的DML语句进行并发同步,首先获得DML语句允许执行的充分条件,并将该充分条件映射到对应的控制锁中,各个DML语句通过并发检测争夺各个充分条件对应的控制锁来获得所需要的允许执行的充分条件。一定程度上,可以实现多个DML语句的并发同步。但用这些技术在处理DCL语句或DDL语句时,DCL语句或DDL语句执行时会锁住所有锁的控制权,从对应的DCL语句或DDL语句开始执行到执行成功,其他的执行语句都将处于等待状态,不可执行,因此会导致数据库同步阻塞,所以推定DML语句与DCL/DDL语句存在冲突,无法并发执行。

【发明内容】

[0005]本申请的目的是提供一种数据库同步方法与设备。
[0006]根据本申请的一个方面,提供了一种数据库同步方法,包括:
[0007]获取主数据库中待同步的数据操作记录;
[0008]获取关于所述数据操作记录所对应操作对象的上层对象的读权限,并获取与所述数据操作记录相对应的、关于所述操作对象的控制权限;
[0009]对所述主数据库所对应的备份数据库中的所述操作对象执行所述数据操作记录。
[0010]根据本申请的另一方面,还提供了一种数据库同步设备,包括:
[0011]第一装置,用于获取主数据库中待同步的数据操作记录;
[0012]第二装置,用于获取关于所述数据操作记录所对应操作对象的上层对象的读权限,并获取与所述数据操作记录相对应的、关于所述操作对象的控制权限;
[0013]第三装置,用于对所述主数据库所对应的备份数据库中的所述操作对象执行所述数据操作记录。
[0014]与现有技术相比,本申请在主备同步过程中,对待同步的数据操作分别获取其相对应的上层对象的读权限,并获取与所述数据操作记录相对应的、关于所述操作对象的控制权限,使得各个数据操作记录依照实际的需要获得相应操作层级对应的操作权限,从而在执行DCL、DDL、DML等语句时,将DCL语句或DDL语句对数据同步的影响范围缩小,使得DCL和DDL可以与DML并发执行且不影响事务的一致性,加快了主备同步的效率,进而依据同步的所述数据操作记录对备份数据库中的相应的操作对象执行对应的操作,更加高效地实现对数据库的管理和操作。
【附图说明】
[0015]通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
[0016]图1示出根据本申请一个方面的一种数据库同步的设备示意图;
[0017]图2示出根据本申请另一个方面的一种数据库同步的方法流程图。
[0018]附图中相同或相似的附图标记代表相同或相似的部件。
【具体实施方式】
[0019]下面结合附图对本申请作进一步详细描述。
[0020]在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0021]内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
[0022]计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPR0M)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0023]图1示出根据本申请一个方面的一种数据库同步的设备示意图。数据库同步设备1包括第一装置101、第二装置102和第三装置103。
[0024]其中,第一装置101获取主数据库中待同步的数据操作记录;第二装置102获取关于所述数据操作记录所对应操作对象的上层对象的读权限,并获取与所述数据操作记录相对应的、关于所述操作对象的控制权限;第三装置103对所述主数据库所对应的备份数据库中的所述操作对象执行所述数据操作记录。
[0025]具体地,数据库同步设备1的第一装置101获取主数据库中待同步的数据操作记录。在数据库主备同步中,一方是主数据库,另一方是备份数据库,主数据库中通过二进制日志文件(binary log)记录下所述主数据库中的变更事务的数据操作记录。依照所述数据库的二进制日志文件中记录的先后顺序获得待同步的数据操作记录。在此,所述数据操作记录包括 0racle、Mysql、Sql Sever、0ceanbase、DB2 等数据库中应用的 DCL、DDL、DML 等语句。其中,DCL是用来设置或更改数据库用户或角色权限的语句;DDL是用于定义和管理SQL数据库中的所有对象的语句;DML是用来对数据库里的数据进行操作的语句。在此,优选地,所述主备同步是Mysql数据库中基于ROW模式下的并发同步,优选地,所述数据操作记录是与所述Mysql数据库相对应的DCL、DDL、DML语句。
[0026]本领域技术人员应能理解,上述优选地,所述主备同步是Mysql数据库中基于ROW模式下的并发同步,优选地,所述数据操作记录是与所述Mysql数据库相对应的DCL、DDL、DML语句仅为举例,其他数据库、日志文件的模式、数据操作记录如可适用本申请,也应包含在本申请的保护范围以内,并在此以引用方式包含于此。
[0027]接着,数据库同步设备1的第二装置102获取关于所述数据操作记录所对应操作对象的上层对象的读权限,并获取与所述数据操作记录相对应的、关于所述操作对象的控制权限。在此,所述数据操作记录对应的操作对象是基于数据库的层级概念抽象组合成的树形关系,其中,用户在执行任何数据库操作时都需要先拥有数据库的访问权限,所以将所述的访问权限设置为所述数据操作记录所对应操作对象的最上层对象,根据数据库的层级概念,访问权限之下是的对象是数据库实例,数据库实例包含若干库,库包含若干表,表中有若干记录。在此,所述访问权限、实例、库、表、记录都是数据库的层级对象,并且分别是相应的数据操作记录的操作对象。不同的数据操作记录对应的具体的操作对象是不同的,所以其所对应的上层对象也是不同的。例如,若一个数据操作记录的操作对象是某张表,则该数据操作记录对应的上层对象就是相应的访问权限、实例和库;若一个数据操作记录的操作对象是某条记录,则该数据操作记录对应的上层对象就是相应的访问权限、实例、库和表。相应的,执行所述的数据操作记录需要获得对应的操作对象的上层对象的读权限,并获取与所述数据操作记录相对应的、关于所述操作对象的控制权限。在此,一个确定的数据操作记录对于某一数据库层级对象是获得读权限还是控制权限是基于所述确定的数据操作记录的具体需求来安排的。例如,对于DCL语句,一般只进行访问权限的判断,所以在执行时要获得相应访问权限这一层级的控制权限;又如,对于DDL语句,要先解析该语句具体影响到的操作对象的层级,若所述DDL语句的具体的操作对象是库,如对库进行修改,则需要获得相应库的控制权限,并且要获取与所述DDL语句相对应的库隶属的访问权限、实例的相应的读权限;若所述DDL语句的具体的操作对象是表,如创建或修改一个表,则需要获得所述表的
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1