一种数据复制方法及装置制造方法及图纸

技术编号:39058096 阅读:15 留言:0更新日期:2023-10-12 19:51
本申请提供了一种数据复制方法及装置。该方法包括数据复制装置响应于用户在配置界面对第一源库的数据复制条件编辑操作,获取第一sql复制语句,之后可以根据第一sql复制语句,将第一源库中的第一目标数据复制至第一源库对应的第一目标库中。如此,该方法使得用户在配置界面上进行灵活变更或灵活配置数据复制条件,可以满足用户的不同数据复制需求,有助于实现数据按需复制,且无需用户重启服务或修改配置或修改业务代码进行变更数据复制条件,使得数据复制在数据复制条件发生变更时也不会中断。此外,由于数据复制条件是持久化在对应的sql复制语句中,所以即使用户重启服务或数据复制出现异常情况等,也不会导致数据复制条件丢失。条件丢失。条件丢失。

【技术实现步骤摘要】
一种数据复制方法及装置


[0001]本申请涉及数据库
,尤其涉及一种数据复制方法及装置。

技术介绍

[0002]目前,数据库(比如MySQL)主从复制在行业内有着广泛应用,比如主备高可用、读写分离、容灾备份、伪装成一个备库进行行列转换、实现混合事务/分析处理(Hybrid Transactional/Analytical Processing,HTAP)功能或实现异构数据库在线迁移等应用。
[0003]示例性地,以数据库为MySQL为例,MySQL主从复制一般采用“全量复制”+“增量复制”。具体地,从库先从主库获取一个一致性的快照(snapshot)和相对应的二进制日志/逻辑日志(Binary log,Binlog)点位;之后通过该一致性的快照从主库读取全量一致性的数据插入到从库中;然后,当全量复制完成时,从库通过该Binlog点位拉取Binlog开启增量复制。其中,在MySQL主从复制的过程中也会有一些过滤需求,比如用户可以选择性地同步自己需要的数据。随着业务的发展变化,用户的过滤需求会随之发生变化,因此需要数据库主从复制能够支持动态的数据过滤条件(也可以理解为数据复制条件)。
[0004]然而,虽然MySQL自身提供了在源端设备和目标端设备过滤的能力,但是在变更数据复制条件的过程中仍然存在一些问题(比如变更数据复制条件需要重启服务或数据复制条件无法持久化或数据复制异常后数据复制条件丢失等),不够灵活,难以满足一些场景下的需求。

技术实现思路

[0005]本申请实施例提供一种数据复制方法及装置,用以实现数据复制条件的灵活变更,并确保在数据复制条件变更时数据复制不中断。
[0006]第一方面,本申请实施例提供一种数据复制方法,该方法可以是由数据复制装置或者能够支持数据复制装置实现该方法所需的功能的部件(比如芯片系统或电路等)执行。示例性地,数据复制装置可以是具有实现该方法所需的功能的数据库服务器或者具有实现该方法所需的功能的插件,或者也可以是具有实现该方法所需的功能的其它任意设备(比如计算设备)。可选的,以数据复制装置执行数据复制方法为例,在该方法中,响应于用户在配置界面对第一源库的数据复制条件编辑操作,数据复制装置可以获取到第一源库对应的第一sql复制语句,之后,数据复制装置可以根据第一sql复制语句,将第一源库中的第一目标数据复制至第一源库对应的第一目标库中。
[0007]在本方法中,通过为用户提供配置界面,便于用户在配置界面上进行灵活变更或灵活配置针对源库的数据复制条件,灵活性更高,可以满足用户的不同数据复制需求,有助于实现按需复制源库中的数据。此外,用户只需在配置界面上进行相应的编辑操作即可实现数据复制条件的动态变更,且这种变更方式不会中断数据复制,可以有效地避免出现因需要用户重启服务或修改配置或修改业务代码来实现数据复制条件的变更而导致数据复制中断的情况。其中,任一个源库的数据复制条件是持久化在该源库对应的sql复制语句
中,即使用户重启服务或数据复制出现异常情况等,也不会导致该源库的数据复制条件丢失。比如,用户一开始想复制源库A中的数据,现在又想复制源库B中的数据,此时就会存在数据复制条件发生变化,那么用户可以在配置界面上编辑当前所需复制的源库B的数据复制条件,从而可以实现并行复制多个源库中的数据,且当前所需复制的源库B对应的数据复制进程不会影响之前处于复制状态的源库A对应的数据复制进程,也即是实现了在变更数据复制条件时数据复制不会中断的目的。另外,在主从复制过程中,用户可以指定复制哪一个源库中的数据,比如用户可以通过在配置界面上编辑所需复制的源库的数据复制条件,即可形成针对该源库的sql复制语句,而不需要复制的源库就被过滤掉了,这样就实现了库级数据过滤,其中,库与库之间相互独立,各自对应的数据复制流程也互不影响。
[0008]在一种可能的设计中,数据复制装置可以根据第一sql复制语句,将第一源库中的目标数据复制至第一源库对应的第一目标库中,包括:
[0009]数据复制装置在获取到第一sql复制语句后,可以根据第一sql复制语句,建立第一源库与第一目标库之间的第一复制通道,并可以将第一目标数据中包括的第一部分数据全量复制至第一目标库中,之后,当第一目标数据中包括的第一部分数据全量复制完成时,数据复制装置可以通过第一复制通道对第一源库进行binlog增量复制,其中,第一源库对应的binlog增量复制用于实现第一目标数据中包括的第二部分数据的复制,在第一目标数据中的第二部分数据写入第一源库的时间晚于第一目标数据中的第一部分数据的全量复制开始时间。
[0010]上述设计中,针对任一个需要复制的源库,可以建立一个该源库与对应的目标库之间的复制通道,通过该复制通道即可实现该源库中新增数据的复制。其中,该复制通道可以具有独立的binlog复制流。
[0011]在一种可能的设计中,所述方法还包括:
[0012]响应于用户在配置界面对第二源库的数据复制条件编辑操作,数据复制装置可以获取第二源库对应的第二sql复制语句,之后,数据复制装置可以根据第二sql复制语句,建立第二源库与第二目标库之间的第二复制通道,并可以将第二源库中的第二目标数据中包括的第一部分数据全量复制至所述第二目标库中,然后,当第二目标数据中包括的第一部分数据全量复制完成时,数据复制装置可以通过第二复制通道对第二源库进行binlog增量复制,其中,第二源库对应的binlog增量复制用于实现第二目标数据中包括的第二部分数据的复制,在第二目标数据中的第二部分数据写入第二源库的时间晚于第二目标数据中的第一部分数据的全量复制开始时间,此外,当第二复制通道的binlog增量复制流进度大于或等于第一复制通道的binlog增量复制流进度时,数据复制装置可以将第二复制通道与第一复制通道进行合并。
[0013]上述设计中,当新增复制某一个源库中的数据时,只需用户在配置界面上编辑新增的待复制源库的数据复制条件,以此生成新增的待复制源库对应的sql复制语句,并通过执行sql复制语句新创建一个新增的待复制源库与目标库之间的复制通道即可。如此,该方法可以实现动态增加针对某一个待复制源库的数据复制操作,而无需用户重启服务或修改配置或修改业务代码来变更数据复制条件以达到复制新增的待复制源库的数据。而且,新增的待复制源库对应的数据复制流程与之前处于复制状态的源库对应的数据复制流程并行执行,互不影响。此外,在新增的复制通道的binlog增量复制流进度赶上之前创建的复制
通道的binlog增量复制流进度时,将新创建的复制通道与之前创建的复制通道进行合并,可以有效地减轻主计算设备(比如主数据库服务器)的压力,并可以降低网络带宽消耗。
[0014]在一种可能的设计中,所述方法还包括:
[0015]响应于用户在配置界面对第一源库的指示编辑操作,数据复制装置可以获取第一指示信息,第一指示信息用于指示对第一源库进行停止复制,之后,数据复制装置可以根据第一指示信息,对第一源库进行停止复制,并可以删除或停本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据复制方法,其特征在于,包括:响应于用户在配置界面对第一源库的数据复制条件编辑操作,获取第一结构化查询语言sql复制语句;根据所述第一sql复制语句,将所述第一源库中的第一目标数据复制至所述第一源库对应的第一目标库中。2.如权利要求1所述的方法,其特征在于,根据所述第一sql复制语句,将所述第一源库中的目标数据复制至所述第一源库对应的第一目标库中,包括:根据所述第一sql复制语句,建立所述第一源库与所述第一目标库之间的第一复制通道,并将所述第一目标数据中包括的第一部分数据全量复制至所述第一目标库中;当所述第一目标数据中包括的第一部分数据全量复制完成时,通过所述第一复制通道对所述第一源库进行二进制日志/逻辑日志binlog增量复制,所述第一源库对应的binlog增量复制用于实现所述第一目标数据中包括的第二部分数据的复制,在所述第一目标数据中的所述第二部分数据写入所述第一源库的时间晚于所述第一目标数据中的所述第一部分数据的全量复制开始时间。3.如权利要求2所述的方法,其特征在于,所述方法还包括:响应于所述用户在所述配置界面对第二源库的数据复制条件编辑操作,获取第二sql复制语句;根据所述第二sql复制语句,建立所述第二源库与所述第二目标库之间的第二复制通道,并将所述第二源库中的第二目标数据中包括的第一部分数据全量复制至所述第二目标库中;当所述第二目标数据中包括的第一部分数据全量复制完成时,通过所述第二复制通道对所述第二源库进行binlog增量复制,所述第二源库对应的binlog增量复制用于实现所述第二目标数据中包括的第二部分数据的复制,在所述第二目标数据中的所述第二部分数据写入所述第二源库的时间晚于所述第二目标数据中的所述第一部分数据的全量复制开始时间;其中,当所述第二复制通道的binlog增量复制流进度大于或等于所述第一复制通道的binlog增量复制流进度时,将所述第二复制通道与所述第一复制通道进行合并。4.如权利要求1

3任一项所述的方法,其特征在于,所述方法还包括:响应于所述用户在所述配置界面对所述第一源库的指示编辑操作,获取第一指示信息,所述第一指示信息用于指示对所述第一源库进行停止复制;根据所述第一指示信息,对所述第一源库进行停止复制,并删除或停止使用所述第一目标库。5.一种数据复制方法,其特征在于,包括:响应于用户在配置界面对第一待复制表的数据复制条件编辑操作,获取第一结构化查询语言sql复制语句;所述第一待复制表存储于第一源库中;根据所述第一sql复制语句,将所述第一待复制表中的第一目标数据复制至第一目标表中;所述第一目标表存储于所述第一源库对应的第一目标库中。6.如权利要求5所述的方法,其特征在于,根据所述第一sql复制语句,将所述第一待复制表中的第一目标数据复制至第一目标表中,包括:
根据所述第一sql复制语句,建立所述第一源库与所述第一目标库之间的第一复制通道,并将所述第一目标数据中包括的第一部分数据全量复制至所述第一目标表中;当所述第一目标数据中包括的第一部分数据全量复制完成时,通过所述第一复制通道对所述第一待复制表进行二进制日志/逻辑日志binlog增量复制,所述第一待复制表对应的binlog增量复制用于实现所述第一目标数据中包括的第二部分数据的复制,在所述第一目标数据中的所述第二部分数据写入所述第一待复制表的时间晚于所述第一目标数据中的所述第一部分数据的全量复制开始时间。7.如权利要求6所述的方法,其特征在于,所述方法还包括:响应于用户在配置界面对第二待复制表的数据复制条件编辑操作,获取第二sql复制语句,所述第二待复制表存储于所述第一源库中;根据所述第二sql复制语句,建立一个具有隐藏属性的第二目标库,并建立所述第一源库与所述第二目标库之间的第二复制通道,将所述第二待复制表中的第二目标数据中包括的第一部分数据全量复制至所述第二目标表中,所述第二目标库中包括所述第二目标表;当所述第二目标数据中包括的第一部分数据全量复制完成时,通过所述第二复制通道对所述第二待复制表进行binlog增量复制,所述第二待复制表对应的binlog增量复制用于实现所述第二目标数据中包括的第二部分数据的复制,在所述第二目标数据中的所述第二部分数据写入所述第二待复制表的时间晚于所述第二目标数据中的所述第一部分数据的全量复制开始时间;其中,当所述第二复制通道的binlog增量复制流进度大于或等于所述第一复制通道的binlog增量复制流进度时,将所述第二复制通道与所述第一复制通道进行合并,并将所述第一目标库与所述第二目标库进行合并。8.如权利要求5

7任一项所述的方法,其特征在于,所述方法还包括:响应于所述用户在所述配置界面对所述第一待复制表的指示编辑操作,获取第一指示信息,所述第一指示信息用于指示对所述第一待复制表进行停止复制;根据所述第一指示信息,对所述第一待复制表进行停止复制,并删除或停止使用所述第一目标表。9.一种数据复制装置,其特征在于,包括:显示模块,用于显示配置界面;获取模块,用于响应于用户在所述配置界面对第一源库的数据复制条件编辑操作,获取第一sql复制语句;处理模块,用于根据所述第一sql复制语句,将所述第一源库中的第一目标数据复制至所述第一源库对应的第一目标库中。10.如权利要求9所述的装置,其特征在于,所述处理模块在根据所述第一sql复制语句,将所述第一源库中的第一目标数据复制至所述第一源库对应的第一目标库中时,具体用于:根据所述第一sql复制语句,建立所述第一源库与所述第一目标库之间的第一复制通道,并将所述第一目标数据中包括的第一部分数据全量复制至所述第一目标库中;当所述第一目标数据中包括的第一部分数据全量复制完成时,通过所述第一复制通道对所述第一源库进行b...

【专利技术属性】
技术研发人员:宋立勇朱冠宇斯蒂格
申请(专利权)人:深圳华为云计算技术有限公司
类型:发明
国别省市:

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

1