基于组复制的MySQL同城多中心的多活实现方法和系统与流程

文档序号:35817112发布日期:2023-10-22 07:48阅读:42来源:国知局
基于组复制的MySQL同城多中心的多活实现方法和系统与流程

本发明涉及mysql,具体地,涉及一种基于组复制的mysql同城多中心的多活实现方法和系统。


背景技术:

1、目前主流的同城多中心的多活方案,存在以下两种主流解决方案:

2、方案一:主流方案基本使用mysql的半同步的主从复制模式,构建出双主的架构,实现双活方案;主主模式,复制链路非常脆弱,容易出现复制中断,导致双向复制失败;同时需要业务主动适配流量写入方向,对业务侵入性比较大,故障后,需要业务手工修改配置来实现流量的切换;

3、方案二:通过引入第三方的复制工具,构建双向复制,实现mysql双机房之间的相互同步复制,由于引入外部工具,往往在协议解析上存在缺陷,容易造成双向复制失败;业务侧缺失流量控制,也会存在方案一带来的问题。

4、专利文献cn111708843a(申请号:cn202010560771.1)公开了一种基于mgr的跨数据中心mysql多活实现方法,包括如下步骤:s1在同一个城市里要去选择三个数据中心,或者是自建数据中心,或者是租用运营商的数据中心,保证三个数据中心之间的距离在30公里以内;s2三个数据中心之间通过dwdm技术,使用裸光纤连接,确保网络延迟的2毫秒以内,网络带宽在10gb以上;s3数据库服务器采用物理主机,内存至少128g,cpu至少32核心,硬盘使用固态盘,保证数据库性能足够支撑相关业务。然而该专利无法解决目前存在的技术问题,也无法满足本发明的需求。


技术实现思路

1、针对现有技术中的缺陷,本发明的目的是提供一种基于组复制的mysql同城多中心的多活实现方法和系统。

2、根据本发明提供的基于组复制的mysql同城多中心的多活实现方法,包括:

3、在数据中心a中部署一组带有组复制协议的mysql集群a实例组,在数据中心b中部署一组带有组复制协议的mysql集群b实例组,在流量控制区部署流量分发中间件,业务访问通过中间件分发给数据中心a和数据中心b,实现业务的双写多活。

4、优选的,基于异步复制故障自动切换技术,在mysql集群a实例组和mysql集群b实例组构建双向复制通道,在每个复制通道上设置多个复制源和不同权重,当主复制源发生故障异常中断后,先尝试重连几次,然后自动切换到新的复制源,当原来的复制源恢复后,如果其权重更高,则切换回去。

5、优选的,组复制中每个节点都有一份完整的数据副本,节点间通过gcs层进行交互;

6、通过能够相互通信的多个服务器节点组成复制组,每个服务器节点独立执行事务,所有读写事务在冲突检测成功后提交;

7、当读写事务准备提交前,向复制组发出一个原子广播,内容包括:该事务修改的数据,及其所对应的写集合;如果组中所有节点都接收该事务消息,则都按照与之前发送事务的相同顺序收到该广播消息,所有组成员都以相同的顺序接收事务的写集,并为事务建立全局顺序。

8、优选的,若在多个节点上并行执行的事务产生冲突,则对比判断两个并行事务的写集合进行确认,判定全局顺序在前的事务成功,所有节点都提交该事务;全局顺序在后的事务失败回滚,各节点删除该事务;若事务产生冲突的频次超出预设阈值,则将该事务放在同一个节点上执行。

9、优选的,对于正在应用或外化的事务,在不破坏事务一致性和有效性的前提下,组复制允许它们不一定按照原有顺序执行;当流量超出预设阈值时,事务存在被外化而导致顺序不一致的可能性,若组复制的认证线程判定这个事务不会产生冲突则不处理。

10、根据本发明提供的基于组复制的mysql同城多中心的多活实现系统,包括:

11、数据中心a:部署一组带有组复制协议的mysql集群a实例组;

12、数据中心b:部署一组带有组复制协议的mysql集群b实例组;

13、流量控制区:部署流量分发中间件,业务访问通过中间件分发给数据中心a和数据中心b,实现业务的双写多活。

14、优选的,基于异步复制故障自动切换技术,在mysql集群a实例组和mysql集群b实例组构建双向复制通道,在每个复制通道上设置多个复制源和不同权重,当主复制源发生故障异常中断后,先尝试重连几次,然后自动切换到新的复制源,当原来的复制源恢复后,如果其权重更高,则切换回去。

15、优选的,组复制中每个节点都有一份完整的数据副本,节点间通过gcs层进行交互;

16、通过能够相互通信的多个服务器节点组成复制组,每个服务器节点独立执行事务,所有读写事务在冲突检测成功后提交;

17、当读写事务准备提交前,向复制组发出一个原子广播,内容包括:该事务修改的数据,及其所对应的写集合;如果组中所有节点都接收该事务消息,则都按照与之前发送事务的相同顺序收到该广播消息,所有组成员都以相同的顺序接收事务的写集,并为事务建立全局顺序。

18、优选的,若在多个节点上并行执行的事务产生冲突,则对比判断两个并行事务的写集合进行确认,判定全局顺序在前的事务成功,所有节点都提交该事务;全局顺序在后的事务失败回滚,各节点删除该事务;若事务产生冲突的频次超出预设阈值,则将该事务放在同一个节点上执行。

19、优选的,对于正在应用或外化的事务,在不破坏事务一致性和有效性的前提下,组复制允许它们不一定按照原有顺序执行;当流量超出预设阈值时,事务存在被外化而导致顺序不一致的可能性,若组复制的认证线程判定这个事务不会产生冲突则不处理。

20、与现有技术相比,本发明具有如下的有益效果:

21、(1)本发明在多数据中心部署多套数据库集群,并构建集群间的复制通道,当主机房不可用时,在校验完数据后,就可以切换到备用机房的数据库集群,在发生故障时可以保障数据不丢失以及业务强连续性,从而提高整体运维效率;

22、(2)解决了业务与流量中间件模块通过代理方式访问数据库的难点,既需要对后侧数据库架构变化进行通信,又需要保障数据库发生故障切换时对业务应用层透明无感知;解决了两个数据中部署两套mgr集群,两个集群之间如何保障故障时数据自动同步和切换的技术难点;

23、(3)本发明通过采用组复制技术为同城双活提供了高一致性、高容错性、高扩展性的技术效果,具体如下:

24、高一致性:基于原生复制及pasxos协议的组复制技术,提供了一致性数据安全保障,确保组内数据最终一致性;

25、高容错性:确保组内高可用,只要不是大多数节点故障就可以继续工作,有自动检测机制,当不同节点资源争用冲突时,不会出现错误按照先到者优先原则处理,并内置自动化脑裂防护机制;

26、高扩展性:新节点的除节点都是自动的,新节点加入后,会自动与其它节点同步,直到新节点与其它节点一致,如果某个节点被移除,其它节点会自动更新组信息,自动维护新组信息。



技术特征:

1.一种基于组复制的mysql同城多中心的多活实现方法,其特征在于,包括:

2.根据权利要求1所述的基于组复制的mysql同城多中心的多活实现方法,其特征在于,基于异步复制故障自动切换技术,在mysql集群a实例组和mysql集群b实例组构建双向复制通道,在每个复制通道上设置多个复制源和不同权重,当主复制源发生故障异常中断后,先尝试重连几次,然后自动切换到新的复制源,当原来的复制源恢复后,如果其权重更高,则切换回去。

3.根据权利要求1所述的基于组复制的mysql同城多中心的多活实现方法,其特征在于,组复制中每个节点都有一份完整的数据副本,节点间通过gcs层进行交互;

4.根据权利要求1所述的基于组复制的mysql同城多中心的多活实现方法,其特征在于,若在多个节点上并行执行的事务产生冲突,则对比判断两个并行事务的写集合进行确认,判定全局顺序在前的事务成功,所有节点都提交该事务;全局顺序在后的事务失败回滚,各节点删除该事务;若事务产生冲突的频次超出预设阈值,则将该事务放在同一个节点上执行。

5.根据权利要求1所述的基于组复制的mysql同城多中心的多活实现方法,其特征在于,对于正在应用或外化的事务,在不破坏事务一致性和有效性的前提下,组复制允许它们不一定按照原有顺序执行;当流量超出预设阈值时,事务存在被外化而导致顺序不一致的可能性,若组复制的认证线程判定这个事务不会产生冲突则不处理。

6.一种基于组复制的mysql同城多中心的多活实现系统,其特征在于,包括:

7.根据权利要求6所述的基于组复制的mysql同城多中心的多活实现系统,其特征在于,基于异步复制故障自动切换技术,在mysql集群a实例组和mysql集群b实例组构建双向复制通道,在每个复制通道上设置多个复制源和不同权重,当主复制源发生故障异常中断后,先尝试重连几次,然后自动切换到新的复制源,当原来的复制源恢复后,如果其权重更高,则切换回去。

8.根据权利要求6所述的基于组复制的mysql同城多中心的多活实现系统,其特征在于,组复制中每个节点都有一份完整的数据副本,节点间通过gcs层进行交互;

9.根据权利要求6所述的基于组复制的mysql同城多中心的多活实现系统,其特征在于,若在多个节点上并行执行的事务产生冲突,则对比判断两个并行事务的写集合进行确认,判定全局顺序在前的事务成功,所有节点都提交该事务;全局顺序在后的事务失败回滚,各节点删除该事务;若事务产生冲突的频次超出预设阈值,则将该事务放在同一个节点上执行。

10.根据权利要求6所述的基于组复制的mysql同城多中心的多活实现系统,其特征在于,对于正在应用或外化的事务,在不破坏事务一致性和有效性的前提下,组复制允许它们不一定按照原有顺序执行;当流量超出预设阈值时,事务存在被外化而导致顺序不一致的可能性,若组复制的认证线程判定这个事务不会产生冲突则不处理。


技术总结
本发明提供了一种基于组复制的MySQL同城多中心的多活实现方法和系统,包括:在数据中心A中部署一组带有组复制协议的MySQL集群A实例组,在数据中心B中部署一组带有组复制协议的MySQL集群B实例组,在流量控制区部署流量分发中间件,业务访问通过中间件分发给数据中心A和数据中心B,实现业务的双写多活。本发明在发生故障时可以保障数据不丢失以及业务强连续性,从而提高整体运维效率。

技术研发人员:魏子昂,窦尧,胡娟,何秉卫,周伟,何卓凡,李升
受保护的技术使用者:兴业银行股份有限公司
技术研发日:
技术公布日:2024/1/15
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1