• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 22
    • 下载费用:30 金币  

    重庆时时彩虎龙和: 用于修复数据库备库数据的方法和设备.pdf

    关 键 词:
    用于 修复 数据库 数据 方法 设备
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    摘要
    申请专利号:

    CN201510837138.1

    申请日:

    2015.11.26

    公开号:

    CN106802895A

    公开日:

    2017.06.06

    当前法律状态:

    实审

    有效性:

    审中

    法律详情: 实质审查的生效IPC(主分类):G06F 17/30申请日:20151126|||公开
    IPC分类号: G06F17/30 主分类号: G06F17/30
    申请人: 阿里巴巴集团控股有限公司
    发明人: 刘良友; 田英鹤; 赵建伟; 林晓斌
    地址: 英属开曼群岛大开曼资本大厦一座四层847号邮箱
    优先权:
    专利代理机构: 上海百一领御专利代理事务所(普通合伙) 31243 代理人: 陈贞健;周建华
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201510837138.1

    授权公告号:

    |||

    法律状态公告日:

    2017.06.30|||2017.06.06

    法律状态类型:

    实质审查的生效|||公开

    摘要

    本申请的目的是提供一种用于修复数据库备库数据的技术,通过实时比较主库的执行日志位点信息和所述备库的执行日志位点信息是否一致,当一致时,对所述主库进行可读不可写的加锁处理;实时比较所述主库在完成加锁处理时执行日志位点信息和所述备库的执行日志位点信息是否一致,当一致时,停止所述备库从所述主库进行的复制工作;请求所述主库备份待修复数据,并在所述待修复数据备份完成后,对所述主库进行解锁处理;获取所述待修复数据,并基于所述待修复数据对所述备库进行修复,在修复完成后,开启所述备库从所述主库进行的复制工作。在云计算场景下达到修复过程控制在数秒内可以不暂停业务就可以修复数据的目的和精确安全的修复效果。

    权利要求书

    1.一种用于修复数据库备库数据的方法,其中,所述方法包括:
    实时比较主库的执行日志位点信息和备库的执行日志位点信息是否一致,
    当一致时,对所述主库进行可读不可写的加锁处理;
    实时比较所述主库在完成加锁处理时执行日志位点信息和所述备库的执
    行日志位点信息是否一致,当一致时,停止所述备库从所述主库进行的复制
    工作;
    请求所述主库备份待修复数据,并在所述待修复数据备份完成后,对所
    述主库进行解锁处理;
    获取所述待修复数据,并基于所述待修复数据对所述备库进行修复,在
    修复完成后,开启所述备库从所述主库进行的复制工作。
    2.根据权利要求1所述的方法,其中,所述数据库的数据引擎类型为不
    支持事务类型。
    3.根据权利要求2所述的方法,其中,请求所述主库备份待修复数据包
    括:
    请求所述主库备份所述待修复数据的数据文件和索引文件。
    4.根据权利要求2或3所述的方法,其中,获取所述待修复数据包括:
    对所述备库进行锁表处理;
    获取从所述主库中所备份的待修复数据;
    对所述备库进行解锁处理;
    基于所述待修复数据进行修复表操作。
    5.根据权利要求1所述的方法,其中,所述数据库的数据引擎类型为支
    持事务类型。
    6.根据权利要求5所述的方法,其中,请求所述主库备份待修复数据包
    括:请求所述主库对所述待修复数据所在的数据块进行逻辑备份;
    基于所述待修复数据对所述备库进行修复还包括:删除所述备库中待修
    复的事务数据,将所述主库所逻辑备份的待修复数据所在的数据块导入所述
    备库。
    7.根据权利要求1至6中任一项所述的方法,其中,所述方法还包括:
    在所述实时比较主库的执行日志位点信息和所述备库的执行日志位点信
    息是否一致之前,关闭所述主库与所述备库之间的主备切换功能;
    在所述获取所述待修复数据,并基于所述待修复数据对所述备库进行修
    复,在修复完成后,打开所述主库与所述备库之间的复制切换功能。
    8.根据权利要求7所述的方法,其中,所述方法还包括:
    记录对所述主库进行可读不可写加锁处理的已加锁时间,当所述已加锁
    时间超过设定超时时间时,停止当前修复操作。
    9.一种用于修复数据库备库数据的设备,其中,所述设备包括:
    加锁装置,用于实时比较主库的执行日志位点信息和备库的执行日志位
    点信息是否一致,当一致时,对所述主库进行可读不可写的加锁处理;
    备库停止装置,用于实时比较所述主库在完成加锁处理时执行日志位点
    信息和所述备库的执行日志位点信息是否一致,当一致时,停止所述备库从
    所述主库进行的复制工作;
    解锁装置,用于请求所述主库备份待修复数据,并在所述待修复数据备
    份完成后,对所述主库进行解锁处理;
    修复装置,用于获取所述待修复数据,并基于所述待修复数据对所述备
    库进行修复,在修复完成后,开启所述备库从所述主库进行的复制工作。
    10.根据权利要求9所述的设备,其中,所述数据库的数据引擎类型为
    不支持事务类型。
    11.根据权利要求10所述的设备,其中,所述解锁装置包括:
    备份单元,用于请求所述主库备份所述待修复数据的数据文件和索引文
    件。
    12.根据权利要求10或11所述的设备,其中,所述修复装置包括:
    锁表单元,用于对所述备库进行锁表处理;
    获取单元,用于获取从所述主库中所备份的待修复数据;
    解锁单元,用于对所述备库进行解锁处理;
    修复表单元,用于基于所述待修复数据进行修复表操作。
    13.根据权利要求9所述的设备,其中,所述数据库的数据引擎类型为
    支持事务类型。
    14.根据权利要求13所述的设备,其中,所述解锁装置包括:备份单元,
    用于请求所述主库对所述待修复数据所在的数据块进行逻辑备份;
    所述修复装置还包括:导入单元,用于删除所述备库中待修复的事务数
    据,将所述主库所逻辑备份的待修复数据所在的数据块导入所述备库。
    15.根据权利要求9所述的设备,其中,所述设备还包括:
    关闭装置,用于在所述实时比较主库的执行日志位点信息和所述备库的
    执行日志位点信息是否一致之前,关闭所述主库与所述备库之间的主备切换
    功能;
    备库开启装置,用于在所述获取所述待修复数据,并基于所述待修复数
    据对所述备库进行修复,在修复完成后,打开所述主库与所述备库之间的主
    备切换功能。
    16.根据权利要求9所述的设备,其中,所述设备还包括:
    记录装置,用于记录对所述主库进行可读不可写加锁处理的已加锁时间,
    当所述已加锁时间超过设定超时时间时,停止当前修复操作。

    说明书

    用于修复数据库备库数据的方法和设备

    技术领域

    本申请涉及计算机领域,尤其涉及一种用于修复数据库备库数据的技
    术。

    背景技术

    随着数据库技术的迅猛发展,数据库的应用十分广泛,深入到各个领
    域。在数据库系统中,无论是出于容灾还是读写分离等目的,往往对一个
    数据库实例主库建立备库,而由于主机宕机、备库不慎被设置为可写、数
    据库设计本身缺陷或人为操作失当等原因,可能造成主库和其备库的数据
    不一致。

    目前,为了对不一致的数据片段进行修复,许多用户都有自己的修复
    方法,一些厂商也提供了用于修复的脚本工具,例如,比对主库与备库的
    数据块(chunk)中每一行,对找到的主备不一致的行,采用插入数据列
    表中(repalce into)语句,在主库执行一遍用以生成该行全量的执行日志
    (binlog),并同步到备库,这会以主库数据为基准来修复备库,对于主库
    有的行而备库没有的行,采用替代(replace)在主库上插入,对于备库有
    而主库没有的行,通过在主库执行删除,直到修复该数据块所有不一致的
    行。

    一方面,在整个数据块的修复过程中,需要持有数据块的加锁(for
    update锁),备库的延迟越大,主库加锁时间越长,对线上影响就越大。
    在云计算场景下,面对的是大量的不知具体业务场景及使用习惯的用户,
    如采用此工具,会带来难以弥补的失误。另一方面,还会存在以下风险:
    如果数据出现乱码,这一修复动作将可能无法完成修复,甚至会修错数据;
    被修复的表必须有唯一主键,否则会无法准确定位被修复的行,这可能造
    成修复对象错误,表现为替代(replace into)错误数据或者删除(delete)错
    误数据,这样的错误是不可挽回的。此外,在云计算情况下,现有脚本工
    具进行的修复,一旦主备关系发生变化,会直接导致数据源错误。

    发明内容

    本申请的目的是提供一种用于修复数据库备库数据的方法与设备,要解
    决的技术问题是在云计算场景下不暂停用户业务时如何精准安全地修复用
    户数据的问题。

    根据本申请的一个方面,提供了一种用于修复数据库备库数据的方法,
    包括:

    实时比较主库的执行日志位点信息和备库的执行日志位点信息是否一致,
    当一致时,对所述主库进行可读不可写的加锁处理;

    实时比较所述主库在完成加锁处理时执行日志位点信息和所述备库的执
    行日志位点信息是否一致,当一致时,停止所述备库从所述主库进行的复制
    工作;

    请求所述主库备份待修复数据,并在所述待修复数据备份完成后,对所
    述主库进行解锁处理;

    获取所述待修复数据,并基于所述待修复数据对所述备库进行修复,在
    修复完成后,开启所述备库从所述主库进行的复制工作。

    根据本申请的另一方面,还提供了一种用于修复数据库备库数据的设备,
    包括:

    加锁装置,用于实时比较主库的执行日志位点信息和备库的执行日志位
    点信息是否一致,当一致时,对所述主库进行可读不可写的加锁处理;

    备库停止装置,用于实时比较所述主库在完成加锁处理时执行日志位点
    信息和所述备库的执行日志位点信息是否一致,当一致时,停止所述备库从
    所述主库进行的复制工作;

    解锁装置,用于请求所述主库备份待修复数据,并在所述待修复数据备
    份完成后,对所述主库进行解锁处理;

    修复装置,用于获取所述待修复数据,并基于所述待修复数据对所述备
    库进行修复,在修复完成后,开启所述备库从所述主库进行的复制工作。

    与现有技术相比,根据本申请的实施例所述方法及设备,当所述主库
    的执行日志位点信息和所述备库的执行日志位点信息一致时,即实现主备第
    一次等同步,对所述主库进行可读不可写的加锁处理;接着,所述备库的执
    行日志位点信息达到所述主库在完成加锁处理时执行日志位点信息时,即实
    现主备第二次等同步,停止所述备库从所述主库进行的复制工作;随后,请
    求所述主库备份待修复数据,此时备份的数据正是所述备库所需数据,在所
    述待修复数据备份完成后,对所述主库进行解锁处理,用户可以正常写入数
    据;获取所述待修复数据,并基于所述待修复数据对所述备库进行修复,按
    数据块或数据文件修复,无需对数据进行逐行分析,就可以完成修复,之后,
    开启所述备库从所述主库进行的复制工作。修复过程控制在数秒内,对线上
    业务的影响小,主备两次等同步使在修复的位点上修复了所需修复的数据,
    达到精确修复的效果;进一步地,记录对所述主库进行可读不可写加锁处理
    的已加锁时间,当所述已加锁时间超过设定超时时间时,停止当前修复操作,
    不会存在半修复半不修复的情况,达到修复安全的目的。

    附图说明

    通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申
    请的其它特征、目的和优点将会变得更明显:

    图1示出根据本申请一个方面的一种用于修复数据库备库数据的设备
    结构示意图;

    图2示出根据本申请一个方面的一个优选实施例的修复数据库备库数
    据的流程示意图;

    图3示出根据本申请一个方面的又一个优选实施例的修复装置14的
    结构示意图;

    图4示出根据本申请又一个方面的一种用于修复数据库备库数据的方
    法流程示意图;

    图5示出根据本申请又一个方面的一个优选实施例中步骤S14的方法
    流程示意图。

    附图中相同或相似的附图标记代表相同或相似的部件。

    具体实施方式

    下面结合附图对本申请作进一步详细描述。

    图1示出根据本申请一个方面的一种用于修复数据库备库数据的设备
    结构示意图。该设备包括加锁装置11、备库停止装置12、解锁装置13和
    修复装置14。

    其中,加锁装置11用于实时比较主库的执行日志位点信息和备库的执行
    日志位点信息是否一致,当一致时,对所述主库进行可读不可写的加锁处理;
    备库停止装置12实时比较所述主库在完成加锁处理时执行日志位点信息和
    所述备库的执行日志位点信息是否一致,当一致时,停止所述备库从所述主
    库进行的复制工作;解锁装置13请求所述主库备份待修复数据,并在所述待
    修复数据备份完成后,对所述主库进行解锁处理;修复装置14获取所述待修
    复数据,并基于所述待修复数据对所述备库进行修复,在修复完成后,开启
    所述备库从所述主库进行的复制工作。

    在此,所述设备1包括但不限于用户设备、或用户设备与网络设备通过
    网络相集成所构成的设备。所述用户设备其包括但不限于任何一种可与用户
    通过触摸板进行人机交互的移动电子产品,例如智能手机、PDA等,所述移
    动电子产品可以采用任意操作系统,如android操作系统、iOS操作系统等。
    其中,所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数
    值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电
    路(ASIC)、可编程门阵列(FPGA)、数字处理器(DSP)、嵌入式设备等。所
    述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自
    组织网络(Ad Hoc网络)等。优选地,设备1还可以是运行于所述用户设
    备、或用户设备与网络设备、触摸终端或网络设备与触摸终端通过网络相集
    成所构成的设备上的脚本程序,其中,设备1可以是独立于主库设备和备库
    设备的第三方设备、也可以是运行于主库设备、备库设备,或部分运行于主
    库设备并部分运行于备库设备。当然,本领域技术人员应能理解上述设备1
    仅为举例,其他现有的或今后可能出现的设备1如可适用于本申请,也应包
    含在本申请?;し段б阅?,并在此以引用方式包含于此。

    数据库系统中,为解决单点问题,同时为了实现数据实例负载均衡,
    往往建立一个主库及建立一个或多个对主库进行复制的备库,只有主库可
    以写入,备库只可以进行读取。主从复制原理往往是通过备库复制主库的
    执行日志(binlog)再进行执行来完成的。对于复制关系,各种数据库产
    品都有各自的实现方法,以mysql(一种关系型数据库管理系统)为例,
    mysql主库在事务提交时写执行日志,并通过同步执行日志(sync_binlog)
    参数来控制执行日志刷新到磁盘“落地”,而备库通过输入输出(io)线程
    从主库读取执行日志,并记录到本地的中继日志(relay log)中,由本地
    的sql(结构化查询语言)线程再将中继日志的数据应用到本地数据库。
    数据库为了效率等原因,数据只保存在内存中,没有真正的写入到磁盘上
    去。如果数据库响应为“提交成功”,但是由于数据库挂掉,操作系统,
    数据库主机等任何问题导致这次“提交成功”的事务对数据库的修改没有
    生效,那么我们认为这个事务的数据丢失了。对于银行业务或者金融业务
    等数据一致性要求高的场景来说是不能接受的,所以,保证数据不丢失也
    是数据库选择的一个重要衡量标准。为了保证数据不丢失以及主备间数据
    的一致性,各类数据库系统都做了大量的工作,但是在实际使用过程中,
    在数据可靠性和使用效率上往往要做一个权衡,这就给主备数据不一致的
    产生创造了可能性,另外,由于双写、日志文件损坏等因素,即使运行在
    完全高可靠的工作模式,仍有可能造成主备间数据不一致。

    本申请一实施例所述设备1用于修复数据库备库数据,由于主备库两
    次等同步后对主库短暂的加锁,通过停止备库,主库内待修复数据的备份
    及备库获取已备份好的数据进行修复数据,按数据块或数据文件修复,无
    需对数据进行逐行分析,就可以完成修复。修复过程控制在数秒内,在云计
    算场景下,可以不暂停业务就可以修复数据,主备两次等同步使在修复的位
    点上修复了所需修复的数据,达到精确修复的效果;进一步地,对主库加锁
    时有超时控制,当时间超过设定的超时时间,停止当前修复操作,不会存在
    半修复半不修复的情况,达到修复安全的目的。

    需要说明的是,一个主库对应一个或多个备库,主库和备库可以分布在
    同一设备上,可以分布在不同设备上。

    具体地,加锁装置11用于实时比较主库的执行日志位点信息和备库的执
    行日志位点信息是否一致,当一致时,对所述主库进行可读不可写的加锁处
    理。

    在此,等同步为主库的执行日志位点信息和对应的备库的执行日志位点
    信息一致,实时比较主备库的位点信息实现第一次等同步,即实时将获取的
    主库的执行日志位点信息与获取的备库的执行日志的位点信息进行比较,若
    一致,则为主备第一次等同步;当主备第一次等同步后,主备库位于同一位
    点,对主库进行加锁处理使用户短时间内不可写入,加锁时间可为数秒,短
    暂时间内对线上业务影响极小,此时利用中间层阻塞用户的结构化查询语言。
    主库的加锁动作有超时控制,控制方式是通过另开线程等待该超时时间,时
    间到将放弃加锁动作,并放弃本次修复。

    具体地,备库停止装置12实时比较所述主库在完成加锁处理时执行日志
    位点信息和所述备库的执行日志位点信息是否一致,当一致时,停止所述备
    库从所述主库进行的复制工作。

    在一具体实施例中,以mysql为例,可在主库中通过命令显示主库执行
    日志文件的状态信息(show master status)获取到主库当前位点信息,再等待
    备库复制到该位点,主备库在实现第一次等同步后的极短时间内可实现第二
    次等同步,此时主库的数据为备库修复数据所需的,将备库停止是指停止备
    库从主库进行复制,备库停止后能够获取到备库所需的数据,且能在相应的
    修复位点上进行修复。

    具体地,解锁装置13请求所述主库备份待修复数据,并在所述待修复数
    据备份完成后,对所述主库进行解锁处理。

    接前例,备库停止后,主库进行备份待修复数据,在此,待修复数据是
    指备库所需的修复数据块或数据文件对应的相应数据,将待修复的数据块或
    数据文件在主库进行本地备份,备份时间极短,因此此时主库的加锁超时尚
    未到,对主库进行解锁处理可以使用户可以正常写入。

    具体地,修复装置14获取所述待修复数据,并基于所述待修复数据对所
    述备库进行修复,在修复完成后,开启所述备库从所述主库进行的复制工作。

    在一优选实施例中,主库备份数据后,将本地备份的数据上传到中转站,
    备库从中转站中下载相应的数据块覆盖到备库或进行数据文件覆盖。按照数
    据块或数据文件进行修复避免了对数据进行逐行分析的问题,完成修复后开
    启备库从主库进行的复制工作,主备之间开始正常复制。

    图2示出根据本申请一个方面的一个优选实施例的修复数据库备库数
    据的流程示意图。其中的标号1-10为流程图的顺序,Master为所述主库,
    Slave为其对应的备库。流程为:加锁装置11在主备第一次等同步后对主
    库加锁;接着,备库停止装置12在主备第二次等同步后停止备库;随后,
    解锁装置13在主库备份数据后将主库解锁;最后,修复装置14将主库中
    的已备份数据上传中转站,备库从中转站中下载进行修复数据,修复数据
    完成后将备库开启。

    在此,数据库的引擎可分为两种,一种为不支持事务的,一种为支持事
    务的,在此,对于不支持事务类型的,其每个表有单独的数据文件和索引文
    件,进行修复时最安全的方式为数据文件的覆盖,对于支持事务类型的,支
    持事务及行级锁。因此,对于不支持事务的引擎,安全修复方式为进行数据
    文件的覆盖,对于支持事务的引擎,在一个事务里用两个执行语句(包括删
    除数据块和导入备份的数据)可以进行修复。以下为针对两种引擎类型进行
    修复数据库备份数据的优选实施例进行说明修复流程。

    针对所述数据库的数据引擎类型为不支持事务类型的,本申请所述设备
    1中的解锁装置13包括备份单元,如图3示出,所述设备1中的所述修复装
    置14包括:锁表单元141、获取单元142、解锁单元143和修复表单元144;
    其中,所述备份单元131请求所述主库备份所述待修复数据的数据文件和索
    引文件;所述锁表单元141对所述备库进行锁表处理;获取单元142获取从
    所述主库中所备份的待修复数据;解锁单元143对所述备库进行解锁处理;
    修复表单元144基于所述待修复数据进行修复表操作。

    进一步地,在所述设备1中,所述解锁装置13包括:备份单元,用于请
    求所述主库备份所述待修复数据的数据文件和索引文件。

    在此,对于数据库的数据引擎类型为不支持事务类型,每个表有单独的
    数据文件和索引文件,进行修复时最安全的方式为数据文件的覆盖,因此主
    库进行备份数据时为备份所述待修复数据的数据文件和索引文件。需要说明
    的是,Myisam引擎有自带的附加修复(repair table)动作,在主库备份时备
    份待修复数据的数据文件,备库执行附加修复(repair table)动作重建被修复
    数据的索引数据。

    具体地,在所述设备1中,所述修复装置14包括:锁表单元141对所述
    备库进行锁表处理;获取单元142获取从所述主库中所备份的待修复数据;
    解锁单元143对所述备库进行解锁处理;修复表单元144基于所述待修复数
    据进行修复表操作。

    例如,Mysiam引擎为不支持事务,对主库进行加锁时表现为锁表,即直
    接锁定整张表,修复过程中主库中待修复数据备份并将所备份的数据上传到
    中转站中后,因Mysiam引擎的修复过程中对备库执行了附加修复(repair table)
    动作,为防止用户或数据库管理员(dba)进行附加修复(repair table)动作
    从而影响修复,需对备库进行锁表操作。因备库从主库中的复制过程已停止,
    备库若要获取主库中所备份的待修复数据可通过先将主库中已备份好的数据
    上传到中转站,然后备库再从中转站下载备份数据。备库获取备份的待修复
    数据后对备库进行解锁,备库执行附加修复(repair table)动作,重建被修复
    数据的索引数据等,保证备库中原有的数据文件被完全覆盖,获得新的正确
    的数据文件。需要说明的是,Myisam引擎能够执行附加修复(repair table)
    动作,主库备份时只需备份数据文件,备库执行附加修复动作时能够重建索
    引文件,对于其它不带附加修复动作的不支持事务的引擎,主库备份时备份
    数据文件和索引文件,备库利用获取已备份好的数据文件和索引文件进行文
    件覆盖实现表的修复。进一步地,例如,Myisam引擎不支持事务,在Myisam
    表中每个被存在分离的文件中,Myisam为表级锁,直接锁定整张表,在锁定
    期间,其它进程无法对该表进行写操作。此外,针对Myisam进行修复的前
    期工作流程为:首先检查是否需要修复,包括检查主备库的地址(ip)、端口
    (port)的关系来确定主备切换机制没有改变,检查主备的数据库文件(db)、
    数据列表(table)的存在性,以确定某个数据库中的某个文档及其相应的表
    都是完整的,以及检查主备库的数据引擎的变化等确定是否需要修复;若需
    要数据修复则在主备的同步状态下将主库中的数据块和备库中相应的数据块
    进行比对,检查是否一致,若不一致则关闭主备切换功能(HA),停止容灾,
    防止修复过程中主备关系发生变化,如一个主库对应多个备库,在修复过程
    中,主库与备库A关系发生变化,备库A已被备库B替换,主库执行的sql
    会执行到备库B中,造成备库B中数据错误;接着,在主备的同步状态下检
    查是否已经修复,若未修复则对备库执行附加修复(repair table)动作,对于
    能够用repair table修复的数据可以避免进行锁表才能修复,需说明的是,附
    加修复(repair table)动作只是仅对mysql的Myisam引擎的附加动作,其他
    的数据库中没有这一动作。完成备库的修复表操作后实时比较主库的执行日
    志位点信息和所述备库的执行日志位点信息是否一致,进行后续的修复流程。

    如前例,以Myisam引擎为例的数据库备库数据的修复流程为本申请的
    一优选实施例,首先,检查主备库的地址(ip)、端口(port)的关系,数据
    库文件(db)、数据列表(table)的存在性,以及数据引擎的变化等;当检查
    没问题时在主备库的复制达到同一位点的状态下从主库获取不一致的数据块
    进行直接比对,若比对结果为不一致则关闭主备切换功能,在主备库的复制
    达到同一位点的状态下检查主备间数据是否一致,若不一致,对于Myisam
    则需要对备库执行附加的修复动作(repair table),其它数据库不执行此附加
    动作,重新检查是否需要修复,若需要修复,则执行以下修复流程:在加锁
    装置11中,获取主库的执行日志位点信息和备库的执行日志位点信息,将两
    个位点信息进行比较,若相同,则加锁装置11对主库进行加锁处理,引擎为
    不支持事务时即为锁表,直接对整张表进行锁定。在备库停止装置12中,当
    备库的执行日志的位点达到主库完成加锁处理时的执行日志的位点时,备库
    停止从主库复制操作,此时可在需要修复数据对应的位点上对获取到主备库
    上不一致的数据块进行修复。解锁装置13用于请求所述主库备份待修复数据,
    主库获取到请求后会将数据文件进行本地备份,备份完成后,主库进行解锁
    处理。在修复装置14中,获取所述待修复数据,方式为主库将备份的数据上
    传到中转站,备库从中转站中进行下载备份数据,接着,备库执行重建被修
    复数据的索引数据的操作,在修复完成后,开启备库使其从主库中的复制能
    够正常进行。最后,打开主备切换功能,恢复数据库的正常状态。

    本领域技术人员应能理解,所述Myisam的数据库备库数据修复流程为
    本申请的一优选实施例,对本申请所述用于针对数据库的数据引擎类型为不
    支持事务时的修复数据库备库数据的方法进行详细描述,当然,现有或今后
    可能出现的适合本申请修复流程的数据库,均可以引用的方式包含于本申请。

    针对所述数据库的数据引擎类型为支持事务类型的,在本申请设备1中,
    所述解锁装置13包括备份单元,所述修复装置14包括导入单元;其中,所
    述备份单元用于请求所述主库对所述待修复数据所在的数据块进行逻辑备份;
    所述导入单元用于删除所述备库中待修复的事务数据,将所述主库所逻辑备
    份的待修复数据所在的数据块导入所述备库。

    以所述数据库的数据引擎类型为支持事务类型为例进行详细说明数据库
    备库数据修复流程。

    具体地,所述解锁装置13包括:备份单元,请求所述主库对所述待修复
    数据所在的数据块进行逻辑备份。

    在一优选实施例中,主库进行本地备份是对待修复数据所在的数据块进
    行逻辑备份,其中,逻辑备份是指只是原数据库中数据内容的一个映像;逻
    辑备份后主库进行解锁之前锁定的数据块,将本地备份的待修复数据上传到
    中转站,备库从中转站下载备份。

    具体地,所述修复装置14还包括:导入单元,删除所述备库中待修复的
    事务数据,将所述主库所逻辑备份的待修复数据所在的数据块导入所述备库。

    接前例,备库从中转站下载备份后用下载的逻辑备份对备库数据进行修
    复,修复动作即在同一事务内删除原来的数据和向备库导入主库备份的数据。

    进一步地,例如,Innodb为Mysql数据库的一种引擎,其支持事务及行
    级锁,其中,行级锁是指仅对指定的记录进行加锁,其它进程还是可以对同
    一表的记录进行操作。Innodb存储它的表和索引在一个表空间中,表空间可
    以包含数个文件或原始磁盘分区。此外,针对Innodb进行修复的前期工作流
    程为:首先检查是否需要修复,包括检查主备库的地址(ip)、端口(port)
    的关系来确定主备切换机制没有改变,检查主备的数据库文件(db)、数据列
    表(table)的存在性,以确定某个数据库中的某个文档及其相应的表都是完
    整的,以及检查主备库的数据引擎的变化等确定是否需要修复;若需要数据
    修复则在主备的同步状态下将主库中的数据块和备库中相应的数据块进行比
    对,检查是否一致,若不一致则关闭主备切换的HA功能,停止容灾,防止
    修复过程中主备关系发生变化,如一个主库对应多个备库,在修复过程中,
    主库与备库A关系发生变化,备库A已被备库B替换,主库执行的结构化查
    询语句(sql)会执行到备库B中,造成备库B中数据错误。完成备库的修复
    表操作后实时比较主库的执行日志位点信息和所述备库的执行日志位点信息
    是否一致,进行后续的修复流程。

    如前例,以Innodb引擎为例的数据库备库数据的修复流程为本申请的又
    一优选实施例,首先,检查主备库的地址(ip)、端口(port)的关系,数据
    库文件(db)、数据列表(table)的存在性,以及数据引擎的变化等;当检查
    没问题时在主备库的复制达到同一位点的状态下从主库获取不一致的数据块
    进行直接比对,若比对结果为不一致则关闭主备切换功能,在主备库的复制
    达到同一位点的状态下检查主备间数据是否一致,若不一致,则执行以下修
    复流程:在加锁装置11中,获取主库的执行日志位点信息和备库的执行日志
    位点信息,将两个位点信息进行比较,若相同,则加锁装置11对主库进行加
    锁处理,引擎为支持事务时即为锁数据块,直接对指定的数据块进行锁定。
    在备库停止装置12中,当备库的执行日志的位点达到主库完成加锁处理时的
    执行日志的位点时,备库停止从主库复制操作,此时可在需要修复数据对应
    的位点上对获取到主备库上不一致的数据块进行修复。解锁装置13用于请求
    所述主库备份待修复数据,主库获取到请求后会将数据块进行逻辑备份,备
    份完成后,主库进行解锁处理,即解锁数据块。在修复装置14中,获取所述
    待修复数据,方式为主库将备份的数据上传到中转站,备库从中转站中进行
    下载备份数据,接着,用下载的逻辑备份对备库数据进行修复,修复动作是
    在同一事务内删除原来的数据和向备库导入主库备份的数据,在修复完成后,
    开启备库使其从主库中的复制能够正常进行。最后,打开主备切换功能,恢
    复数据库的正常状态。

    本领域技术人员应能理解,上述Innodb的数据库备库数据的修复流程为
    本申请的又一优选实施例,对本申请所述用于针对数据库的数据引擎类型为
    支持事务时的修复数据库备库数据的方法进行详细描述,当然,现有或今后
    可能出现的适合本申请修复流程的数据库,均可以引用的方式包含于本申请。

    需要说明的是,所述数据库的数据引擎类型为不支持事务类型时的修复
    方式为所述优选实施例中的文件覆盖,但本领域技术人员应能理解,不支持
    事务类型的修复方式也可按照支持事务的修复流程进行修复,如主库备份时
    为逻辑备份,备库数据修复时删除数据块和导入备份数据,但相比较而言,
    进行文件覆盖的方式安全性更高。

    优选地,所述设备1还包括:关闭装置(未显示),用于在所述实时比较
    主库的执行日志位点信息和所述备库的执行日志位点信息是否一致之前,关
    闭所述主库与所述备库之间的主备切换功能;备库开启装置(未显示),用于
    在所述获取所述待修复数据,并基于所述待修复数据对所述备库进行修复,
    在修复完成后,打开所述主库与所述备库之间的主备切换功能。

    在此,在实时比较主库的执行日志位点信息和所述备库的执行日志位点
    信息是否一致之前,需要关闭主备切换功能(HA),用户将数据写入主库,
    当主库发生某个错误时HA切换到其对应的备库,因此关闭HA功能避免了
    在修复过程中发生用户将数据写到备库的情况。在修复完成后,需要打开主
    备HA功能,使主备能够进行正常的切换。

    优选地,所述设备1还包括:记录装置(未显示),用于记录对所述主库
    进行可读不可写加锁处理的已加锁时间,当所述已加锁时间超过设定超时时
    间时,停止当前修复操作。

    在一具体实施例中,主库进行可读不可写加锁处理操作时需要有超时
    控制,控制方式可以通过另开线程等待该超时时间,时间到将放弃加锁动
    作,并放弃本次修复。

    本领域技术人员应能理解,所述控制超时方法仅为举例,其他现有的
    或今后可能出现的控制超时的方法如可适用于本发明,也应包含在本发明
    ?;し段б阅?,并在此以引用方式包含于此。

    进一步地,与现有技术相比,通过上述本申请的实施例可知,在修复
    流程过程中没有通过执行总和检验码逐行比较主备数据块中的每一行,而
    是通过数据文件的覆盖或导入数据块实现数据库备库数据的修复,从而避
    免了被修复表没有唯一主键时所造成的修复对象错误的情况克服不需要
    对数据块进行逐行分析就可以完成准确修复数据的问题。

    图4出根据本申请又一个方面的一种用于修复数据库备库数据的方法
    流程示意图。该方法包括步骤S11、步骤S12、步骤S13和步骤S14。

    其中,在步骤S11中,实时比较主库的执行日志位点信息和备库的执行
    日志位点信息是否一致,当一致时,对所述主库进行可读不可写的加锁处理;
    在步骤S12中,实时比较所述主库在完成加锁处理时执行日志位点信息和所
    述备库的执行日志位点信息是否一致,当一致时,停止所述备库从所述主库
    进行的复制工作;在步骤S13中,请求所述主库备份待修复数据,并在所述
    待修复数据备份完成后,对所述主库进行解锁处理;在步骤S14中,获取所
    述待修复数据,并基于所述待修复数据对所述备库进行修复,在修复完成后,
    开启所述备库从所述主库进行的复制工作。

    数据库系统中,为解决单点问题,同时为了实现数据实例负载均衡,
    往往建立一个主库及建立一个或多个对主库进行复制的备库,只有主库可
    以写入,备库只可以进行读取。主从复制原理往往是通过备库复制主库的
    执行日志(binlog)再进行执行来完成的。对于复制关系,各种数据库产
    品都有各自的实现方法,以mysql(一种关系型数据库管理系统)为例,
    mysql主库在事务提交时写执行日志,并通过同步执行日志(sync_binlog)
    参数来控制执行日志刷新到磁盘“落地”,而备库通过输入输出(io)线程
    从主库读取执行日志,并记录到本地的中继日志(relay log)中,由本地
    的sql(结构化查询语言)线程再将中继日志的数据应用到本地数据库。
    数据库为了效率等原因,数据只保存在内存中,没有真正的写入到磁盘上
    去。如果数据库响应为“提交成功”,但是由于数据库挂掉,操作系统,
    数据库主机等任何问题导致这次“提交成功”的事务对数据库的修改没有
    生效,那么我们认为这个事务的数据丢失了。对于银行业务或者金融业务
    等数据一致性要求高的场景来说是不能接受的,所以,保证数据不丢失也
    是数据库选择的一个重要衡量标准。为了保证数据不丢失以及主备间数据
    的一致性,各类数据库系统都做了大量的工作,但是在实际使用过程中,
    在数据可靠性和使用效率上往往要做一个权衡,这就给主备数据不一致的
    产生创造了可能性,另外,由于双写、日志文件损坏等因素,即使运行在
    完全高可靠的工作模式,仍有可能造成主备间数据不一致。

    本申请又一实施例所述方法用于修复数据库备库数据,由于主备库两
    次等同步后对主库短暂的加锁,通过停止备库,主库内待修复数据的备份
    及备库获取已备份好的数据进行修复数据,按数据块或数据文件修复,无
    需对数据进行逐行分析,就可以完成修复。修复过程控制在数秒内,在云计
    算场景下,可以不暂停业务就可以修复数据,主备两次等同步使在修复的位
    点上修复了所需修复的数据,达到精确修复的效果;进一步地,对主库加锁
    时有超时控制,当时间超过设定的超时时间,停止当前修复操作,不会存在
    半修复半不修复的情况,达到修复安全的目的。

    需要说明的是,一个主库对应一个或多个备库,主库和备库可以分布在
    同一设备上,可以分布在不同设备上。

    具体地,步骤S11:实时比较主库的执行日志位点信息和备库的执行日
    志位点信息是否一致,当一致时,对所述主库进行可读不可写的加锁处理。

    在此,等同步为主库的执行日志位点信息和对应的备库的执行日志位点
    信息一致,实时比较主备库的位点信息实现第一次等同步,即实时将获取的
    主库的执行日志位点信息与获取的备库的执行日志的位点信息进行比较,若
    一致,则为主备第一次等同步;当主备第一次等同步后,主备库位于同一位
    点,对主库进行加锁处理使用户短时间内不可写入,加锁时间可为数秒,短
    暂时间内对线上业务影响极小,此时利用中间层阻塞用户的结构化查询语言
    (sql)。主库的加锁动作有超时控制,控制方式是通过另开线程等待该超时时
    间,时间到将放弃加锁动作,并放弃本次修复。

    具体地,步骤S12:实时比较所述主库在完成加锁处理时执行日志位点
    信息和所述备库的执行日志位点信息是否一致,当一致时,停止所述备库从
    所述主库进行的复制工作。

    在一具体实施例中,以mysql为例,可在主库中通过命令显示主库执行
    日志文件的状态信息(show master status)获取到主库当前位点信息,再等待
    备库复制到该位点,主备库在实现第一次等同步后的极短时间内可实现第二
    次等同步,此时主库的数据为备库修复数据所需的,将备库停止是指停止备
    库从主库进行复制,备库停止后能够获取到备库所需的数据,且能在相应的
    修复位点上进行修复。

    具体地,步骤S13:请求所述主库备份待修复数据,并在所述待修复数
    据备份完成后,对所述主库进行解锁处理。

    接前例,备库停止后,主库进行备份待修复数据,在此,待修复数据是
    指备库所需的修复数据块或数据文件对应的相应数据,将待修复的数据块或
    数据文件在主库进行本地备份,备份时间极短,因此此时主库的加锁超时尚
    未到,对主库进行解锁处理可以使用户可以正常写入。

    具体地,步骤S14:获取所述待修复数据,并基于所述待修复数据对所
    述备库进行修复,在修复完成后,开启所述备库从所述主库进行的复制工作。

    在一优选实施例中,主库备份数据后,将本地备份的数据上传到中转站,
    备库从中转站中下载相应的数据块覆盖到备库或进行数据文件覆盖。按照数
    据块或数据文件进行修复避免了对数据进行逐行分析的问题,完成修复后开
    启备库从主库进行的复制工作,主备之间开始正常复制。

    图2示出根据本申请一个方面的一个优选实施例的修复数据库备库数
    据的流程示意图。其中的标号1-10为流程图的顺序,Master为所述主库,
    Slave为其对应的备库。流程为:步骤S11,在主备第一次等同步后对主库
    加锁;接着,在步骤S12中,在主备第二次等同步后停止备库;随后,在
    步骤S13中,在主库备份数据后将主库解锁;最后,在步骤S14中,将主
    库中的已备份数据上传中转站,备库从中转站中下载进行修复数据,修复
    数据完成后将备库开启。

    在此,数据库的引擎可分为两种,一种为不支持事务的,一种为支持事
    务的,在此,对于不支持事务类型的,其每个表有单独的数据文件和索引文
    件,进行修复时最安全的方式为数据文件的覆盖,对于支持事务类型的,支
    持事务及行级锁。因此,对于不支持事务的引擎,安全修复方式为进行数据
    文件的覆盖,对于支持事务的引擎,在一个事务里用两个执行语句(包括删
    除数据块和导入备份的数据)可以进行修复。以下为针对两种引擎类型进行
    修复数据库备份数据的优选实施例进行说明修复流程。

    针对所述数据库的数据引擎类型为不支持事务类型的,本申请所述方法
    中的步骤S13请求所述主库备份所述待修复数据的数据文件和索引文件;如
    图5示出,所述步骤S14包括:步骤S141、步骤S142、步骤S143和步骤
    S144,其中,在所述步骤S141中,对所述备库进行锁表处理;在所述步骤
    S142中,获取从所述主库中所备份的待修复数据;在步骤S143中,对所述
    备库进行解锁处理;修复表单元144基于所述待修复数据进行修复表操作。

    具体地,请求所述主库备份待修复数据包括:请求所述主库备份所述待
    修复数据的数据文件和索引文件。

    在此,对于数据库的数据引擎类型为不支持事务类型,每个表有单独的
    数据文件和索引文件,进行修复时最安全的方式为数据文件的覆盖,因此主
    库进行备份数据时为备份所述待修复数据的数据文件和索引文件。需要说明
    的是,Myisam引擎有自带的附加修复(repair table)动作,在主库备份时备
    份待修复数据的数据文件,备库执行附加修复(repair table)动作重建被修复
    数据的索引数据。

    具体地,所述获取所述待修复数据包括:步骤S141,对所述备库进行锁
    表处理;步骤S142,获取从所述主库中所备份的待修复数据;步骤S143,对
    所述备库进行解锁处理;步骤S144,基于所述待修复数据进行修复表操作。

    例如,Mysiam引擎为不支持事务,对主库进行加锁时表现为锁表,即直
    接锁定整张表,修复过程中主库中待修复数据备份并将所备份的数据上传到
    中转站中后,因Mysiam引擎的修复过程中对备库执行了附加修复(repair table)
    动作,为防止用户或数据库管理员(dba)进行附加修复(repair table)动作
    从而影响修复,需对备库进行锁表操作。因备库从主库中的复制过程已停止,
    备库若要获取主库中所备份的待修复数据可通过先将主库中已备份好的数据
    上传到中转站,然后备库再从中转站下载备份数据。备库获取备份的待修复
    数据后对备库进行解锁,备库执行附加修复(repair table)动作,重建被修复
    数据的索引数据等,保证备库中原有的数据文件被完全覆盖,获得新的正确
    的数据文件。

    需要说明的是,Mysiam引擎能够执行附加修复(repair table)动作,主
    库备份时只需备份数据文件,备库执行附加修复动作时能够重建索引文件,
    对于其它不带附加修复动作的不支持事务的引擎,主库备份时备份数据文件
    和索引文件,备库利用获取已备份好的数据文件和索引文件进行文件覆盖实
    现表的修复。

    进一步地,例如,Myisam引擎不支持事务,在Myisam表中每个被存在
    分离的文件中,Myisam为表级锁,直接锁定整张表,在锁定期间,其它进程
    无法对该表进行写操作。此外,针对Myisam进行修复的前期工作流程为:
    首先检查是否需要修复,包括检查主备库的地址(ip)、端口(port)的关系
    来确定主备切换机制没有改变,检查主备的数据库文件(db)、数据列表(table)
    的存在性,以确定某个数据库中的某个文档及其相应的表都是完整的,以及
    检查主备库的数据引擎的变化等确定是否需要修复;若需要数据修复则在主
    备的同步状态下将主库中的数据块和备库中相应的数据块进行比对,检查是
    否一致,若不一致则关闭主备切换功能(HA),停止容灾,防止修复过程中
    主备关系发生变化,如一个主库对应多个备库,在修复过程中,主库与备库
    A关系发生变化,备库A已被备库B替换,主库执行的结构化查询语句(sql)
    会执行到备库B中,造成备库B中数据错误;接着,在主备的同步状态下检
    查是否已经修复,若未修复则对备库执行附加修复(repair table)动作,对于
    能够用附加修复(repair table)动作修复的数据可以避免进行锁表才能修复,
    需说明的是,附加修复(repair table)动作只是仅对mysql的Myisam引擎的
    附加动作,其他的数据库中没有这一动作。完成备库的修复表操作后实时比
    较主库的执行日志位点信息和所述备库的执行日志位点信息是否一致,进行
    后续的修复流程。

    如前例,以Myisam引擎为例的数据库备库数据的修复流程为本申请的
    一优选实施例,首先,检查主备库的地址(ip)、端口(port)的关系,数据
    文件(db)、数据列表(table)的存在性,以及数据引擎的变化等;当检查没
    问题时在主备库的复制达到同一位点的状态下从主库获取不一致的数据块进
    行直接比对,若比对结果为不一致则关闭主备切换功能,在主备库的复制达
    到同一位点的状态下检查主备间数据是否一致,若不一致,对于Myisam则
    需要对备库执行附加的修复动作(repair table),其它数据库不执行此附加动
    作,重新检查是否需要修复,若需要修复,则执行以下修复流程:在步骤S11
    中,获取主库的执行日志位点信息和备库的执行日志位点信息,将两个位点
    信息进行比较,若相同,则在步骤S11中对主库进行加锁处理,引擎为不支
    持事务时即为锁表,直接对整张表进行锁定。在步骤S12中,当备库的执行
    日志的位点达到主库完成加锁处理时的执行日志的位点时,备库停止从主库
    复制操作,此时可在需要修复数据对应的位点上对获取到主备库上不一致的
    数据块进行修复。在步骤S13中,请求所述主库备份待修复数据,主库获取
    到请求后会将数据文件进行本地备份,备份完成后,主库进行解锁处理。在
    步骤S14中,获取所述待修复数据,方式为主库将备份的数据上传到中转站,
    备库从中转站中进行下载备份数据,接着,备库执行重建被修复数据的索引
    数据的操作,在修复完成后,开启备库使其从主库中的复制能够正常进行。
    最后,打开主备切换功能,恢复数据库的正常状态。

    本领域技术人员应能理解,所述Myisam的数据库备库数据修复流程为
    本申请的一优选实施例,对本申请所述用于针对数据库的数据引擎类型为不
    支持事务时的修复数据库备库数据的方法进行详细描述,当然,现有或今后
    可能出现的适合本申请修复流程的数据库,均可以引用的方式包含于本申请。

    针对所述数据库的数据引擎类型为支持事务类型的,在本申请方法中,
    所述步骤S13还包括:请求所述主库对所述待修复数据所在的数据块进行逻
    辑备份;在所述步骤14还包括:删除所述备库中待修复的事务数据,将所述
    主库所逻辑备份的待修复数据所在的数据块导入所述备库。

    以所述数据库的数据引擎类型为支持事务类型为例进行详细说明数据库
    备库数据修复流程。

    具体地,所述主库备份待修复数据还包括:请求所述主库对所述待修复
    数据所在的数据块进行逻辑备份。

    在一优选实施例中,主库进行本地备份是对待修复数据所在的数据块进
    行逻辑备份,其中,逻辑备份是指只是原数据库中数据内容的一个映像;逻
    辑备份后主库进行解锁之前锁定的数据块,将本地备份的待修复数据上传到
    中转站,备库从中转站下载备份。

    具体地,基于所述待修复数据对所述备库进行修复还包括:删除所述备
    库中待修复的事务数据,将所述主库所逻辑备份的待修复数据所在的数据块
    导入所述备库。

    接前例,备库从中转站下载备份后用下载的逻辑备份对备库数据进行修
    复,修复动作即在同一事务内删除原来的数据和向备库导入主库备份的数据。

    进一步地,例如,Innodb为Mysql数据库的一种引擎,其支持事务及行
    级锁,其中,行级锁是指仅对指定的记录进行加锁,其它进程还是可以对同
    一表的记录进行操作。Innodb存储它的表和索引在一个表空间中,表空间可
    以包含数个文件或原始磁盘分区。此外,针对Innodb进行修复的前期工作流
    程为:首先检查是否需要修复,包括检查主备库的地址(ip)、端口(port)
    的关系来确定主备切换机制没有改变,检查主备的数据库文件(db)、数据列
    表(table)的存在性,以确定某个数据库中的某个文档及其相应的表都是完
    整的,以及检查主备库的数据引擎的变化等确定是否需要修复;若需要数据
    修复则在主备的同步状态下将主库中的数据块和备库中相应的数据块进行比
    对,检查是否一致,若不一致则关闭主备切换的HA功能,停止容灾,防止
    修复过程中主备关系发生变化,如一个主库对应多个备库,在修复过程中,
    主库与备库A关系发生变化,备库A已被备库B替换,主库执行的结构化查
    询语言(sql)会执行到备库B中,造成备库B中数据错误。完成备库的修复
    表操作后实时比较主库的执行日志位点信息和所述备库的执行日志位点信息
    是否一致,进行后续的修复流程。

    如前例,以Innodb引擎为例的数据库备库数据的修复流程为本申请的又
    一优选实施例,首先,检查主备库的地址、端口的关系,数据文件、数据列
    表的存在性,以及数据引擎的变化等;当检查没问题时在主备库的复制达到
    同一位点的状态下从主库获取不一致的数据块进行直接比对,若比对结果为
    不一致则关闭主备切换功能,在主备库的复制达到同一位点的状态下检查主
    备间数据是否一致,若不一致,则执行以下修复流程:在步骤S11中,获取
    主库的执行日志位点信息和备库的执行日志位点信息,将两个位点信息进行
    比较,若相同,则对主库进行加锁处理,引擎为支持事务时即为锁数据块,
    直接对指定的数据块进行锁定。在步骤S12中,当备库的执行日志的位点达
    到主库完成加锁处理时的执行日志的位点时,备库停止从主库复制操作,此
    时可在需要修复数据对应的位点上对获取到主备库上不一致的数据块进行修
    复。在步骤S13中,请求所述主库备份待修复数据,主库获取到请求后会将
    数据块进行逻辑备份,备份完成后,主库进行解锁处理,即解锁数据块。在
    步骤S14中,获取所述待修复数据,方式为主库将备份的数据上传到中转站,
    备库从中转站中进行下载备份数据,接着,用下载的逻辑备份对备库数据进
    行修复,修复动作是在同一事务内删除原来的数据和向备库导入主库备份的
    数据,在修复完成后,开启备库使其从主库中的复制能够正常进行。最后,
    打开主备切换功能,恢复数据库的正常状态。

    本领域技术人员应能理解,上述Innodb的数据库备库数据的修复流程为
    本申请的又一优选实施例,对本申请所述用于针对数据库的数据引擎类型为
    支持事务时的修复数据库备库数据的方法进行详细描述,当然,现有或今后
    可能出现的适合本申请修复流程的数据库,均可以引用的方式包含于本申请。

    需要说明的是,所述数据库的数据引擎类型为不支持事务类型时的修复
    方式为所述优选实施例中的文件覆盖,但本领域技术人员应能理解,不支持
    事务类型的修复方式也可按照支持事务的修复流程进行修复,如主库备份时
    为逻辑备份,备库数据修复时删除数据块和导入备份数据,但相比较而言,
    进行文件覆盖的方式安全性更高。

    优选地,所述方法还包括:在所述实时比较主库的执行日志位点信息和
    所述备库的执行日志位点信息是否一致之前,关闭所述主库与所述备库之间
    的主备切换功能;在所述获取所述待修复数据,并基于所述待修复数据对所
    述备库进行修复,在修复完成后,打开所述主库与所述备库之间的主备切换
    功能。

    在此,在实时比较主库的执行日志位点信息和所述备库的执行日志位点
    信息是否一致之前,需要关闭主备切换功能(HA),用户将数据写入主库,
    当主库发生某个错误时HA切换到其对应的备库,因此关闭HA功能避免了
    在修复过程中发生用户将数据写到备库的情况。在修复完成后,需要打开主
    备HA功能,使主备能够进行正常的切换。

    优选地,所述方法还包括:记录对所述主库进行可读不可写加锁处理的
    已加锁时间,当所述已加锁时间超过设定超时时间时,停止当前修复操作。

    在一具体实施例中,主库进行可读不可写加锁处理操作时需要有超时
    控制,控制方式可以通过另开线程等待该超时时间,时间到将放弃加锁动
    作,并放弃本次修复。

    本领域技术人员应能理解,所述控制超时方法仅为举例,其他现有的
    或今后可能出现的控制超时的方法如可适用于本发明,也应包含在本发明
    ?;し段б阅?,并在此以引用方式包含于此。

    进一步地,与现有技术相比,通过上述本申请的实施例可知,在修复
    流程过程中没有通过执行总和检验码逐行比较主备数据块中的每一行,而
    是通过数据文件的覆盖或导入数据块实现数据库备库数据的修复,从而避
    免了被修复表没有唯一主键时所造成的修复对象错误的情况克服不需要
    对数据块进行逐行分析就可以完成准确修复数据的问题。

    需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例
    如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设
    备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现
    上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)
    可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或
    软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例
    如,作为与处理器配合从而执行各个步骤或功能的电路。

    另外,本申请的一部分可被应用为计算机程序产品,例如计算机程
    序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供
    根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可
    能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承
    载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计
    算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装
    置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令
    的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置
    运行基于前述根据本申请的多个实施例的方法和/或技术方案。

    对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细
    节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体
    形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性
    的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限
    定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括
    在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要
    求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装
    置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件
    或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定
    的顺序。

       内容来自专利网重庆时时彩单双窍门 www.4mum.com.cn转载请标明出处

    关于本文
    本文标题:用于修复数据库备库数据的方法和设备.pdf
    链接地址://www.4mum.com.cn/p-6000760.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
  • 上证指数月k线图 30选5一般什么时候开奖 重庆福彩欢乐生肖玩法 江西快3走势图基本 2018海南环岛赛路线图 吉林十一选五任四遗漏 电子游戏的分类 福彩试机号 山西快乐10分开奖号码 北京pk10高手技术分享 弈城围棋官网 北京11选5开奖直播 3gp电影娱乐平台 3d捕鱼大亨单机版 河北好运彩3 体彩泳坛夺金玩法图