一种关系型数据库二进制日志重放的方法和设备技术

技术编号:16101738 阅读:24 留言:0更新日期:2017-08-29 22:29
本申请的目的是提供一种关系型数据库二进制日志重放的方法和设备,通过从待重放关系型数据库服务设备的备份集获取待恢复的重放相关数据;获取所述重放相关数据的重放起始位点,并获取从所述重放起始位点起至重放目标位点止的需重放的二进制日志;基于中继日志规则将所述需重放的二进制日志存储于对应中继日志所在的目录下,并更新相应中继日志位点信息文件和中继日志索引文件;启动复制应用线程,解析并执行所述中继日志,以完成所述二进制日志的重放,避免了所述需重放的二进制日志重放时的出现重放失败,有效地提高了所述需重放的二进制日志的重放效率。

【技术实现步骤摘要】
一种关系型数据库二进制日志重放的方法和设备
本申请涉及计算机领域,尤其涉及一种关系型数据库二进制日志重放的技术。
技术介绍
随着计算机技术的不断发展,由于误操作等原因,经常会有将数据库中的数据恢复到过去时间点的需求。例如,在关系型数据库系统(MySQL)中的二进制日志(binlog)会记录与数据库中的数据相关的更新操作,而对数据库所做的定期的备份集相当于数据存档点,因此可将binlog中的记录从前到后依次应用在备份集上,就可以将数据库恢复到过去任意一个时间点的状态。现有技术中,由于二进制日志(binlog)是二进制文件且关系型数据库服务器(MySQLServer)只能执行一条条的结构化查询语句(StructuredQueryLanguage,SQL),因此在用户端(client)的用户线程中需采用二进制日志解析工具(例如mysqlbinlog)将binlog解析为结构化查询语句文本,并通过网络协议将用户线程解析出的SQL按照从前到后的顺序串行发送给MySQLServer以达到进行binlog的重放。由于binlog中有时会记录执行失败操作,然后会用一个错误码(errorcode)标志标识执行失败,此种失败操作是需要跳过的,然而现有技术中的用户线程采样二进制日志解析工具解析binlog然后应用SQL时不会跳过所述失败操作的错误码,从而直接报错,导致应用SQL进行数据的重放失败;又由于client需通过网络协议将用户线程解析出的SQL发送给MySQLServer,而协议中规定网络包的大小上限是1G,但是binlog对单个数据库的记录执行事件(event)没有限制上限,造成不能够重放记录event过大的binlog;由于通过网络连接将用户线程解析出的SQL按照从前到后的顺序串行发送给MySQLServer以达到进行binlog的重放,若需重放的binlog量很大,串行执行时间过长,导致重放binlog的重放效率低。因此,现有技术中,采样二进制日志解析工具对需重放的二进制日志(binlog)进行解析,因执行解析操作是单线程的,导致对binlog重放效率低,再者需重放的binlog中的执行事件(event)过大或event记录中有错误码,从而有可能导致binlog的重放过程的重放失败。
技术实现思路
本申请的目的是提供一种关系型数据库二进制日志重放的方法与设备,以解决现有技术中采样二进制日志解析工具对需重放的二进制日志(binlog)进行解析,因执行解析操作是单线程的,导致对binlog重放效率低,再者需重放的binlog中的执行事件(event)过大或event记录中有错误码,从而有可能导致binlog的重放过程的重放失败的问题。根据本申请的一个方面,提供了一种关系型数据库二进制日志重放的方法,包括:从待重放关系型数据库服务设备的备份集获取待恢复的重放相关数据;获取所述重放相关数据的重放起始位点,并获取从所述重放起始位点起至重放目标位点止的需重放的二进制日志;基于中继日志规则将所述需重放的二进制日志存储于对应中继日志所在的目录下,并更新相应中继日志位点信息文件和中继日志索引文件;启动复制应用线程,解析并执行所述中继日志,以完成所述二进制日志的重放。进一步地,所述启动复制应用线程,解析并执行所述中继日志,以完成所述二进制日志的重放包括:启动关系型数据库系统中的复制应用线程;从所述重放起始位点开始,将所述需重放的二进制日志对应的中继日志中的执行事件进行重放,直至所述需重放的二进制日志对应的中继日志完成重放。根据本申请的另一方面,还提供了一种关系型数据库二进制日志重放的设备,包括:获取装置,用于从待重放关系型数据库服务设备的备份集获取待恢复的重放相关数据;确定装置,用于获取所述重放相关数据的重放起始位点,并获取从所述重放起始位点起至重放目标位点止的需重放的二进制日志;更新装置,用于基于中继日志规则将所述需重放的二进制日志存储于对应中继日志所在的目录下,并更新相应中继日志位点信息文件和中继日志索引文件;重放装置,用于启动复制应用线程,解析并执行所述中继日志,以完成所述二进制日志的重放。进一步地,所述重放装置包括:启动单元,用于启动关系型数据库系统中的复制应用线程;重放单元,用于从所述重放起始位点开始,将所述需重放的二进制日志对应的中继日志中的执行事件进行重放,直至所述需重放的二进制日志对应的中继日志完成重放。与现有技术相比,根据本申请的实施例所述的一种用于关系型数据库二进制日志重放的方法与设备,首先通过从待重放关系型数据库服务设备的备份集获取待恢复的重放相关数据,有效地基于从待重放关系型数据库服务设备的备份集中获取待恢复的重放相关数据对二进制日志进行重放;接着获取所述重放相关数据的重放起始位点,并获取从所述重放起始位点起至重放目标位点止的需重放的二进制日志,以得到经过剪裁后的需重放的二进制日志;然后基于中继日志规则将所述需重放的二进制日志存储于对应中继日志所在的目录下,并更新相应中继日志位点信息文件和中继日志索引文件,使得在重放过程中能够对所述需重放的二进制日志进行重放;最后启动复制应用线程,解析并执行所述中继日志,以完成所述二进制日志的重放,由于通过启动复制应用线程来解析并执行所述需重放的二进制日志对应的中继日志,不走网络通信,因而重放过程不会受到关系型数据库系统网络协议的网络包大小的限制,有效地提高应用二进制日志进行重放的重放效率。进一步地,根据本申请的实施例所述的一种用于关系型数据库二进制日志重放的方法与设备,通过启动关系型数据库系统中的复制应用线程;从所述重放起始位点开始,将所述需重放的二进制日志对应的中继日志中的执行事件进行重放,直至所述需重放的二进制日志对应的中继日志完成重放,由于关系型数据库系统中的复制应用线程能够将重放二进制日志过程中出现的与执行失败有关的错误码与二进制日志中记录的错误码进行对比,若相同则不会报错并继续执行二进制日志中的下一执行事件,直至完成二进制日志的重放,避免了所述需重放的二进制日志重放时的出现重放失败,又由于可通过启动多个复制应用线程并行执行所述需重放的二进制日志对应的中继日志的执行事件,从而达到有效提高所述需重放的二进制日志的重放效率。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1示出根据本申请一个方面的一种关系型数据库二进制日志重放的设备的结构示意图;如图2示出根据本申请一个方面的一种优选地关系型数据库二进制日志单线程串行重放的流程示意图;如图3示出根据本申请一个方面的一种优选地关系型数据库二进制日志多线程并行重放的流程示意图;图4示出根据本申请一个方面的一种关系型数据库二进制日志重放的方法的流程示意图;图5示出根据本申请一个方面的一种关系型数据库二进制日志重放的方法的整体流程示意图。附图中相同或相似的附图标记代表相同或相似的部件。具体实施方式下面结合附图对本申请作进一步详细描述。图1示出根据本申请一个方面的一种关系型数据库二进制日志重放的设备的结构示意图。该设备1包括获取装置11、确定装置12、更行装置13和重放装置14。其中,所述获取装置11从待重放关系型数据库服务设备的备份集获本文档来自技高网
...
一种关系型数据库二进制日志重放的方法和设备

【技术保护点】
一种用于关系型数据库二进制日志重放的方法,其中,所述方法包括:从待重放关系型数据库服务设备的备份集获取待恢复的重放相关数据;获取所述重放相关数据的重放起始位点,并获取从所述重放起始位点起至重放目标位点止的需重放的二进制日志;基于中继日志规则将所述需重放的二进制日志存储于对应中继日志所在的目录下,并更新相应中继日志位点信息文件和中继日志索引文件;启动复制应用线程,解析并执行所述中继日志,以完成所述二进制日志的重放。

【技术特征摘要】
1.一种用于关系型数据库二进制日志重放的方法,其中,所述方法包括:从待重放关系型数据库服务设备的备份集获取待恢复的重放相关数据;获取所述重放相关数据的重放起始位点,并获取从所述重放起始位点起至重放目标位点止的需重放的二进制日志;基于中继日志规则将所述需重放的二进制日志存储于对应中继日志所在的目录下,并更新相应中继日志位点信息文件和中继日志索引文件;启动复制应用线程,解析并执行所述中继日志,以完成所述二进制日志的重放。2.根据权利要求1所述的方法,其中,所述获取所述重放相关数据的重放起始位点,并获取从所述重放起始位点起至重放目标位点止的需重放的二进制日志包括:获取所述重放相关数据所对应的所述二进制日志的位点,将所述重放相关数据所对应的最后一个位点确定为所述重放起始位点。3.根据权利要求1所述的方法,其中,所述获取所述重放相关数据的重放起始位点,并获取从所述重放起始位点起至重放目标位点止的需重放的二进制日志包括:获取从所述重放起始位点起的所有二进制日志;将所述所有二进制日志中对应所述重放起始位点之后的执行事件进行裁剪,以获取从所述重放起始位点起至重放目标位点止的需重放的二进制日志。4.根据权利要求1至3中任一项所述的方法,其中,所述基于中继日志规则将所述需重放的二进制日志存储于对应中继日志所在的目录下,并更新相应中继日志位点信息文件和中继日志索引文件包括:基于中继日志规则中的文件名规则对所述需重放的二进制日志进行重命名;将所重命名的所述需重放的二进制日志存储至对应的中继日志所在的目录下,确定与所述需重放的二进制日志对应的中继日志;基于从所述重放起始位点起至重放目标位点止的所有位点,更新相应中继日志位点信息文件,将所述需重放的二进制日志对应的中继日志的路径追加至相应中继日志索引文件,并更新所述相应中继日志索引文件。5.根据权利要求1至4中任一项所述的方法,其中,所述启动复制应用线程,解析并执行所述中继日志,以完成所述二进制日志的重放包括:启动关系型数据库系统中的复制应用线程;从所述重放起始位点开始,将所述需重放的二进制日志对应的中继日志中的执行事件进行重放,直至所述需重放的二进制日志对应的中继日志完成重放。6.根据权利要求1至5中任一项所述的方法,其中,所述复制应用线程为单个,所述启动关系型数据库系统中的复制应用线程包括:利用所述复制应用线程串行执行所述中继日志的执行事件。7.根据权利要求1至6中任一项所述的方法,其中,所述复制应用线程为多个,所述启动关系型数据库系统中的复制应用线程包括:利用多个所述复制应用线程并行执行所述中继日志的执行事件。8.根据权利要求1至7中任一项所述的方法,其中,所述获取所述重放相关数据的重放起始位点,并获取从所述重放起始位点起至重放目标位点止的需重放的二进制日志包括:获取从所述重放起始位点起至重放目标位点止的需重放的二进制日志,所述需重放的二进制日志包括若干执行事件及相应执行事件的事件标识。9.根据权利要求1至8中任一项所述的方法,其中,所述从所述重放起始位点开始,将所述需重放的二进制日志对应的中继日志中的执行事件进行重放,直至所述需重放的二进制日志对应的中继日...

【专利技术属性】
技术研发人员:王波
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1