技术新讯 > 计算推算,计数设备的制造及其应用技术 > 一种MySQL主从集群的数据实时同步方法与装置与流程  >  正文

一种MySQL主从集群的数据实时同步方法与装置与流程

  • 国知局
  • 2025-01-10 13:31:24

本发明涉及数据同步的,特别是涉及一种mysql主从集群的数据实时同步方法与装置。

背景技术:

1、当源端数据库为mysql主从集群,目标数据库为同构或异构数据库管理系统,且使用数据实时同步软件进行数据实时同步时,为了避免数据实时同步服务的中断,保障实时同步的连续性,当源端mysql数据库集群的主节点发生故障时,若mysql数据库节点故障或者主同步服务故障,则需要进行故障切换,在mysql数据库集群中的可用数据库节点上继续进行数据实时同步服务,保障mysql数据库到目标数据库的数据实时同步的高可用。

2、目前对于mysql数据库主从集群,基于日志分析的数据实时同步软件在进行同步故障切换时,常规方法为利用mysql的全局事务id,在mysql数据库主从节点的本地binlog日志文件中进行同步事务定位,获取发生故障时的同步断点,然后基于断点位置继续进行数据实时同步,保证同步的连续性和正确性。此方法要求mysql主从集群使用全局事务id(global transaction identifier,简称为:gtid)同步模式,不适用于基于位点模式的集群。另一方面,基于gtid的事务定位,在故障恢复时需要从binlog文件头开始读取,不能直接定位同步断点。

3、鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。

技术实现思路

1、本发明要解决的技术问题在于当进行数据实时同步的主节点需要和备用节点切换时,如何在适用于位点模式的集群的前提下直接定位同步断点。

2、本发明采用如下技术方案:

3、第一方面,提供一种mysql主从集群的数据实时同步方法,包括:

4、在源端创建辅助表t1,在目标端创建主辅助表t2和备辅助表t3;其中,源端每隔预设时间对所述辅助表t1进行更新操作;

5、对源端侧的主节点的主日志进行解析得到主体事务,将从所述主日志中解析出来的针对于所述辅助表t1的更新操作作为主辅助事务,通过所述主辅助表t2对所述主辅助事务以及目标端所提交的主体事务进行记录;

6、将从源端侧的备用节点的备用日志中解析出来的针对于所述辅助表t1中的更新操作作为备辅助事务,通过所述备辅助表t3对所述备辅助事务进行记录;

7、当主节点停止进行主同步服务时,根据所述主辅助表t2和所述备辅助表t3对所述备用节点的事务进度进行调整,使得所述备用节点的主体事务的进度同所述主节点停用时的事务进度一致;

8、将所述备用节点切换为新的主节点,从调整后的事务进度开始进行事务同步。

9、优选的,所述通过所述主辅助表t2对所述主辅助事务以及目标端所提交的主体事务进行记录,具体包括:

10、当所述目标端对主节点同步过来的所述主体事务进行提交时,将主体事务的起始位置、事务长度以及事务编号记录至所述主辅助表t2;

11、当所述目标端执行所述主辅助事务时,将主辅助事务起始位置、事务长度和更新时间戳记录至所述主辅助表t2。

12、优选的,所述通过所述备辅助表t3对所述备辅助事务进行记录,具体包括:

13、将备辅助事务对应的起始位置、事务长度和更新时间戳记录至所述主辅助表t3。

14、优选的,所述当主节点停止进行主同步服务时,根据所述主辅助表t2和所述备辅助表t3对所述备用节点的事务进度进行调整,使得所述备用节点的主体事务的进度同所述主节点停用时的事务进度一致,具体包括:

15、当主节点停止进行主同步服务时,根据所述主辅助表t2获取最后记录的主辅助事务以及最后记录的主体事务,根据所述备辅助表t3获取最后记录的备辅助事务;

16、获取所述最后记录的主辅助事务的更新时间戳tsa和最后记录的备辅助事务的更新时间戳tsb之间的大小关系,根据所述大小关系对所述备用节点的事务进度进行一次调整;

17、获取所述最后记录的主辅助事务的起始位置和所述最后记录的主体事务的起始位置的前后关系,根据所述前后关系对一次调整后的事务进度进行二次调整。

18、优选的,所述根据所述大小关系对所述备用节点的事务进度进行一次调整,具体包括:

19、当所述更新时间戳tsa大于所述更新时间戳tsb时,将所述备用节点的事务进度推进至更新时间戳为tsa时所对应的备辅助事务的起始位置;

20、当所述更新时间戳tsa小于所述更新时间戳tsb时,将所述备用节点的事务进度回溯至更新时间戳为tsa时所对应的备辅助事务的起始位置;

21、当所述更新时间戳tsa等于所述更新时间戳tsb时,则保持所述备用节点的事务进度不变。

22、优选的,所述根据所述前后关系对一次调整后的事务进度进行二次调整,具体包括:

23、当所述最后记录的主辅助事务的起始位置比所述最后记录的主体事务的起始位置靠后时,则保持所述一次调整后的事务进度不变;

24、当所述最后记录的主体事务的起始位置比所述最后记录的主辅助事务的起始位置靠前时,在所述一次调整后的事务进度的基础上,备用节点对所述最后记录的主体事务进行过滤处理,从而将备用节点的事务进度推进至所述最后记录的主体事务的下一个主体事务的起始位置。

25、优选的,所述将所述备用节点切换为新的主节点,从调整后的事务进度开始进行事务同步,具体包括:

26、当原主节点发生故障时,将备用节点切换为新的主节点,原主节点在设定时间内停止使用。

27、优选的,所述将所述备用节点切换为新的主节点,从调整后的事务进度开始进行事务同步,具体包括:

28、当原节点和备用节点相互切换时,备用节点切换为新的主节点,并进行事务同步,原主节点切换为新的备用节点,对主体事务进行过滤处理,并解析辅助表t1中的更新操作。

29、第二方面,提供一种mysql主从集群的数据实时同步装置,包括至少一个处理器,以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行所述的mysql主从集群的数据实时同步方法。

30、第三方面,本发明还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,用于完成第一方面所述的方法。

31、第四方面,提供了一种芯片,包括:处理器和接口,用于从存储器中调用并运行存储器中存储的计算机程序,执行如第一方面的方法。

32、第五方面,提供了一种包含指令的计算机程序产品,当该指令在计算机或处理器上运行时,使得计算机或处理器执行如第一方面的方法。

33、第六方面,提供了一种mysql主从集群的数据实时同步系统,包括如第二方面的mysql主从集群的数据实时同步装置,并使用如第一方面的mysql主从集群的数据实时同步方法。

34、本发明提供一种mysql主从集群的数据实时同步方法与装置,创建辅助表t1、主辅助表t2和备辅助表t3;源端每隔预设时间对辅助表t1进行更新操作;对主节点的主日志进行解析得到主体事务,将从主日志中解析出来的针对于辅助表t1的更新操作作为主辅助事务,通过主辅助表t2对主辅助事务以及目标端所提交的主体事务进行记录;将从备用节点的备用日志中解析出来的针对于辅助表t1中的更新操作作为备辅助事务,通过备辅助表t3对备辅助事务进行记录;当主节点停止进行主同步服务时,根据主辅助表t2和备辅助表t3对备用节点的事务进度进行调整,使得备用节点的主体事务的进度同主节点停用时的事务进度一致,备用节点以调整后的事务进度开始将主体事务同步至目标端。其中,由于是单独创建的辅助表t1,因此mysql主从集群无需局限于使用gtid同步模式,采用位点模式的mysql主从集群同样适用,另一方面通过辅助表中所记录的事务对应的文件偏移,可以直接定位同步断点,无需在binlog日志的起始位置开始读取。

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

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