数据复制处理方法、装置、容灾系统、设备及存储介质与流程

文档序号:19786556发布日期:2020-01-24 13:39阅读:236来源:国知局
数据复制处理方法、装置、容灾系统、设备及存储介质与流程

本申请属于数据处理领域,尤其涉及一种数据复制处理方法、装置、容灾系统、设备及存储介质。



背景技术:

为了防范信息系统数据损失、业务暂停的情况,可采用业务系统容灾备份技术以及双活部署技术在多个设备中存储相同的数据。数据复制是业务系统容灾备份技术以及双活部署技术中的重要基础之一。

在数据复制过程中,多个设备中的数据可能会发生复制冲突。现阶段,若发现复制冲突,则可发出警报并中断数据复制。但中断数据复制会降低容灾备份或双活部署的效率和可用性。为了保证容灾备份或双活部署的效率和可用性,可采用强制覆盖数据的方法,即利用其中一个设备的数据强制覆盖另一设备的数据。但在多个设备关系较为复杂的情况下,如多个设备级联或两个设备双向同步数据的情况下,数据覆盖设备以及数据被覆盖设备的选取不当仍然会造成复制冲突,导致多个设备中的数据出现差异,在业务从一个设备切换至另一个设备的情况下,无法保证业务的正确性。



技术实现要素:

本申请实施例提供了一种数据复制处理方法、装置、容灾系统、设备及存储介质,能够保证业务的正确性。

第一方面,本申请实施例提供一种数据复制处理方法,用于第一设备,第一设备与第二设备之间进行数据复制,方法包括:接收并响应第二设备传输来的数据复制指令,执行与第二设备相同的数据操作;若检测到与数据操作对应的报错消息,根据报错消息对目标数据执行一致性操作,使得一致性操作后的第一设备中目标数据与第二设备执行数据操作后的目标数据一致,目标数据包括数据操作指示的数据;根据一致性操作,记录数据操作日志,使得第一设备的数据操作日志与第二设备的数据操作日志一致。

第二方面,本申请实施例提供一种数据复制处理装置,包括:第一执行模块,用于接收并响应第二设备传输来的数据复制指令,执行与第二设备相同的数据操作;第二执行模块,若检测到与数据操作对应的报错消息,根据报错消息对目标数据执行一致性操作,使得一致性操作后的第一设备中目标数据与第二设备执行数据操作后的目标数据一致,目标数据包括数据操作指示的数据;日志记录模块,用于根据一致性操作,记录数据操作日志,使得第一设备的数据操作日志与第二设备的数据操作日志一致。

第三方面,本申请实施例提供一种容灾系统,包括至少两个数据设备,数据设备用于执行第一方面的技术方案中的数据复制处理方法。

第四方面,本申请实施例提供一种数据设备,包括处理器、存储器及存储在存储器上并可在处理器上运行的计算机程序,计算机程序被处理器执行时实现第一方面的技术方案中的数据复制处理方法。

第五方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现第一方面的技术方案的数据复制处理方法。

本申请实施例提供一种数据复制处理方法、装置、容灾系统、设备及存储介质,第一设备在接收到第二设备传输来的数据复制指令的情况下,可执行与第二设备相同的数据操作。第一设备在执行该数据操作的过程中可能发生复制冲突,若检测到表征复制冲突错误的报错消息,则可根据报错消息对目标数据执行一致性操作,保证一致性操作后的第一设备中目标数据与第二设备中目标数据指示的数据一致,从而保证第一设备和第二设备中的所有数据一致。而且,根据一致性操作,记录数据操作日志,使得第一设备的数据操作日志与第二设备的数据操作日志一致。在业务在第一设备和第二设备之间切换的情况下,由于第一设备的数据及数据操作日志与第二设备的数据及数据操作日志一致,因此,在业务在第一设备和第二设备之间切换的情况下,可以保证业务的正确性。

附图说明

从下面结合附图对本发明的具体实施方式的描述中可以更好地理解本发明其中,相同或相似的附图标记表示相同或相似的特征。

图1为本申请实施例提供的包括两个数据设备的容灾系统的示意图;

图2为本申请一实施例提供的一种数据复制处理方法的流程图;

图3为本申请实施例提供的一种容灾系统的结构示意图;

图4为本申请实施例提供的一种容灾系统的结构示意图;

图5为本申请一实施例提供的数据复制处理装置的结构示意图;

图6为本申请实施例提供的一种数据设备的结构示意图。

具体实施方式

下面将详细描述本发明的各个方面的特征和示例性实施例。在下面的详细描述中,提出了许多具体细节,以便提供对本发明的全面理解。但是,对于本领域技术人员来说很明显的是,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明的更好的理解。本发明决不限于下面所提出的任何具体配置和算法,而是在不脱离本发明的精神的前提下覆盖了元素、部件和算法的任何修改、替换和改进。在附图和下面的描述中,没有示出公知的结构和技术,以便避免对本发明造成不必要的模糊。

本申请实施例提供一种数据复制处理方法、装置、容灾系统、设备及存储介质,可应用于容灾备份或双活部署的场景中。在容灾备份系统或双活部署系统中可包括至少两个数据设备,这至少两个数据设备之间可进行数据复制。具体地,数据设备具体可安装有数据库,数据均存储于数据库中,在此并不限定。比如,图1为本申请实施例提供的包括两个数据设备的容灾系统的示意图。如图1所示,数据设备a可作为主(即master)设备,数据设备b可作为副(即slave)设备。其中,数据设备a可接收输入的数据操作,该数据操作可以为用户输入的数据操作。数据设备b可接收数据设备a传输来的数据复制指令,所述数据复制指令用于指示数据设备b与数据设备a保持数据同步。

需要说明的是,容灾备份系统或双活部署系统中的至少部分数据设备均可执行本申请实施例中的数据复制处理方法,以使得容灾备份系统或双活部署系统中的数据设备在数据复制过程发生冲突的情况下,可解决该冲突,保证各个数据设备中的数据一致。

本申请实施例提供了一种数据复制处理方法。该数据复制处理方法应用于第一设备。其中,第一设备与第二设备之间进行数据复制。在一些示例中,第二设备可为主设备,第一设备可为副设备。在另一些示例中,第一设备和第二设备也可不分主、副,彼此对对方均可进行数据复制。在此并不对第一设备与第二设备进行限定。

图2为本申请一实施例提供的一种数据复制处理方法的流程图。如图2所示,该数据复制处理方法可包括步骤s101至步骤s103。

在步骤s101中,接收并响应第二设备传输来的数据复制指令,执行与第二设备相同的数据操作。

在第二设备中的数据被操作即第二设备进行数据操作的情况下,第二设备向第一设备传输数据复制指令,以提示第一设备进行与第二设备相同的数据操作,保证第一设备中的数据与第二设备中的数据一致。第一设备执行与第二设备相同的数据操作。在执行该数据操作的情况下,可能可正常进行数据操作,也可能在数据操作过程中发生数据复制的冲突。若发生数据复制的冲突,第一设备会生成报错消息。报错消息具体可为数据库的复制错误返回值,如ha_err_found_dupp_key、ha_err_key_not_found、ha_err_end_of_file等,在此并不限定。

上述数据操作可包括数据插入操作、数据更新操作等等,在此并不限定。

在步骤s102中,若检测到与数据操作对应的报错消息,根据报错消息对目标数据执行一致性操作,使得一致性操作后的第一设备中目标数据与第二设备执行数据操作后的目标数据一致。

其中,目标数据包括数据操作指示的数据。数据操作指示的数据可包括第一设备中已存在的数据,也可包括数据操作要求新操作的数据。

比如,若数据操作为数据插入操作,则数据操作指示的数据可包括数据插入操作要求插入的数据。在数据复制发生冲突,若在第一设备中已经存在与数据插入操作要求插入的数据相同的数据的情况下,数据操作指示的数据包括第一设备中已经存在的与数据插入操作要求插入的数据相同的数据和数据插入操作要求插入的数据。又比如,若数据操作为数据更新操作,则数据操作指示的数据可包括数据更新操作要求被更新的数据和数据更新操作要求更新后的数据。

报错消息用于表征复制冲突错误。在一些示例中,不同的报错消息可对应不同的一致性操作。具体地,可根据报错消息表征的复制冲突错误,执行与该复制冲突错误对应的一致性操作。一致性操作的目的为使得一致性操作后的第一设备中的目标数据与第二设备中执行数据操作后的目标数据一致,从而保证第一设备中的数据与第二设备中的数据一致。

在步骤s103中,根据一致性操作,记录数据操作日志,使得第一设备的数据操作日志与第二设备的数据操作日志一致。

一致性操作可包括一个操作,也可包括两个以上的操作,在此并不限定。根据一致性操作的具体操作,确定记录入数据操作日志中的操作。其中,可将一致性操作的具体操作均记录入数据操作日志,也可将一致性操作中的具体操作中的部分记录入数据操作日志,保证第一设备的数据操作日志与第二设备的数据操作日志一致。其中,第一设备的数据操作日志与第二设备的数据操作日志一致,指第一设备的数据操作日志中记录的操作与第二设备的数据操作日志中记录的操作的效果一致。比如,第一设备的数据操作日志中记录的操作的实质与第二设备的数据操作日志中记录的操作的实质动作相同,例如insert操作和write操作。又比如,第一设备的数据操作日志中记录的操作执行后的数据与第二设备的数据操作日志中记录的操作执行后的数据相同。

在一些示例中,数据操作日志可为binlog等,在此并不限定。在本申请实施例中,第一设备的数据操作日志与第二设备的数据操作日志保持一致。

在本申请实施例中,第一设备在接收到第二设备传输来的数据复制指令的情况下,可执行与第二设备相同的数据操作。第一设备在执行该数据操作的过程中可能发生复制冲突,若检测到表征复制冲突错误的报错消息,则可根据报错消息对目标数据执行一致性操作,保证一致性操作后的第一设备中目标数据与第二设备中目标数据指示的数据一致,从而保证第一设备和第二设备中的所有数据一致。而且,根据一致性操作,记录数据操作日志,使得第一设备的数据操作日志与第二设备的数据操作日志一致。在业务在第一设备和第二设备之间切换的情况下,由于第一设备的数据及数据操作日志与第二设备的数据及数据操作日志一致,因此,在业务在第一设备和第二设备之间切换的情况下,可以保证业务的正确性。

为了便于说明,下面将以几种具体的复制冲突场景为例对本申请提供的数据复制处理方法进行说明。

在一些示例中,数据操作包括数据插入操作。报错消息表征第一设备已存在与数据插入操作要求插入的数据的主键或索引相同的数据。比如,报错消息具体可为ha_err_found_dupp_key。也就是说,第二设备执行的数据操作为数据插入操作,第一设备接收第二设备传输来的数据复制指令,需要进行与第二设备相同的数据插入操作。但在执行该数据插入操作的过程中,确定第一设备中已经存在与该数据插入操作要求插入的数据的主键或索引相同的数据。

在这种情况下,第一设备执行第一数据删除操作,删除已存在的与数据插入操作要求插入的数据主键或索引相同的数据。第一设备执行所述数据插入操作,插入所述数据插入操作要求插入的数据,使得第一设备中插入的数据与第二设备中插入的数据相同。

比如,数据插入操作对应的指令为“insert_row(new_record)”。其中,new_record即为数据插入操作要求插入的数据。第一设备检测到错误消息“ha_err_found_dupp_key”,第一设备自动执行第一数据删除操作,第一数据删除操作对应的指令为“delete_row(old_record)”。其中,old_record即为第一设备中已存在的与new_record主键或索引相同的数据。第一设备再执行数据插入操作,数据插入操作对应的指令为“insert_row(new_record)”。

在第一设备发生本示例中的复制冲突的情况下,第一设备的回放策略即可为“delete_row(old_record)”和“insert_row(new_record)”。

对应地,为了保证第一设备的数据操作日志和第二设备的数据操作日志一致,第一设备将上述数据插入操作记录入数据操作日志,不将第一数据删除操作记录入数据操作日志。

比如,第二设备的数据操作日志中记录的是“insert_row(new_record)”。第一设备的数据操作日志中记录的是“insert_row(new_record)”,并不记录“delete_row(old_record)”。

在另一些示例中,数据操作包括数据插入操作。所述报错消息表征所述第一设备已存在与数据插入操作要求插入的数据的主键或索引相同的数据。场景可参见上一示例。在本示例中,第一设备中每个数据均配置有时间戳,在此并不限定时间戳的存储位置。比如,不同的数据各自的时间戳的存储位置可以相同,也可以不同。具体地,可在转移数据表配置时间戳字段,利用时间戳字段记录时间戳。

在这种情况下,第一设备比较数据插入操作要求插入的数据的第一时间戳与第一设备中与数据插入操作要求插入的数据的主键或索引相同的数据的第二时间戳。若第一时间戳晚于第二时间戳,执行第二数据删除操作,删除第一设备中与数据插入操作要求插入的数据的主键或索引相同的数据,再执行第一数据写入操作,写入数据插入操作要求插入的数据。若第一时间戳早于第二时间戳,执行数据保留操作,保留第一设备中与数据插入操作要求插入的数据的主键或索引相同的数据。也就是说,第一设备选择时间戳更新的数据作为存储在第一设备中的数据。需要说明的是,数据插入操作要求插入的数据的第一时间戳具体可写入在数据操作日志中。

比如,数据插入操作对应的指令为“insert_row(new_record)”。其中,new_record即为数据插入操作要求插入的数据。第一设备中存在的与new_record主键或索引相同的数据为old_record。第一设备比较new_record的时间戳t1和old_record的时间戳t2。若t1>t2即时间戳t1指示的时间晚于时间戳t2指示的时间,第一设备执行第二数据删除操作,第二数据删除操作对应的指令为“delete_row(old_record)”;第一设备再执行第一数据写入操作,第一数据写入操作对应的指令为“write_row(new_record)”。若t1<t2即时间戳t1指示的时间早于时间戳t2指示的时间,第一设备执行数据保留操作,数据保留操作的指令为“keep_row(old_record)”。

在第一设备发生本示例中的复制冲突的情况下,若第一时间戳晚于第二时间戳,第一设备的回放策略即可为“delete_row(old_record)”和“write_row(new_record)”;若第一时间戳早于第二时间戳,第一设备的回放策略即可为“keep_row(old_record)”。

对应地,若第一时间戳晚于第二时间戳,将第一数据写入操作记录入数据操作日志,不将第二数据删除操作记录入数据操作日志。若第一时间戳早于第二时间戳,不将数据保留操作记录入数据操作日志。

比如,若第一时间戳晚于第二时间戳,第二设备中数据操作日志记录的是“insert_row(new_record)”。第一设备中数据操作日志记录的是“write_row(new_record)”,并不记录“delete_row(old_record)”。在这里,insert指令和write指令可以等同。若第一时间戳早于第二时间戳,第二设备中数据操作日志记录的是“insert_row(new_record)”,第一设备中数据操作日志并不记录“keep_row(old_record)”,可记录第一设备执行数据插入操作对应的“insert_row(new_record)”。或者,第一设备中数据操作日志并不记录“keep_row(old_record)”,也不记录数据插入操作对应的“insert_row(new_record)”。第二设备中数据操作日志记录的操作执行后第一设备中对应的数据为new_record,第一设备中数据操作日志记录的操作执行后的第二设备中对应的数据也为new_record。上述示例中均可保证第一设备中数据操作日志与第二设备中数据操作日志的一致。

在又一些示例中,数据操作包括数据更新操作。报错消息表征第一设备不存在数据更新操作要求被更新的数据。比如,报错消息具体可为ha_err_key_not_found或ha_err_end_of_file。也就是说,第二设备执行的数据操作为数据更新操作,第一设备接收第二设备传输俩的数据复制指令,需要进行与第二设备相同的数据更新操作。但在执行该数据插入操作的过程中,确定第一设备中不存在该数据更新操作要求被更新的数据。

在这种情况下,第一设备执行第二数据写入操作,写入数据更新操作要求更新的数据。第一设备执行数据更新操作,更新写入的数据更新操作要求被更新的数据,具体地,将写入的数据更新操作要求被更新的数据更新为该数据更新操作要求更新后的数据。

比如,数据更新操作对应的指令为“update_row(old_record,new_record)”。其中,old_record为数据更新操作要求被更新的数据,new_record为数据更新操作要求更新后的数据。第一设备检测到错误消息“ha_err_key_not_found”或“ha_err_end_of_file”,第一设备自动执行第二数据写入操作,第二数据写入操作对应的指令为“write_row(old_record)”。第一设备再执行数据更新操作,数据更新操作对应的指令为“update_row(old_record,new_record)”。

对应地,为了保证第一设备的数据操作日志和第二设备的数据操作日志一致,第一设备将数据更新操作记录入数据操作日志,不将第二数据写入操作记录入数据操作日志。

比如,第二设备的数据操作日志中记录的是“update_row(old_record,new_record)”。第一设备的数据操作日志中记录的是“update_row(old_record,new_record)”,并不记录“write_row(old_record)”。

在再一些示例中,数据操作包括数据更新操作。报错消息表征第一设备中已存在与数据更新操作要求更新后的数据的主键或索引相同的数据。比如,报错信息具体可为ha_err_found_dupp_key。也就是说,第二设备执行的数据操作为数据更新操作,第一设备接收第二设备传输来的数据复制指令,需要进行与第二设备相同的数据更新操作。但在执行该数据更新操作的过程中,确定第一设备中已经存在与该数据更新操作要求更新后的数据的主键或索引相同的数据。在本示例中,第一设备中每个数据均配置有时间戳。具体地,可在转移数据表配置时间戳字段,利用时间戳字段记录时间戳。

在这种情况下,第一设备比较数据更新操作要求更新后的数据的第三时间戳与第一设备中与数据更新操作要求更新后的数据的主键或索引相同的数据的第四时间戳。若第三时间戳晚于第四时间戳,执行第三数据删除操作,删除第一设备中与数据更新操作要求更新后的数据的主键或索引相同的数据,执行第三数据写入操作,写入数据更新操作要求更新后的数据。若第三时间戳早于第四时间戳,执行数据保留操作,保留第一设备中与数据更新操作要求更新后的数据的主键或索引相同的数据。

比如,数据更新操作对应的指令为“update_row(old_record1,new_record)”。其中,old_record1即为数据更新操作要求被更新的数据,new_record即为数据更新操作要求更新后的数据。第一设备中已存在与new_record的主键或索引相同的数据old_record2。第一设备比较数据更新操作要求更新后的数据的时间戳t3和第一设备中已存在与数据更新操作要求更新后的数据的主键或索引相同的数据的时间戳t4。若t3>t4即时间戳t3指示的时间晚于时间戳t4指示的时间,执行第三数据删除操作,第三数据删除操作对应的指令为“delete_row(old_record2)”;第一设备再执行第三数据写入操作,第三数据写入操作对应的指令为“write_row(new_record)”。

对应地,若第三时间戳晚于第四时间戳,不将第三数据写入操作和第三数据删除操作记录入数据操作日志。若第三时间戳早于第四时间戳,不将数据保留操作记录入数据操作日志。

比如,若第三时间戳晚于第四时间戳,第二设备中数据操作日志记录的是“update_row(old_record,new_record)”。第一设备中数据操作日志并不记录“delete_row(old_record2)”和“write_row(new_record)”,可记录第一设备执行数据更新操作对应的“update_row(old_record,new_record)”。或者,第一设备中数据操作日志并不记录“delete_row(old_record2)”和“write_row(new_record)”,也不记录数据更新操作对应的“update_row(old_record,new_record)。第二设备中数据操作日志记录的操作执行后第一设备中对应的数据为new_record,第一设备中数据操作日志记录的操作执行后的第二设备中对应的数据也为new_record。上述示例中均可保证第一设备中数据操作日志与第二设备中数据操作日志的一致。

需要说明的是,数据操作还可为其他操作,如数据删除操作。若第一设备中不存在数据删除操作要求删除的数据,则第一设备可忽略该复制冲突,在此不再赘述。

本申请实施例提供的数据复制处理方法涉及到的第一设备与第二设备可为级联复制的多个设备中任意两个具有单向数据复制关系的设备,也可为复制回环中的两个具有双向数据复制关系的设备。下面将以容灾系统为例进行多个数据设备之间关系的说明。

本申请实施例还提供了一种容灾系统。该容灾系统可包括至少两个数据设备,数据设备可执行上述实施例中用于第一设备的数据复制处理方法。容灾系统中的各个数据设备均可作为第一设备,能够执行上述实施例中的数据复制处理方法。或者,容灾系统中部分数据设备可作为第一设备,能够执行上述实施例中的数据复制处理方法。在此并不对容灾系统中的数据设备进行限定。

在一些示例中,容灾系统为级联复制类型的容灾系统。图3为本申请实施例提供的一种容灾系统的结构示意图。如图3所示,该容灾系统具体包括第一数据设备e1至第n数据设备en,n为大于1的整数。

其中,第i-1数据设备ei-1用于向第i数据设备ei传输数据复制指令。所述第i数据设备ei用于执行上述实施例中用于第一设备的数据复制处理方法。i为正整数且1<i≤n。

具体地,第一数据设备e1可接收用户输入的数据操作,第一数据设备e1可向第二数据设备e2传输数据复制指令;第二数据设备e2执行与第一数据设备e1相同的数据操作,且可执行上述实施例中用于第一设备的数据复制处理方法,第二数据设备e2向第三数据设备e3传输数据复制指令;第三数据设备e3执行与第二数据设备e2相同的数据操作,且可执行上述实施例中用于第一设备的数据复制处理方法;……;第n数据设备en执行与第n-1数据设备en-1相同的数据操作,且可执行上述实施例中用于第一设备的数据复制处理方法。

采用本申请实施例提供的数据复制处理方法,可保证级联复制容灾系统中的每一级的数据设备的数据以及数据操作日志的一致性。并不会因为级联复制容灾系统中的数据设备之间的复杂数据复制关系,导致级联复制容灾系统中不同数据设备中的数据以及数据操作日志出现不一致的情况。从而使得当业务在级联复制容灾系统中的各级数据设备切换的情况下,也可保证业务的正确性。

在另一些示例中,容灾系统为复制回环类型的容灾系统,该容灾系统具体包括至少两个数据设备。至少两个数据设备中一个数据设备用于接收用户输入的数据操作,执行数据操作,向另一个数据设备传输数据复制指令;另一个数据设备用于执行上述实施例中应用于第一设备的数据复制处理方法。和/或,另一个数据设备用于接收用户输入的数据操作,执行所述数据操作,向一个数据设备传输数据复制指令;一个数据设备用于执行上述实施例中应用于第一设备的数据复制处理方法。

下面以复制回环类型的容灾系统包括两个数据设备为例进行说明。图4为本申请实施例提供的一种容灾系统的结构示意图。如图4所示,容灾设备包括两个数据设备,分别为数据设备a1和数据设备a2。

数据设备a1可接收用户输入的数据操作,执行数据操作,向数据设备a2传输数据复制指令。数据设备a2可执行上述实施例中应用于第一设备的数据复制处理方法。

数据设备a2也可接收用户输入的数据操作,执行数据操作,向数据设备a1传输数据复制指令。数据设备a1可执行上述实施例中应用于第一设备的数据复制处理方法。

采用本申请实施例提供的数据复制处理方法,可保证复制回环容灾系统中的数据设备的数据以及数据操作日志的一致性。并不会因为复制回环容灾系统中的数据设备之间的双向复制关系,导致复制回环容灾系统中不同数据设备中的数据以及数据操作日志出现不一致的情况。从而使得当业务在复制回环容灾系统中的各级数据设备切换的情况下,可保证业务的正确性。

比如,若数据设备a1接收到的数据操作为数据插入操作,数据插入操作要求插入的数据为[1,2019-09-2615:30:00.0000]。数据设备a2接收数据设备a1传输的数据复制指令,执行数据插入操作。数据设备a2中已存在数据[1,2019-09-2615:30:01.0000]。其中,数据设备a1要求插入的数据[1,2019-09-2615:30:00.0000]与数据设备a2中已存在的数据[1,2019-09-2615:30:01.0000]的主键相同,均为1。数据设备a1要求插入的数据[1,2019-09-2615:30:00.0000]的时间戳为“2019-09-2615:30:00”,数据设备a2已存在的数据[1,2019-09-2615:30:01.0000]的时间戳为“2019-09-2615:30:01”。对比时间戳,则数据设备a2保留数据[1,2019-09-2615:30:01.0000],相当于在数据a2中插入了数据[1,2019-09-2615:30:01.0000]。数据设备a2向数据设备a1发送数据复制指令,数据设备a对比数据[1,2019-09-2615:30:01.0000]的时间戳和数据[1,2019-09-2615:30:00.0000]的时间戳,则数据设备插入数据[1,2019-09-2615:30:01.0000]。

由此可见,复制回环中数据复制的冲突可有效得到解决,保证复制回环中的数据设备的数据即数据操作日志的一致。

需要说明的是,上述实施例中提到的用户输入的数据操作可以为用户直接输入数据设备的数据操作,也可为用户通过应用程序(application,app)等输入数据设备的数据操作。

本申请实施例还提供了一种数据复制处理装置。图5为本申请一实施例提供的数据复制处理装置的结构示意图。如图5所示,该数据复制处理装置200可包括第一执行模块201、第二执行模块202和日志记录模块203。

第一执行模块201,用于接收并响应第二设备传输来的数据复制指令,执行与第二设备相同的数据操作。

第二执行模块202,若检测到与数据操作对应的报错消息,根据报错消息对目标数据执行一致性操作,使得一致性操作后的第一设备中目标数据与第二设备执行数据操作后的目标数据一致。

其中,目标数据包括数据操作指示的数据。

日志记录模块203,用于根据一致性操作,记录数据操作日志,使得第一设备的数据操作日志与第二设备的数据操作日志一致。

在本申请实施例中,第一设备在接收到第二设备传输来的数据复制指令的情况下,可执行与第二设备相同的数据操作。第一设备在执行该数据操作的过程中可能发生复制冲突,若检测到表征复制冲突错误的报错消息,则可根据报错消息对目标数据执行一致性操作,保证一致性操作后的第一设备中目标数据与第二设备中目标数据指示的数据一致,从而保证第一设备和第二设备中的所有数据一致。而且,根据一致性操作,记录数据操作日志,使得第一设备的数据操作日志与第二设备的数据操作日志一致。在业务在第一设备和第二设备之间切换的情况下,由于第一设备的数据及数据操作日志与第二设备的数据及数据操作日志一致,因此,在业务在第一设备和第二设备之间切换的情况下,可以保证业务的正确性。

在一些示例中,数据操作包括数据插入操作。报错消息表征第一设备已存在与数据插入操作要求插入的数据的主键或索引相同的数据。

第二执行模块202可具体用于:执行第一数据删除操作,删除已存在的与数据插入操作要求插入的数据主键或索引相同的数据;执行数据插入操作,插入数据插入操作要求插入的数据。

对应地,日志记录模块203可具体用于:将数据插入操作记录入数据操作日志,不将第一数据删除操作记录入数据操作日志。

在另一些示例中,数据操作包括数据插入操作。报错消息表征第一设备已存在与数据插入操作要求插入的数据的主键或索引相同的数据。数据均配置有时间戳。

第二执行模块202可具体用于:比较数据插入操作要求插入的数据的第一时间戳与第一设备中与数据插入操作要求插入的数据的主键或索引相同的数据的第二时间戳;若第一时间戳晚于第二时间戳,执行第二数据删除操作,删除第一设备中与数据插入操作要求插入的数据的主键或索引相同的数据,执行第一数据写入操作,写入数据插入操作要求插入的数据;若第一时间戳早于第二时间戳,执行数据保留操作,保留第一设备中与数据插入操作要求插入的数据的主键或索引相同的数据。

对应地,日志记录模块203可具体用于:若第一时间戳晚于第二时间戳,将第一数据写入操作记录入数据操作日志,不将第二数据删除操作记录入数据操作日志;若第一时间戳早于第二时间戳,不将数据保留操作记录入数据操作日志。

在又一些示例中,数据操作包括数据更新操作。报错消息表征第一设备不存在数据更新操作要求被更新的数据。

第二执行模块202可具体用于:执行第二数据写入操作,写入数据更新操作要求更新的数据;执行数据更新操作,更新写入的数据更新操作要求被更新的数据。

对应地,日志记录模块203可具体用于:将数据更新操作记录入数据操作日志,不将第二数据写入操作记录入数据操作日志。

在再一些示例中,数据操作包括数据更新操作。报错消息表征第一设备中已存在与数据更新操作要求更新后的数据的主键或索引相同的数据。数据均配置有时间戳。

第二执行模块202可具体用于:比较数据更新操作要求更新后的数据的第三时间戳与第一设备中与数据更新操作要求更新后的数据的主键或索引相同的数据的第四时间戳;若第三时间戳晚于第四时间戳,执行第三数据删除操作,删除第一设备中与数据更新操作要求更新后的数据的主键或索引相同的数据,执行第三数据写入操作,写入数据更新操作要求更新后的数据;若第三时间戳早于第四时间戳,执行数据保留操作,保留第一设备中与数据更新操作要求更新后的数据的主键或索引相同的数据。

对应地,日志记录模块203可具体用于:若第三时间戳晚于第四时间戳,不将第三数据写入操作和第三数据删除操作记录入数据操作日志;若第三时间戳早于第四时间戳,不将数据保留操作记录入数据操作日志。

图6为本申请实施例提供的一种数据设备的结构示意图。如图6所示,数据设备300包括存储器301、处理器302及存储在存储器301上并可在处理器302上运行的计算机程序。

在一个示例中,上述处理器302可以包括中央处理器(cpu),或者特定集成电路(asic),或者可以被配置成实施本申请实施例的一个或多个集成电路。

存储器301可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器301可包括hdd、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(usb)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器301可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器301可在终端热点开启数据设备300的内部或外部。在特定实施例中,存储器301是非易失性固态存储器。在特定实施例中,存储器301包括只读存储器(rom)。在合适的情况下,该rom可以是掩模编程的rom、可编程rom(prom)、可擦除prom(eprom)、电可擦除prom(eeprom)、电可改写rom(earom)或闪存或者两个或更多个以上这些的组合。

处理器302通过读取存储器301中存储的可执行程序代码来运行与可执行程序代码对应的计算机程序,以用于实现上述实施例中数据复制处理方法。

在一个示例中,数据设备300还可包括通信接口303和总线304。其中,如图6所示,存储器301、处理器302、通信接口303通过总线304连接并完成相互间的通信。

通信接口303,主要用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。也可通过通信接口303接入输入设备和/或输出设备。

总线304包括硬件、软件或两者,将数据设备300的部件彼此耦接在一起。举例来说而非限制,总线304可包括加速图形端口(agp)或其他图形总线、增强工业标准架构(eisa)总线、前端总线(fsb)、超传输(ht)互连、工业标准架构(isa)总线、无限带宽互连、低引脚数(lpc)总线、存储器总线、微信道架构(mca)总线、外围组件互连(pci)总线、pci-express(pci-x)总线、串行高级技术附件(sata)总线、视频电子标准协会局部(vlb)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线304可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。

本申请一实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时可实现上述实施例中的数据复制处理方法。

需要明确的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。对于系统实施例、装置实施例、数据设备实施例和计算机可读存储介质实施例而言,相关之处可以参见方法实施例的说明部分。本发明并不局限于上文所描述并在图中示出的特定步骤和结构。本领域的技术人员可以在领会本发明的精神之后,作出各种改变、修改和添加,或者改变步骤之间的顺序。并且,为了简明起见,这里省略对已知方法技术的详细描述。

本领域技术人员应能理解,上述实施例均是示例性而非限制性的。在不同实施例中出现的不同技术特征可以进行组合,以取得有益效果。本领域技术人员在研究附图、说明书及权利要求书的基础上,应能理解并实现所揭示的实施例的其他变化的实施例。在权利要求书中,术语“包括”并不排除其他装置或步骤;不定冠词“一个”不排除多个;术语“第一”、“第二”用于标示名称而非用于表示任何特定的顺序。权利要求中的任何附图标记均不应被理解为对保护范围的限制。权利要求中出现的多个部分的功能可以由一个单独的硬件或软件模块来实现。某些技术特征出现在不同的从属权利要求中并不意味着不能将这些技术特征进行组合以取得有益效果。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1