技术新讯 > 计算推算,计数设备的制造及其应用技术 > 一种数据库主备复制方法、装置、设备及存储介质与流程  >  正文

一种数据库主备复制方法、装置、设备及存储介质与流程

  • 国知局
  • 2025-01-10 13:33:55

本发明涉及数据库领域,特别涉及一种数据库主备复制方法、装置、设备及计算机可读存储介质。

背景技术:

1、mysql数据库进行主备复制时,同步速度存在差异,mysql主数据库的存储速度是多线程支持并发的,但是备数据库在同步到主数据的binlog(二进制日志)后进行binlog重放时是单线程的,因此,速度会比主数据库慢,导致会存在主备复制延迟,如果主备复制延迟时间过长将严重影响业务,如数据一致性问题、读写分离效果降低、数据丢失风险高、故障恢复时间延长、数据查询性能下降、复制链路压力增加等。

技术实现思路

1、本发明的目的在于提供一种数据库主备复制方法、装置、设备及计算机可读存储介质,应用于数据库领域,该方法实现事务的多线程分配及运行,避免了提升备数据库的同步效率,减少主备延迟,且通过双层哈希表保证了协调器解析事务后分配子线程的效率,同时通过双层降低了发生哈希碰撞的概率。

2、为解决上述技术问题,本发明提供一种数据库主备复制方法,包括:

3、通过协调器在备数据库所在服务器上创建多个子线程,为每个所述子线程构建一个哈希表,将事务从主数据库的binlog中同步至所述备数据库的relay-log中;所述哈希表为双层哈希表;

4、通过所述协调器解析所述relay-log中的事务,确定事务中的改动行及所述改动行的行修改次数,构建所述改动行的行标识;

5、确定所述行标识的哈希值;所述行标识的哈希值包括所述行标识经第一哈希算法运算得到的第一哈希值及所述行标识经第二哈希算法运算得到的第二哈希值;

6、当所述行标识的哈希值存储在所述哈希表中时,将存储有所述行标识的哈希值的所述哈希表确定为目标哈希表;

7、当所述行标识的哈希值未存储在所述哈希表中时,随机从所述哈希表中确定目标哈希表,并将所述行标识的哈希值存储至所述目标哈希表;

8、基于所述行修改次数更新所述目标哈希表中对应的value值,将事务分配至所述目标哈希表的目标子线程,当所述目标子线程中所述改动行的执行语句执行完毕后,删除所述目标哈希表中所述行标识的哈希值及对应的value值。

9、可选的,所述当所述行标识的哈希值存储在所述哈希表中时,将存储有所述行标识的哈希值的所述哈希表确定为目标哈希表,包括:

10、当全部所述行标识的哈希值存储在一个所述哈希表中时,将存储有全部所述行标识的哈希值的所述哈希表确定为所述目标哈希表;

11、当部分所述行标识的哈希值存储在一个所述哈希表中,且另一部分所述行标识的哈希值未存储在所述哈希表中时,将存储有部分所述行标识的哈希值的所述哈希表确定为所述目标哈希表;

12、当全部所述行标识的哈希值存储在多个不同的所述哈希表中时,将事务放入所述协调器中进行等待,直至部分所述行标识的哈希值存储在一个所述哈希表中,且另一部分所述行标识的哈希值未存储在所述哈希表中。

13、可选的,所述构建所述改动行的行标识,包括:

14、基于所述改动行的库名、表名、唯一键和所述唯一键的值构建所述改动行的行标识;

15、或,基于所述改动行的所述库名、所述表名、唯一索引和所述唯一索引的值构建所述改动行的行标识。

16、可选的,所述基于所述行修改次数更新所述目标哈希表中对应的value值,包括:

17、将所述目标哈希表中所述行标识的哈希值的value值加上对应的行修改次数。

18、可选的,所述通过协调器在备数据库所在服务器上创建多个子线程,包括:

19、基于服务器剩余资源通过所述协调器在服务器上创建多个所述子线程。

20、可选的,所述通过所述协调器解析所述relay-log中的事务,包括:

21、基于事务id从小到大的顺序通过所述协调器从所述relay-log查找并解析事务。

22、可选的,所述哈希表为双层以上哈希表;相应的,所述行标识的哈希值包含两个及以上哈希算法的运算值。

23、为解决上述技术问题,本发明提供一种数据库主备复制装置,包括:

24、第一模块,用于通过协调器在备数据库所在服务器上创建多个子线程,为每个所述子线程构建一个哈希表,将事务从主数据库的binlog中同步至所述备数据库的relay-log中;所述哈希表为双层哈希表;

25、第二模块,用于通过所述协调器解析所述relay-log中的事务,确定事务中的改动行及所述改动行的行修改次数,构建所述改动行的行标识;

26、第三模块,用于确定所述行标识的哈希值;所述行标识的哈希值包括所述行标识经第一哈希算法运算得到的第一哈希值及所述行标识经第二哈希算法运算得到的第二哈希值;

27、第四模块,用于当所述行标识的哈希值存储在所述哈希表中时,将存储有所述行标识的哈希值的所述哈希表确定为目标哈希表;

28、第五模块,用于当所述行标识的哈希值未存储在所述哈希表中时,随机从所述哈希表中确定目标哈希表,并将所述行标识的哈希值存储至所述目标哈希表;

29、第六模块,用于基于所述行修改次数更新所述目标哈希表中对应的value值,将事务分配至所述目标哈希表的目标子线程,当所述目标子线程中所述改动行的执行语句执行完毕后,删除所述目标哈希表中所述行标识的哈希值及对应的value值。

30、为解决上述技术问题,本发明提供一种数据库主备复制设备,包括:

31、存储器,用于储存计算机程序;

32、处理器,用于执行所述计算机程序时实现所述数据库主备复制方法。

33、为解决上述技术问题,本发明提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器执行时,实现所述数据库主备复制方法。

34、可见,本发明方法通过协调器在备数据库所在服务器上创建多个子线程,为每个子线程构建一个哈希表,将事务从主数据库的binlog中同步至备数据库的relay-log中;哈希表为双层哈希表;通过协调器解析relay-log中的事务,确定事务中的改动行及改动行的行修改次数,构建改动行的行标识;确定行标识的哈希值;行标识的哈希值包括行标识经第一哈希算法运算得到的第一哈希值及所述行标识经第二哈希算法运算得到的第二哈希值;当行标识的哈希值存储在哈希表中时,将存储有行标识的哈希值的哈希表确定为目标哈希表;当行标识的哈希值未存储在哈希表中时,随机从哈希表中确定目标哈希表,并将行标识的哈希值存储至目标哈希表;基于行修改次数更新目标哈希表中对应的value值,当目标子线程中改动行的执行语句执行完毕后,删除目标哈希表中行标识的哈希值及对应的value值。

35、本发明方法通过双层哈希表实现事务的多线程分配及运行,提升备数据库的同步效率,减少主备延迟,且通过双层哈希表保证了协调器解析事务后分配子线程的效率,同时降低了发生哈希碰撞的概率。

技术特征:

1.一种数据库主备复制方法,其特征在于,包括:

2.根据权利要求1所述数据库主备复制方法,其特征在于,所述当所述行标识的哈希值存储在所述哈希表中时,将存储有所述行标识的哈希值的所述哈希表确定为目标哈希表,包括:

3.根据权利要求1所述数据库主备复制方法,其特征在于,所述构建所述改动行的行标识,包括:

4.根据权利要求1所述数据库主备复制方法,其特征在于,所述基于所述行修改次数更新所述目标哈希表中对应的value值,包括:

5.根据权利要求1所述数据库主备复制方法,其特征在于,所述通过协调器在备数据库所在服务器上创建多个子线程,包括:

6.根据权利要求1所述数据库主备复制方法,其特征在于,所述通过所述协调器解析所述relay-log中的事务,包括:

7.根据权利要求1所述数据库主备复制方法,其特征在于,所述哈希表为双层以上哈希表;相应的,所述行标识的哈希值包含两个及以上哈希算法的运算值。

8.一种数据库主备复制装置,其特征在于,包括:

9.一种数据库主备复制设备,其特征在于,包括:

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器执行时,实现如权利要求1至7任一项所述数据库主备复制方法。

技术总结本发明公开了一种数据库主备复制方法、装置、设备及存储介质,应用于数据库领域,该方法通过协调器在备数据库所在服务器上创建多个子线程,为每个子线程构建双层哈希表,将事务从主数据库binlog中同步至备数据库的relay‑log中;通过协调器解析relay‑log中的事务,构建改动行的行标识并确定行标识的哈希值。通过比较事务中改动行的哈希值及双层哈希表存储的哈希值以避免更新同一行的两个事务被分发到不同的子线程中,且事务不能被拆分,进而实现事务的多线程分配及运行,提升备数据库的同步效率,减少主备延迟,且通过双层哈希表保证了协调器解析事务后分配子线程的效率,同时降低了发生哈希碰撞的概率。技术研发人员:贺鸿才,李尼科,鲁健翔,周雁鸣,郝大程,刘涛,廖宜银,邹扬,满敏受保护的技术使用者:湖南长银五八消费金融股份有限公司技术研发日:技术公布日:2025/1/6

本文地址:https://www.jishuxx.com/zhuanli/20250110/353941.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。