数据复制方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:22055127 阅读:30 留言:0更新日期:2019-09-07 15:12
本发明专利技术公开了一种数据复制方法、装置、计算机设备及存储介质,属于数据库技术领域。该方法包括:当检测到任一事务的提交操作时,将该事务的历史态数据添加到数据队列中;将该数据队列中的至少一个历史态数据添加到至少一个发送缓冲区中的任一发送缓冲区;当符合第一预设条件时,将该发送缓冲区中的至少一个历史态数据复制至集群设备。本发明专利技术中节点设备不用把原本的历史态数据格式转化为日志格式,集群设备也不必将日志解析为数据原始格式后再进行存储,也就避免了繁琐的日志回放流程,提高了数据复制过程的效率。

Data replication methods, devices, computer equipment and storage media

【技术实现步骤摘要】
数据复制方法、装置、计算机设备及存储介质
本专利技术涉及数据库
,特别涉及一种数据复制方法、装置、计算机设备及存储介质。
技术介绍
在数据库技术中,尤其是OLAP(onlineanalyticalprocessing,联机实时分析)处理系统、数据仓库、大数据分析等场景中,经常需要从数据库中复制数据,对已有数据进行及时备份。在复制过程中通常涉及到主机和备机两种设备,对于目前的数据库(例如Oracle、MySQL或者InnoDB等)而言,主机可以定期将数据库中的数据文件复制到备机上,实现基于数据文件的主备同步,进一步地,为了避免由于数据文件在复制过程损坏导致主机与备机数据不一致,主机和备机建立通信连接后,两者的数据库之间同步一个重做日志(REDOLOG),一旦复制过程出现异常,备机通过回放重做日志清除掉异常的数据。然而,由于重做日志的解析工作和回放工作较为复杂,在大数据量的场景下,备机回放重做日志会消耗较长时间,影响数据复制过程的效率。
技术实现思路
本专利技术实施例提供了一种数据复制方法、装置、计算机设备及存储介质,能够解决基于重做日志复制数据时,消耗时间长,解析回放工作复杂,影响数据复制效率的问题。该技术方案如下:一方面,提供了一种数据复制方法,该方法包括:当检测到任一事务的提交操作时,将该事务的历史态数据添加到数据队列中,该数据队列用于缓存历史态数据;将该数据队列中的至少一个历史态数据添加到至少一个发送缓冲区中的任一发送缓冲区,该发送缓冲区用于缓存待复制的历史态数据;当符合第一预设条件时,将该发送缓冲区中的该至少一个历史态数据复制至集群设备。一方面,提供一种数据复制方法,该方法包括:从至少一个接收缓冲区中的任一接收缓冲区接收任一节点设备发送的至少一个历史态数据,该接收缓冲区用于缓存接收的历史态数据;将该接收缓冲区中的该至少一个历史态数据添加到转发缓冲区,通过该转发缓冲区,将该至少一个历史态数据转换为符合元组格式的数据,得到至少一个数据项,该转发缓冲区用于对历史态数据进行数据格式转换;将该至少一个数据项存储到集群数据库的至少一个目标数据表中,一个目标数据表对应于一个数据项在该节点设备中所在的一个原始数据表。一方面,提供了一种数据复制装置,该装置包括:添加模块,用于当检测到任一事务的提交操作时,将该事务的历史态数据添加到数据队列中,该数据队列用于缓存历史态数据;该添加模块,还用于将该数据队列中的至少一个历史态数据添加到至少一个发送缓冲区中的任一发送缓冲区,该发送缓冲区用于缓存待复制的历史态数据;复制模块,用于当符合第一预设条件时,将该发送缓冲区中的该至少一个历史态数据复制至集群设备。在一种可能实施方式中,该添加模块用于:当检测到该数据队列中增加任一历史态数据时,将该历史态数据添加到该发送缓冲区;该复制模块用于:当检测到该发送缓冲区中增加任一历史态数据时,将该发送缓冲区中的该至少一个历史态数据复制至该集群设备。在一种可能实施方式中,该添加模块用于:每间隔第一预设时长,获取该数据队列中在当前时刻之前的该第一预设时长内增加的至少一个历史态数据;按照事务提交时间戳从小到大的顺序,对该至少一个历史态数据进行排序,当存在事务提交时间戳相同的多个历史态数据时,按照事务标识从小到大的顺序对该多个历史态数据进行排序,得到至少一个有序排列的历史态数据,将该至少一个有序排列的历史态数据添加到该发送缓冲区。在一种可能实施方式中,该第一预设条件为检测到该发送缓冲区中增加任一历史态数据;或,该第一预设条件为当检测到该发送缓冲区的已用数据量占该发送缓冲区的容量的比例达到比例阈值;或,该第一预设条件为当前时刻距离该发送缓冲区上一次向该集群设备执行数据复制达到第二预设时长;或,该第一预设条件为当前时刻距离该发送缓冲区上一次向该集群设备执行数据复制达到第三预设时长,该第三预设时长为多个节点设备中每一个节点设备都配置有的相同的预设时长,该第三预设时长大于该第二预设时长。在一种可能实施方式中,该装置还包括:当接收到该集群设备发送的复制成功响应时,清空与该复制成功响应所对应的发送缓冲区;或,将该数据队列中来自于同一个原始数据表的历史态数据均匀地添加到多个发送缓冲区中。一方面,提供了一种数据复制装置,该装置包括:接收模块,用于从至少一个接收缓冲区中的任一接收缓冲区接收任一节点设备发送的至少一个历史态数据,该接收缓冲区用于缓存接收的历史态数据;添加模块,用于将该接收缓冲区中的该至少一个历史态数据添加到转发缓冲区,通过该转发缓冲区,将该至少一个历史态数据转换为符合元组格式的数据,得到至少一个数据项,该转发缓冲区用于对历史态数据进行数据格式转换;存储模块,用于将该至少一个数据项存储到集群数据库的至少一个目标数据表中,一个目标数据表对应于一个数据项在该节点设备中所在的一个原始数据表。在一种可能实施方式中,该存储模块包括:第一存储单元,用于对任一以元组为单位的数据项,按照该数据项所在的原始数据表中的存储格式,将该数据项存储在与该原始数据表所对应的目标数据表中;或,第二存储单元,用于对任一表示字段变更情况的数据项,按照键值对的存储格式,将该数据项存储在与该原始数据表所对应的目标数据表中。在一种可能实施方式中,该第二存储单元用于:将该数据项在该原始数据表中的键名或者该数据项的生成时间中的至少一项,确定为该数据项在该目标数据表中的键名;将该至少一个数据项在该原始数据表中被修改的字段,确定为该至少一个数据项在该目标数据表中的键值。在一种可能实施方式中,该装置还包括:确定模块,用于在该至少一个历史态数据的事务标识中,确定符合第二预设条件的最小事务标识,该第二预设条件用于表示事务的所有子事务所对应的数据项均已经存储在该集群数据库中;查询模块,用于根据该最小事务标识,确定可见数据项,基于该可见数据项,提供数据查询服务,其中,提交该可见数据项的事务标识小于或者等于该最小事务标识。在一种可能实施方式中,该确定模块包括:排序单元,用于按照事务提交时间戳从小到大的顺序,对该至少一个历史态数据进行排序,当存在事务提交时间戳相同的多个历史态数据时,按照事务标识从小到大的顺序对该多个历史态数据进行排序,得到目标数据序列;获取单元,用于从该目标数据序列中获取符合该第二预设条件的至少一个事务;确定单元,用于将该至少一个事务中排序最靠前事务的事务标识确定为该最小事务标识。在一种可能实施方式中,该获取单元包括:遍历确定子单元,用于遍历该目标数据序列,对每个历史态数据的位图编码执行按位与操作,将输出为真的历史态数据所对应的事务确定为该至少一个事务;或,遍历确定子单元,还用于遍历该目标数据序列,对每个历史态数据的压缩字典进行解码,得到与每个历史态数据对应的全局事务标识,当确定该全局事务标识对应的子事务的数据项均已经存储在该集群数据库中时,将该全局事务标识所对应的事务确定为一个符合该第二预设条件的事务。在一种可能实施方式中,遍历确定子单元还用于:根据该全局事务标识,获取在该集群数据库中已存储的且具有该全局事务标识的数据项,当获取到的该数据项以及解码得到的该历史态数据与事务的所有子事务对应时,确定该全局事务标识对应的子事务的数据项均已经存储在该集群数据库中。在一种可能实施方式中,该接收模块用本文档来自技高网...

【技术保护点】
1.一种数据复制方法,其特征在于,所述方法包括:当检测到任一事务的提交操作时,将所述事务的历史态数据添加到数据队列中,所述数据队列用于缓存历史态数据;将所述数据队列中的至少一个历史态数据添加到至少一个发送缓冲区中的任一发送缓冲区,所述发送缓冲区用于缓存待复制的历史态数据;当符合第一预设条件时,将所述发送缓冲区中的所述至少一个历史态数据复制至集群设备。

【技术特征摘要】
1.一种数据复制方法,其特征在于,所述方法包括:当检测到任一事务的提交操作时,将所述事务的历史态数据添加到数据队列中,所述数据队列用于缓存历史态数据;将所述数据队列中的至少一个历史态数据添加到至少一个发送缓冲区中的任一发送缓冲区,所述发送缓冲区用于缓存待复制的历史态数据;当符合第一预设条件时,将所述发送缓冲区中的所述至少一个历史态数据复制至集群设备。2.根据权利要求1所述的方法,其特征在于,所述将所述数据队列中的至少一个历史态数据添加到至少一个发送缓冲区中的任一发送缓冲区包括:当检测到所述数据队列中增加任一历史态数据时,将所述历史态数据添加到所述发送缓冲区;所述当符合第一预设条件时,将所述发送缓冲区中的所述至少一个历史态数据复制至集群设备包括:当检测到所述发送缓冲区中增加任一历史态数据时,将所述发送缓冲区中的所述至少一个历史态数据复制至所述集群设备。3.根据权利要求1所述的方法,其特征在于,所述将所述数据队列中的至少一个历史态数据添加到至少一个发送缓冲区中的任一发送缓冲区包括:每间隔第一预设时长,获取所述数据队列中在当前时刻之前的所述第一预设时长内增加的至少一个历史态数据;按照事务提交时间戳从小到大的顺序,对所述至少一个历史态数据进行排序,当存在事务提交时间戳相同的多个历史态数据时,按照事务标识从小到大的顺序对所述多个历史态数据进行排序,得到至少一个有序排列的历史态数据,将所述至少一个有序排列的历史态数据添加到所述发送缓冲区。4.根据权利要求1至3中任一项所述的方法,其特征在于,所述第一预设条件为检测到所述发送缓冲区中增加任一历史态数据;或,所述第一预设条件为当检测到所述发送缓冲区的已用数据量占所述发送缓冲区的容量的比例达到比例阈值;或,所述第一预设条件为当前时刻距离所述发送缓冲区上一次向所述集群设备执行数据复制达到第二预设时长;或,所述第一预设条件为当前时刻距离所述发送缓冲区上一次向所述集群设备执行数据复制达到第三预设时长,所述第三预设时长为多个节点设备中每一个节点设备都配置有的相同的预设时长,所述第三预设时长大于所述第二预设时长。5.根据权利要求1所述的方法,其特征在于,所述方法还包括下述任一项或至少两项的组合:当接收到所述集群设备发送的复制成功响应时,清空与所述复制成功响应所对应的发送缓冲区;或,将所述数据队列中来自于同一个原始数据表的历史态数据均匀地添加到多个发送缓冲区中。6.一种数据复制方法,其特征在于,所述方法包括:从至少一个接收缓冲区中的任一接收缓冲区接收任一节点设备发送的至少一个历史态数据,所述接收缓冲区用于缓存接收的历史态数据;将所述接收缓冲区中的所述至少一个历史态数据添加到转发缓冲区,通过所述转发缓冲区,将所述至少一个历史态数据转换为符合元组格式的数据,得到至少一个数据项,所述转发缓冲区用于对历史态数据进行数据格式转换;将所述至少一个数据项存储到集群数据库的至少一个目标数据表中,一个目标数据表对应于一个数据项在所述节点设备中所在的一个原始数据表。7.根据权利要求6所述的方法,其特征在于,所述将所述至少一个数据项存储到集群数据库的至少一个目标数据表中包括:对任一以元组为单位的数据项,按照所述数据项所在的原始数据表中的存储格式,将所述数据项存储在与所述原始数据表所对应的目标数据表中;或,对任一表示字段变更情况的数据项,按照键值对的存储格式,将所述数据项存储在与所述原始数据表所对应的目标数据表中。8.根据权利要求7所述的方法,其特征在于,所述按照键值对的存储格式,将所述数据项存储在与所述原始数据表所对应的目标数据表中包括:将所述数据项在所述原始数据表中的键名或者所述数据项的生成时间中的至少一项,确定为所述数据项在所述目标数据表中的键名;将所述至少一个数据项在所述原始数据表中被修改的字段,确定为所述至少一个数据项在所述目标数据表中的键值。9.根据权利要求6所述的方法,其特征在于,所述方法还包括:在所述至少一个历史...

【专利技术属性】
技术研发人员:李海翔
申请(专利权)人:深圳市腾讯计算机系统有限公司
类型:发明
国别省市:广东,44

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

1