一种主备库数据修复的方法以及装置与流程

文档序号:11829281阅读:180来源:国知局
本申请涉及数据修复
技术领域
:,具体涉及一种主备库数据修复的方法,更具体的,包括主备库数据修复中主库的数据处理方法;以及与该主库的数据处理方法相对应的备库的数据更新方法;以及结合所述主库的数据处理方法和备库的数据更新方法形成的主备库数据修复方法。本申请同时涉及一种主备库数据修复中主库的数据处理装置、一种备库的数据更新装置、一种主备库数据修复的装置,以及一种电子设备。
背景技术
::随着近几年来业务系统的高速发展,当前的数据库管理系统(DatabaseManagementSystem,DBMS)也随着客户的增加、业务的增长以及业务系统的交易数和交易复杂度的增长有了大规模的提升,同时也导致了DBMS中的数据变化更加频繁,DBMS的ACID(原子性Atomicity、一致性Consistency、隔离性Isolation和持久性Durability)实现,保证了DBMS中数据的稳定性和持久性;当前,DBMS采用的是开放的MySQL数据库产品,通过主备库进行异步数据复制来实现,正常情况下,主备库的数据记录是一致的。但是,在一些情况下,会出现主备库数据记录不一致的情况,就需要及时进行修复。针对上述主备库的数据记录不一致的情况,为了避免差异数据的检测过程对主备库造成过大压力,一般采取分片检测的方法,根据索引分别在主库和备库取对应的数据分片(包含若干行数据记录),对比在主库和备库取到的数据分片,若数据全部相同则继续检测下一个数据分片,若存在不相同的数据则表明存在差异数据。现有技术下,针对检测出的主库和备库之间存在差异数据,通过执行以下步骤完成差异数据的修复:在主库上执行一个锁定命令,锁定主库上包含差异数据的数据分片;导出主库上锁定的数据分片中的数据记录;删除主库上导出的该数据分片在备库上对应的数据分片,并将主库上导出的该数据分片中的数据记录插入备库;解除在主库上执行的锁定命令。上述提供的现有技术存在明显的缺陷,在上述数据记录的修复过程中,主库会继续收到数据更新请求,为防止修复时可能发生的数据更新,在修复时,将当前需要修复的一个数据分片(包含若干行数据记录)锁定,锁定时间取决于数据分片中包含的数据记录的数目,以及备库数据处理的执行速度,因此,会在一段时间内,影响主库的数据业务,对于主库的数据更新产生一定的延时。技术实现要素:本申请提供一种主备库数据修复中主库的数据处理方法,以解决现有技术存在的数据锁定造成的延时问题。本申请同时提供一种备库的数据更新方法,该方法和上述主库的数据处理方法相配合,实现主备库数据修复。本申请同时提供一种将上述主备库数据修复中主库的数据处理方法和上述备库的数据更新方法相结合,实现主备库数据修复的方法。本申请同时提供一种主备库数据修复中主库的数据处理装置,一种备库的数据更新装置,一种主备库数据修复装置,以及一种电子设备。本申请提供一种用于数据备份的方法,包括:读取主库和备库之间存在差异的差异数据,每组差异数据在主库和备库至少存在一个对应的数据记录;确定每组差异数据的数据差异类型;所述数据差异类型包括第一数据差异类型和第二数据差异类型;所述第一数据差异类型包括:主库存在对应数据记录的差异数据的数据差异类型;所述第二数据差异类型包括:在主库不存在对应数据记录的差异数据的数据差异类型;若所述差异数据的数据差异类型为第一数据差异类型,则针对所述差异数据在主库中的数据记录执行更新操作;若所述差异数据的数据差异类型为第二数据差异类型,则在主库中执行插入所述差异数据的数据记录的操作;然后,针对主库中插入的所述差异数据的数据记录执行删除操作。可选的,所述第一数据差异类型,包括以下两种子数据差异类型:在主库和备库都存在对应数据记录但其中包含的数据值不同的差异数据的 数据差异类型;以及,主库存在而备库不存在对应数据记录的差异数据的数据差异类型。可选的,若所述差异数据的数据差异类型为第一数据差异类型,则针对所述差异数据在主库中的数据记录执行更新操作的步骤,包括:针对所述差异数据在主库中的数据记录,以所述差异数据在主库中的数据记录为依据,执行更新操作;将更新操作执行前所述差异数据在主库中的数据记录,更新操作执行后所述差异数据在主库中的数据记录,以及更新操作对应的数据更新标记写入二进制日志。可选的,若所述差异数据的数据差异类型为第二数据差异类型,则在主库中执行插入所述差异数据的数据记录的操作的步骤,包括:以所述差异数据的数据记录为依据,在主库中执行插入所述差异数据的数据记录的操作;将主库中插入的所述差异数据的数据记录,以及插入操作对应的数据插入标记写入二进制日志。可选的,若所述差异数据的数据差异类型为第二数据差异类型,则针对主库中插入的所述差异数据的数据记录执行删除操作的步骤,包括:删除所述差异数据的数据记录;将删除前所述差异数据在主库中的数据记录,以及删除操作对应的数据删除标记写入二进制日志。本申请还提供一种主备库数据修复中主库的数据处理装置,包括:差异数据读取单元,用于读取主库和备库之间存在差异的差异数据,每组差异数据在主库和备库至少存在一个对应的数据记录;数据差异类型确定单元,用于根据所述差异数据,确定每组差异数据的数据差异类型;所述数据差异类型包括第一数据差异类型和第二数据差异类型;所述第一数据差异类型包括:主库存在对应数据记录的差异数据的数据差异类型;所述第二数据差异类型包括:在主库不存在对应数据记录的差异数据的数据差异类型;若所述差异数据的数据差异类型为第一数据差异类型,则启动数据记录更 新单元;所述数据记录更新单元,用于针对所述差异数据在主库中的数据记录执行更新操作;若所述差异数据的数据差异类型为第二数据差异类型,则依次启动数据记录插入单元和数据记录删除单元;所述数据记录插入单元,用于在主库中执行插入所述差异数据的数据记录的操作;所述数据记录删除单元,用于针对主库中插入的所述差异数据的数据记录执行删除操作。可选的,所述第一数据差异类型,包括以下两种子数据差异类型:在主库和备库都存在对应数据记录但其中包含的数据值不同的差异数据的数据差异类型;以及,主库存在而备库不存在对应数据记录的差异数据的数据差异类型。可选的,所述数据记录更新单元,包括:数据记录更新子单元,用于针对所述差异数据在主库中的数据记录,以所述差异数据在主库中的数据记录为依据,执行更新操作;更新二进制日志生成子单元,用于将更新操作执行前所述差异数据在主库中的数据记录,更新操作执行后所述差异数据在主库中的数据记录,以及更新操作对应的数据更新标记写入二进制日志。可选的,所述数据记录插入单元,包括:数据记录插入子单元,用于以所述差异数据的数据记录为依据,在主库中执行插入所述差异数据的数据记录的操作;插入二进制日志生成子单元,用于将主库中插入的所述差异数据的数据记录,以及插入操作对应的数据插入标记写入二进制日志。可选的,所述数据记录插入单元,包括:数据记录删除子单元,用于删除所述差异数据的数据记录;删除二进制日志生成子单元,用于将删除前所述差异数据在主库中的数据记录,以及删除操作对应的数据删除标记写入二进制日志。本申请还提供一种备库的数据更新方法,包括:读取中继日志中记录的数据操作记录;所述数据操作记录包括:每个数据处理操作对应的数据处理标记,以及每个数据处理操作相关的数据记录;根据从中继日志中读取的数据操作记录,执行相应操作;同时,遵循以下特别制定的规则:若数据处理标记为数据插入标记,则在数据表中查询对应该数据插入标记的数据记录是否存在;若存在,则不作处理;若该中继日志中记录的数据处理标记为数据更新标记,则在数据表中查询对应该数据更新标记的数据记录是否存在;若不存在,则将该中继日志中记录的更新操作执行后的数据记录插入数据表中。本申请还提供一种备库的数据更新装置,包括:数据操作记录读取单元,用于读取中继日志中记录的数据操作记录;所述数据操作记录包括:每个数据处理操作对应的数据处理标记,以及每个数据处理操作相关的数据记录;操作执行单元,用于根据从中继日志中读取的数据操作记录,执行相应操作;同时,遵循以下特别制定的规则:若数据处理标记为数据插入标记,则在数据表中查询对应该数据插入标记的数据记录是否存在;若存在,则不作处理;若该中继日志中记录的数据处理标记为数据更新标记,则在数据表中查询对应该数据更新标记的数据记录是否存在;若不存在,则将该中继日志中记录的更新操作执行后的数据记录插入数据表中。本申请还提供一种主备库数据修复的方法,包括:主库以上述用于数据备份的方法进行差异数据的处理;该处理过程记录在二进制日志中;将二进制日志中的数据操作记录写入对应的中继日志中;所述数据操作记录包括:每个数据处理操作对应的数据处理标记,以及每个数据处理操作相关的数据记录;备库根据所述中继日志,以上述备库的数据更新方法进行数据更新。本申请还提供一种主备库数据修复的装置,包括:上述主备库数据修复中主库的数据处理装置;主库通过上述主备库数据修 复中主库的数据处理装置进行差异数据的处理;该处理过程记录在二进制日志中;日志数据复制单元,用于将二进制日志中的数据操作记录写入对应的中继日志中;所述数据操作记录包括:每个数据处理操作对应的数据处理标记,以及每个数据处理操作相关的数据记录;上述备库的数据更新装置;备库通过上述备库的数据更新装置进行数据更新。本申请还提供一种电子设备,包括:显示器;存储器,用于存储主库和备库的数据记录;处理器,用于读取主库和备库之间存在差异的差异数据,每组差异数据在主库和备库至少存在一个对应的数据记录;确定每组差异数据的数据差异类型;所述数据差异类型包括第一数据差异类型和第二数据差异类型;所述第一数据差异类型包括:主库存在对应数据记录的差异数据的数据差异类型;所述第二数据差异类型包括:在主库不存在对应数据记录的差异数据的数据差异类型;若所述差异数据的数据差异类型为第一数据差异类型,则针对所述差异数据在主库中的数据记录执行更新操作;若所述差异数据的数据差异类型为第二数据差异类型,则在主库中执行插入所述差异数据的数据记录的操作;然后,针对主库中插入的所述差异数据的数据记录执行删除操作。与现有技术相比,本申请具有以下优点:本申请提供的主备库数据修复中主库的数据处理方法,包括:读取主库和备库之间存在差异的差异数据,每组差异数据在主库和备库至少存在一个对应的数据记录;确定每组差异数据的数据差异类型;所述数据差异类型包括第一数据差异类型和第二数据差异类型;所述第一数据差异类型包括:主库存在对应数据记录的差异数据的数据差异类型;所述第二数据差异类型包括:在主库不存在对应数据记录的差异数据的数据差异类型;若所述差异数据的数据差异类型为第一数据差异类型,则针对所述差异数据在主库中的数据记录执行更新操作;若所述差异数据的数据差异类型为第二数据差异类型,则在主库中执行 插入所述差异数据的数据记录的操作;然后,针对主库中插入的所述差异数据的数据记录执行删除操作。本申请提供的备库的数据更新方法,包括:读取中继日志中记录的数据操作记录;所述数据操作记录包括:每个数据处理操作对应的数据处理标记,以及每个数据处理操作相关的数据记录;根据从中继日志中读取的数据操作记录,执行相应操作;同时,遵循以下特别制定的规则:若数据处理标记为数据插入标记,则在数据表中查询对应该数据插入标记的数据记录是否存在;若存在,则不作处理;若该中继日志中记录的数据处理标记为数据更新标记,则在数据表中查询对应该数据更新标记的数据记录是否存在;若不存在,则将该中继日志中记录的更新操作执行后的数据记录插入数据表中。本申请提供的主备库数据修复中主库的数据处理方法和备库的数据更新方法相互配合,可实现主库和备库之间存在的差异数据的修复,无需对差异数据在主库对应的数据记录进行锁定,实现方式简单,在备库根据中继日志对主库数据进行异步复制的过程中即可自然实现;同时,该方法也避免了数据锁定造成的延时。附图说明附图1是本申请第一实施例提供的一种主备库数据修复中主库的数据处理方法处理流程图;附图2是本申请第二实施例提供的一种主备库数据修复中主库的数据处理装置示意图;附图3是本申请第三实施例提供的一种备库的数据更新方法处理流程图;附图4是本申请第四实施例提供的一种备库的数据更新装置示意图;附图5是本申请第五实施例提供的一种主备库数据修复的方法处理流程图;附图6是本申请第六实施例提供的一种主备库数据修复的装置示意图;附图7是本申请第七实施例提供的一种电子设备示意图。具体实施方式在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其他方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。本申请提供一种主备库数据修复中主库的数据处理方法;以及与该主库的数据处理方法相对应的备库的数据更新方法;以及结合所述主库的数据处理方法和备库的数据更新方法形成的主备库数据修复方法。本申请同时提供一种主备库数据修复中主库的数据处理装置、一种备库的数据更新装置、一种主备库数据修复的装置,以及一种电子设备。实施例一参照附图1,其示出了本实施例提供的一种主备库数据修复中主库的数据处理方法处理流程图。本申请提供的主备库数据修复中主库的数据处理方法,基于主备库异步数据复制过程中的主库实现。以下结合附图1对本实施例提供的一种主备库数据修复中主库的数据处理方法进行说明,并且对该方法的各个步骤进行说明。为了便于说明主备库数据修复的实现方法,在一些步骤中,还对备库中相应的数据更新过程做了说明。本申请提供的一种主备库数据修复中主库的数据处理方法,包括:步骤S101,读取主库和备库之间存在差异的差异数据。本实施例以MySQL数据库为例,对本申请提供的主备库数据修复中主库的数据处理方法进行说明;因此,本实施例中,所述主库和备库是指MySQL数据库。在具体实施时,还可以基于其他的数据库平台对本申请提供的主备库数据修复中主库的数据处理方法进行说明,在此不作限定。正常情况下,主库和备库的数据记录一一对应,并且相同数据记录中包含的数据值相同;即:对于主库中的任意一个数据记录,备库中都存在一个与其相同的数据记录,在此,将主库和备库中的各自一个相互对应并且相同的数据记录,作为一组数据记录。所述差异数据,是指主库和备库之间存在的所有不一致的数据记录,统称为差异数据;并且,所述差异数据中包含的任意一组差异数据,在主库和备库至少存在一个对应的数据记录。具体的,以所述差异数据中包含的任意一组差异数据为例,所述差异数据包括如下三种:1、在主库存在该差异数据对应的数据记录,备库也存在该差异数据对应的 数据记录,但是该差异数据在主库和备库各自对应的数据记录的具体数据值不同;即:在主库和备库各自对应的数据记录都存在,但是二者的值不相等。对于此种差异数据,需要根据主库的数据记录的具体数据值更新备库中相应数据记录的具体数据值。2、在主库存在该差异数据对应的数据记录,备库不存在该差异数据对应的数据记录;即:在主库存在对应的数据记录,在备库不存在对应的数据记录。对于此种差异数据,需要根据主库中的数据记录在备库中补充该数据记录。3、在主库不存在该差异数据对应的数据记录,备库存在该差异数据对应的数据记录;即:在备库存在的数据记录,在主库不存在对应的数据记录。对于此种差异数据,需要删除备库中的该组差异数据的数据记录。步骤S102,确定每组差异数据的数据差异类型。本实施例中,将所述差异数据的数据差异类型分为第一数据差异类型和第二数据差异类型。所述第一数据差异类型,是指主库存在对应数据记录的差异数据的数据差异类型。具体的,所述第一数据差异类型,包括以下两种子数据差异类型:在主库和备库都存在对应数据记录但其中包含的数据值不同的差异数据的数据差异类型,即上述步骤S101中所述的第1种差异数据的数据差异类型;以及,主库存在而备库不存在对应数据记录的差异数据的数据差异类型,即上述步骤S101中所述的第2种差异数据的数据差异类型。所述第二数据差异类型,是指在主库不存在对应数据记录的差异数据的数据差异类型;即上述步骤S101中所述的第3种差异数据的数据差异类型。步骤S103,针对所述差异数据在主库中的数据记录执行更新操作。如果上述步骤S101读取的差异数据的数据差异类型是第一数据差异类型,则所述针对所述差异数据在主库中的数据记录执行更新操作,具体实现如下:针对所述差异数据在主库中的数据记录,以所述差异数据在主库中的数据 记录为依据,执行更新操作;将更新操作执行前所述差异数据在主库中的数据记录,更新操作执行后所述差异数据在主库中的数据记录,以及更新操作对应的数据更新标记写入二进制日志(binlog)。即:针对所述差异数据在主库中的数据记录,以自身为依据,执行原样更新操作,并且将该原样更新操作前后的数据记录和数据更新标记写入二进制日志(binlog)中。例如:主库中一个简单的表结构,表名table1;表中包含两个字段:id为主键,num是普通字段;差异数据在主库中的数据记录,第n行数据记录:(n,num1);执行语句:updatetable1setnum=num1whereid=n;该语句执行完毕之后,将该语句写入二进制日志(binlog)中;并且,将该语句执行前的数据记录(n,num1),该语句执行前的数据记录(n,num1),以及该语句对应的数据更新标记(UPDATE)写入二进制日志(binlog)中。在此之后,基于主备库的异步复制原理,该二进制日志(binlog)中记录的数据全部被复制到中继日志(relaylog)中;在备库中进行异步复制时,执行中继日志(relaylog)中记录的所述更新操作;如果差异数据属于步骤S101中的第1中差异数据,假设对应的,差异数据在备库中的数据记录,第n行数据记录的值为:(n,num1');根据中继日志(relaylog),在备库中执行所述更新操作之后,差异数据在备库中的数据记录,第n行数据记录被更新为(n,num1),与主库保持一致。如果差异数据属于步骤S101中的第1中差异数据,即备库中不存在对应的数据记录;由于在备库中根据所述键值没有找到键值为n的数据记录;根据为备库的数据更新方法特别制定的规则,此时将该中继日志(relaylog)中记录的所述更新操作执行后的数据记录插入数据表中,即插入一个第n行数据记录,这样,在备库中第n行数据记录为:(n,num1),同样与主库保持一致。通过上述主库备库的配合,即可完成主库和备库此行(第n行)数据记录的修复。可以看出,上述主库中根据差异数据在主库中的数据记录进行的原样更新操作,可以在主库的二进制日志(binlog)中,增加一个更新操作记录;这个更新操作记录传递到备库的中继日志后,结合为备库制定的特别规则,在备库根据中继日志(relaylog)对主库数据进行异步复制的过程中即可自然实现数据修复。步骤S104,在主库中执行插入所述差异数据的数据记录的操作。本实施中,所述第二数据差异类型,是指在主库不存在对应数据记录的差异数据的数据差异类型;即:上述步骤S101中所述的第3种差异数据的数据差异类型,差异数据在主库对应的数据记录为空。针对数据第二数据差异类型的差异数据,需要首先执行如下步骤:以所述差异数据的数据记录为依据,在主库中执行插入所述差异数据的数据记录的操作;将主库中插入的所述差异数据的数据记录,以及插入操作对应的数据插入标记写入二进制日志(binlog)。例如:主库中一个简单的表结构,表名table1;表中包含两个字段:id为主键,num是普通字段;差异数据在主库中不存在对应的数据记录;对应的,差异数据在备库中的数据记录为第n行数据记录:(n,num2');执行语句:insertintotable1values(n,num2');该语句执行完毕之后,该语句被写入二进制日志(binlog)中;并将该语句执行后的数据记录(n,num2'),以及该语句对应的数据插入标记(INSERT)写入二进制日志(binlog)中。在此之后,基于主备库的异步复制原理,该二进制日志(binlog)中记录的所有数据全部被复制到中继日志(relaylog)中;在备库中执行中继日志(relaylog)中记录的数据插入操作;对应的,差异数据在备库中的数据记录,第n行数据记录的值为:(n,num2');根据中继日志(relaylog),在备库中执行数据插入操作;由于该数据插入操作要插入的数据记录(n,num2')在备库中已经存在,根据为备库设定的特别规则,该数据插入操作不执行。步骤S105,针对主库中插入的所述差异数据的数据记录执行删除操作。具体实现如下:根据上述步骤S104,将上述步骤S104插入主库的所述差异数据的数据记录删除;将删除前所述差异数据在主库中的数据记录,以及删除操作对应的数据删除标记写入二进制日志(binlog)。结合上述步骤S104的举例,例如:差异数据在备库中的数据记录被插入主库之后,差异数据在主库中的数据记录,第n行数据记录:(n,num2')执行语句:deletefromtable1whereid=n;该语句执行完毕之后,主库中的该数据记录被删除,同时,该语句执行前的数据记录(n,num2'),以及该语句对应的数据删除标记(DELETE)写入二进制日志(binlog)中。在此之后,基于主备库的异步复制原理,该二进制日志(binlog)中记录的所有数据全部被复制到中继日志(relaylog)中;在备库中执行中继日志(relaylog)中记录的数据删除操作;根据中继日志(relaylog),差异数据在备库中的数据记录,第n行数据记录被删除,与主库保持一致。可以看出,使用本实施例提供的方法在主库对差异数据进行相应的数据处理后,既可以在备库遵循简单的规则的情况下,实现差异数据的修复。实施例二在上述的实施例中,提供了一种主备库数据修复中主库的数据处理方法,与之相对应的,本申请提供了一种主备库数据修复中主库的数据处理装置,由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关的部分请参见上述方法实施例对应说明即可。下述描述的装置实施例仅仅是示意性的。参照附图2,其示出了根据本实施例提供的一种主备库数据修复中主库的数据处理装置示意图。本申请提供的一种主备库数据修复中主库的数据处理装置,包括:差异数据读取单元201,用于读取主库和备库之间存在差异的差异数据,每组差异数据在主库和备库至少存在一个对应的数据记录;数据差异类型确定单元202,用于根据所述差异数据,确定每组差异数据的数据差异类型;所述数据差异类型包括第一数据差异类型和第二数据差异类型;所述第一数据差异类型包括:主库存在对应数据记录的差异数据的数据差异类型;所述第二数据差异类型包括:在主库不存在对应数据记录的差异数据的数据差异类型;若所述差异数据的数据差异类型为第一数据差异类型,则启动数据记录更新单元203;所述数据记录更新单元203,用于针对所述差异数据在主库中的数据记录执行更新操作;若所述差异数据的数据差异类型为第二数据差异类型,则依次启动数据记录插入单元204和数据记录删除单元205;所述数据记录插入单元204,用于在主库中执行插入所述差异数据的数据记录的操作;所述数据记录删除单元205,用于针对主库中插入的所述差异数据的数据记录执行删除操作。可选的,所述第一数据差异类型,包括以下两种子数据差异类型:在主库和备库都存在对应数据记录但其中包含的数据值不同的差异数据的数据差异类型;以及,主库存在而备库不存在对应数据记录的差异数据的数据差异类型。可选的,所述数据记录更新单元203,包括:数据记录更新子单元,用于针对所述差异数据在主库中的数据记录,以所述差异数据在主库中的数据记录为依据,执行更新操作;更新二进制日志生成子单元,用于将更新操作执行前所述差异数据在主库中的数据记录,更新操作执行后所述差异数据在主库中的数据记录,以及更新 操作对应的数据更新标记写入二进制日志。可选的,所述数据记录插入单元204,包括:数据记录插入子单元,用于以所述差异数据的数据记录为依据,在主库中执行插入所述差异数据的数据记录的操作;插入二进制日志生成子单元,用于将主库中插入的所述差异数据的数据记录,以及插入操作对应的数据插入标记写入二进制日志。可选的,所述数据记录插入单元205,包括:数据记录删除子单元,用于删除所述差异数据的数据记录;删除二进制日志生成子单元,用于将删除前所述差异数据在主库中的数据记录,以及删除操作对应的数据删除标记写入二进制日志。实施例三在上述的实施例中,提供了一种主备库数据修复中主库的数据处理方法,在此基础上,本申请还提供一种备库的数据更新方法,基于主备库异步数据复制过程中的备库实现,与上述主备库数据修复中主库的数据处理方法相对应。本实施例与上述主备库数据修复中主库的数据处理方法实施例相对应,内容相同的部分不再赘述,阅读本实施例请参照上述主备库数据修复中主库的数据处理方法实施例。以下结合附图3对本申请提供的一种备库的数据更新方法进行说明,并且对该方法的各个步骤进行说明。本申请提供的备库的数据更新方法,包括:步骤S301,读取中继日志中记录的数据操作记录。所述数据操作记录包括:每个数据处理操作对应的数据处理标记,以及每个数据处理操作相关的数据记录。例如:读取中继日志(relaylog)中记录的数据操作记录;其中,该数据操作记录包括如下信息:数据操作所针对的数据记录主键n、更新操作对应的数据更新标记(UPDATE)、该更新操作执行前的数据记录(n,num1),该新操作执行后的数据记录(n,num1)。或者读取中继日志(relaylog)中记录的数据操作记录;其中,该数据操作记录包括:数据操作所针对的数据记录主键n、以及插入操作对应的数据插入标记(INSERT)、该插入操作执行后的数据记录(n,num2')。或者读取中继日志(relaylog)中记录的数据操作记录;其中,该数据操作记录包括:数据操作所针对的数据记录主键n、删除操作对应的数据删除标记(DELETE)、该删除操作执行前的数据记录(n,num2')。步骤S302,根据从中继日志中读取的数据操作记录,执行相应操作。需要说明的是,本步骤根据从中继日志(relaylog)中读取的数据操作记录,在备库执行相应操作,同时,遵循以下两条特别指定的规则:特别制定的规则1:若数据处理标记为数据插入标记,则在数据表中根据该操作记录中的主键值查询对应该数据插入标记的数据记录是否存在;若存在,则不作处理。需要说明的是,如果上述判断结果为所述数据记录不存在,则根据所述中继日志(relaylog)执行插入操作,这属于备库根据中继日志(relaylog)进行的常规操作,不是特别制定的规则。特别制定的规则2:该中继日志(relaylog)中记录的数据处理标记为数据更新标记,则在数据表中根据该操作记录中的主键值查询对应该数据更新标记的数据记录是否存在;若不存在,则将该中继日志(relaylog)中记录的更新操作执行后的数据记录插入数据表中。需要说明的是,若上述判断结果为数据记录存在,则根据中继日志(relaylog)的进行更新操作,或者不作处理,这属于备库根据中继日志(relaylog)进行的常规操作,不是特别制定的规则。例如:从中继日志(relaylog)中读取的针对主键值为n的数据操作记录有:插入操作对应的数据插入标记(INSERT)、该插入操作执行后的数据记录(n,num2');由于该数据处理标记为数据插入标记(INSERT),则在数据表(table1')中根据其主键值n查询对应该数据插入标记(INSERT)的数据记录是否存在;若存在,则遵循上述特别指定的规则1,不作处理;此时,与主库中对应的数据记录保持一致;若不存在,则根据备库异步复制的一般规则处理,将该数据记录(n,num2') 插入数据表(table1')中,使其与主库中对应的数据记录保持一致。或者从中继日志(relaylog)中读取的针对主键值n的数据操作记录有:更新操作对应的数据更新标记(UPDATE)、该更新操作执行前的数据记录(n,num1),该新操作执行后的数据记录(n,num1);由于该数据处理标记为数据更新标记(UPDATE),则在数据表(table1')中根据主键值n查询对应该数据更新标记(UPDATE)的数据记录是否存在;若存在,则根据备库异步复制的一般规则,以所述数据记录为依据,执行更新操作,使其与主库中对应的数据记录(n,num1)保持一致。若不存在,则根据前述特别制定的规则2,将该中继日志(relaylog)中记录的更新操作执行后的数据记录(n,num1)插入数据表(table1')中,使其与主库中对应的数据记录保持一致。执行上述数据操作之后,备库的数据记录与主库的数据记录保持一致,从而实现主备库之间的差异数据的修复。对于主库不存在对应数据的数据差异类型,由于主库在处理过程中进行了先插入后删除的操作,在遵循上述特别制定的规则1之后,先插入的步骤不会作任何处理;而后删除的操作则会根据中继日志(relaylog)的操作记录执行,这样就将备库比主库多出来的该条记录删除了。实施例四在上述的实施例中,提供了一种备库的数据更新方法,与之相对应的,本申请提供了一种备库的数据更新装置,由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关的部分请参见上述方法实施例对应说明即可。下述描述的装置实施例仅仅是示意性的。参照附图4,其示出了根据本实施例提供的一种备库的数据更新装置示意图。本申请提供的一种备库的数据更新装置,包括:数据操作记录读取单元401,用于读取中继日志中记录的数据操作记录;所述数据操作记录包括:每个数据处理操作对应的数据处理标记,以及每个数据处理操作相关的数据记录;操作执行单元402,用于根据从中继日志中读取的数据操作记录,执行相应 操作;同时,遵循以下特别制定的规则:若数据处理标记为数据插入标记,则在数据表中查询对应该数据插入标记的数据记录是否存在;若存在,则不作处理;若该中继日志中记录的数据处理标记为数据更新标记,则在数据表中查询对应该数据更新标记的数据记录是否存在;若不存在,则将该中继日志中记录的更新操作执行后的数据记录插入数据表中。实施例五在上述的实施例中,提供了一种主备库数据修复中主库的数据处理方法,以及一种备库的数据更新方法实施例,在此基础上,本申请还提供了一种主备库数据修复的方法,该方法是基于上述主备库数据修复中主库的数据处理方法、备库的数据更新方法实现。本实施例与上述主备库数据修复中主库的数据处理方法实施例,以及上述备库的数据更新方法实施例的内容基本相似,内容相同的部分不再赘述,阅读本实施例请参照上述实施例。以下结合附图5对本申请提供的一种主备库数据修复的方法进行说明,并且对该方法的各个步骤进行说明。本申请提供的主备库数据修复的方法,包括:步骤S501,主库以所述主备库数据修复中主库的数据处理方法进行差异数据的处理;该处理过程记录在二进制日志中;步骤S502,将二进制日志中的数据操作记录写入对应的中继日志中;所述数据操作记录包括:每个数据处理操作对应的数据处理标记,以及每个数据处理操作相关的数据记录;步骤S503,备库根据所述中继日志,以所述备库的数据更新方法进行数据更新。实施例六在上述的实施例中,提供了一种主备库数据修复的方法,与之相对应的,本申请提供了一种主备库数据修复的装置,由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关的部分请参见上述方法实施例对应说明即可。下述描述的装置实施例仅仅是示意性的。参照附图6,其示出了根据本实施例提供的一种主备库数据修复的装置示意图。本申请提供的一种主备库数据修复的装置,包括:上述主备库数据修复中主库的数据处理装置601;主库通过所述主备库数据修复中主库的数据处理装置601进行差异数据的处理;该处理过程记录在二进制日志中;日志数据复制单元602,用于将二进制日志中的数据操作记录写入对应的中继日志中;所述数据操作记录包括:每个数据处理操作对应的数据处理标记,以及每个数据处理操作相关的数据记录;上述备库的数据更新装置603;备库通过所述备库的数据更新装置603进行数据更新。实施例七在上述的实施例中,提供了一种主备库数据修复中主库的数据处理方法,与之相对应的,本申请提供了一种电子设备,基于所述电子设备可实现所述主备库数据修复中主库的数据处理方法。本实施例相关的部分请参见上述方法实施例对应说明即可。下述描述的装置实施例仅仅是示意性的。参照附图7,其示出了根据本实施例提供的一种电子设备示意图。本申请提供的一种电子设备,包括:显示器701;存储器702,用于存储主库和备库的数据记录;处理器703,用于读取存储器702存储的主库和备库之间存在差异的差异数据,每组差异数据在主库和备库至少存在一个对应的数据记录;确定每组差异数据的数据差异类型;所述数据差异类型包括第一数据差异类型和第二数据差异类型;所述第一数据差异类型包括:主库存在对应数据记录的差异数据的数据差异类型;所述第二数据差异类型包括:在主库不存在对应数据记录的差异数据的数据差异类型;若所述差异数据的数据差异类型为第一数据差异类型,则针对所述差异数据在主库中的数据记录执行更新操作;若所述差异数据的数据差异类型为第二数据差异类型,则在主库中执行插入所述差异数据的数据记录的操作;然后,针对主库中插入的所述差异数据的数据记录执行删除操作。本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1