一种基于开源数据库的跨数据中心容灾解决系统及方法与流程

文档序号:11133772阅读:493来源:国知局
一种基于开源数据库的跨数据中心容灾解决系统及方法与制造工艺

本发明涉及开源数据库技术领域,尤其涉及一种基于开源数据库的跨数据中心容灾解决系统及方法。



背景技术:

随着国家对数据库自主可控的要求,以及传统行业对于减少使用商业数据库带来的高额成本的需求,开源数据库如关系型数据库管理系统(MySQL)、对象-关系数据库服务器(PostgreSQL)逐渐成为其未来的选择。但开源数据库的容灾方案并不完善,主要体现在能实现数据零丢失切换的方案大都基于数据中心内部的共享存储实现,一方面共享存储设备的成本相对较高,而且一旦涉及到跨数据中心,这样的方案往往无能为力,如基于红帽子集群套件(RHCS)的数据库容灾解决方案;同时基于数据复制的容灾解决方案虽然可以跨数据中心,但其实现相比共享存储的解决方案往往更加的复杂和难以维护,同时如何做到自动探测,自动切换并且能保证数据的高一致也是一个难以解决的问题。



技术实现要素:

本发明要解决的技术问题是提供一种基于开源数据库的跨数据中心容灾解决系统及方法。

本发明的目的在于提供一种基于开源数据库的跨数据中心容灾解决系统,包括:集群控制中心Chunkkeeper、协调服务集群Zookeeper Cluster、所述数据库进程监控模块NodeGuard、开源数据库进程模块DB、共享存储模块Shared Storage、网关模块GateWay、数据中心IDC;

所述集群控制中心Chunkkeeper,用于监控集群数据的可用性,在必要的时候发起容灾切换,并控制切换流程;

所述协调服务集群Zookeeper Cluster,用于存储数据信息包括心跳数据信息、资源数据信息,存储数数据库的健康状态,解耦所述集群控制中心Chunkkeeper、所述数据库进程监控模块NodeGuard、所述网关模块GateWay三者之间的数据通信;

所述数据库进程监控模块NodeGuard,用来监控数据库的状态,并在所述协调服务集群Zookeeper Cluster中维护一个心跳节点,以及通知所述集群控制中心Chunkkeeper数据库的可用性;

所述开源数据库进程模块DB,用于通过本地磁盘来存储数据,或通过所述共享存储模块Shared Storage来存储数据;

所述共享存储模块Shared Storage,用于共享存储;

所述网关模块GateWay,用于接收结构化查询语言SQL请求,并根据所述协调服务集群Zookeeper Cluster中的路由配置,选择把SQL请求转发给所述开源数据库进程模块DB,所述开源数据库进程模块DB包括DB1或者DB2或者DB3;

所述数据中心IDC,包括IDC1、IDC2、IDC3。

其中,所述DB1和DB1-HA是两个数据库进程,在DB1能正常提供服务的情况下,DB1-HA不提供服务;DB1和DB1-HA的监控模块会上报心跳,当DB1的上报心跳异常,或者没有上报心跳达到一定时间阀值后,会发起主备切换流程。

其中,所述DB1和DB1-HA的监控模块会上报心跳,当DB1的上报心跳异常,或者没有上报心跳达到一定时间阀值后,会发起主备切换流程,包括:

当心跳不存在或者心跳上报异常超过一定的阀值时间,发起主备切换流程;

DB1所在的宿主机进行共享资源隔离和VIP回收工作;

如果操作失败,则本次数据中心内部切换失败,上报所述协调服务集群Zookeeper Cluster进行跨数据中心切换,操作成功则DB1-HA所在的宿主机进行共享资源的挂载,并使用共享存储中的数据启动数据库进程,如果操作失败,则本次数据中心内部切换失败,上报所述协调服务集群Zookeeper Cluster进行跨数据中心切换,操作成功则DB1-HA获取VIP资源,对外提供服务。

其中,所述每个数据库进程DB都有一个NodeGuard节点进行监控守护,NodeGuard节点在Zookeeper集群中维护一个Zookeeper心跳节点即Zookeeper临时节点,当NodeGuard节点判断DB进程异常包括MySQL进程不可用,会上报Zookeeper心跳节点异常;当NodeGuard节点消失,意味着NodeGuard和DB进程所在的宿主机宕机,同时NodeGuard在Zookeeper中维护的心跳节点也会跟着消失,当心跳节点异常或者心跳节点消失超过一个人为设定的时间阀值后,Chunkkeeper会根据Zookeeper中的心跳信息发起主备切换流程。

其中,所述当心跳节点异常或者心跳节点消失超过一个人为设定的时间阀值后,Chunkkeeper会根据Zookeeper中的心跳信息发起主备切换流程,包括:

NodeGuard上报异常心跳到Zookeeper集群或者心跳丢失超过时间阀值,Chunkkeeper关注到这个事件,并发起切换任务;

如果是NodeGuard上报异常心跳,则Chunkkeeper下发任务到Zookeeper,任务为令DB1的NodeGuard将DB1设置为只读模式,DB1的NodeGuardWatch到这个任务,并将DB1设置为只读模式,否则跳过上述设置只读模式的步骤,Chunkkeeper下发任务到Zookeeper,任务令NodeGuard上报DB2和DB3的复制同步点,NodeGuard获取DB2和DB3的同步点后上报给Chunkkeeper;

Chunkkeeper选取同步点较大的数据库假设此数据库为DB2,下发任务给其NodeGuard,令DB2加载中继日志到数据库引擎;

DB2的NodeGuard完成DB2加载中继日志到数据库引擎的操作,并上报Zookeeper任务完成;

Chunkkeeper修改GateWay的路由,从原来的转发SQL请求到DB1到转发请求到DB2;

GateWay从Zookeeper获取新的路由配置,并转发新的SQL请求到DB2。

本发明的目的在于还提供一种基于开源数据库的跨数据中心容灾解决方法,包括:

NodeGuard上报异常心跳到Zookeeper集群或者心跳丢失超过时间阀值,Chunkkeeper关注到这个事件,并发起切换任务;

如果是NodeGuard上报异常心跳,则Chunkkeeper下发任务到Zookeeper,任务为令DB1的NodeGuard将DB1设置为只读模式,DB1的NodeGuardWatch到这个任务,并将DB1设置为只读模式,否则跳过上述设置只读模式的步骤,Chunkkeeper下发任务到Zookeeper,任务令NodeGuard上报DB2和DB3的复制同步点,NodeGuard获取DB2和DB3的同步点后上报给Chunkkeeper;

Chunkkeeper选取同步点较大的数据库假设此数据库为DB2,下发任务给其NodeGuard,令DB2加载中继日志到数据库引擎;

DB2的NodeGuard完成DB2加载中继日志到数据库引擎的操作,并上报Zookeeper任务完成;

Chunkkeeper修改GateWay的路由,从原来的转发SQL请求到DB1到转发请求到DB2;

GateWay从Zookeeper获取新的路由配置,并转发新的SQL请求到DB2。

其中,所述基于开源数据库的跨数据中心容灾解决方法,还包括:

当心跳不存在或者心跳上报异常超过一定的阀值时间,发起主备切换流程;

DB1所在的宿主机进行共享资源隔离和VIP回收工作;

如果操作失败,则本次数据中心内部切换失败,上报所述协调服务集群Zookeeper Cluster进行跨数据中心切换,操作成功则DB1-HA所在的宿主机进行共享资源的挂载,并使用共享存储中的数据启动数据库进程,如果操作失败,则本次数据中心内部切换失败,上报所述协调服务集群Zookeeper Cluster进行跨数据中心切换,操作成功则DB1-HA获取VIP资源,对外提供服务。

其中,所述DB1和DB1-HA是两个数据库进程,在DB1能正常提供服务的情况下,DB1-HA不提供服务;DB1和DB1-HA的监控模块会上报心跳,当DB1的上报心跳异常,或者没有上报心跳达到一定时间阀值后,会发起主备切换流程。

其中,所述每个数据库进程DB都有一个NodeGuard节点进行监控守护,NodeGuard节点在Zookeeper集群中维护一个Zookeeper心跳节点即Zookeeper临时节点,当NodeGuard节点判断DB进程异常包括MySQL进程不可用,会上报Zookeeper心跳节点异常;当NodeGuard节点消失,意味着NodeGuard和DB进程所在的宿主机宕机,同时NodeGuard在Zookeeper中维护的心跳节点也会跟着消失,当心跳节点异常或者心跳节点消失超过一个人为设定的时间阀值后,Chunkkeeper会根据Zookeeper中的心跳信息发起主备切换流程。

本发明提供的基于开源数据库的跨数据中心容灾解决系统及方法,兼顾基于共享存储高可用方案的简便性和基于远程复制方案的跨数据中心容灾的能力,并且保证了容灾前后数据的一致性,为传统公司使用开源数据库提供了一套切实可行的容灾方案。

附图说明

图1,为本发明基于开源数据库的跨数据中心容灾解决系统的示意图;

图2,为本发明基于开源数据库的跨数据中心容灾解决方法的示意图;

图3,为本发明基于开源数据库的跨数据中心容灾解决方法又一实施例的示意图。

具体实施方式

本发明提供一种基于开源数据库的跨数据中心容灾解决系统及方法,应用于开源数据库技术领域,本发明基于开源数据库的跨数据中心容灾解决系统及方法,兼顾基于共享存储高可用方案的简便性和基于远程复制方案的跨数据中心容灾的能力,并且保证了容灾前后数据的一致性,为传统公司使用开源数据库提供了一套切实可行的容灾方案。

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供一种基于开源数据库的跨数据中心容灾解决系统。

请参见图1,图1为本发明基于开源数据库的跨数据中心容灾解决系统的示意图,本发明基于开源数据库的跨数据中心容灾解决系统10,包括:集群控制中心Chunkkeeper101、协调服务集群Zookeeper Cluster102、数据库进程监控模块NodeGuard103、开源数据库进程模块DB104、共享存储模块Shared Storage105、网关模块GateWay106、数据中心IDC107;

集群控制中心Chunkkeeper101,用于监控集群数据的可用性,在必要的时候发起容灾切换,并控制切换流程;

协调服务集群Zookeeper Cluster102,用于存储数据信息包括心跳数据信息、资源数据信息等,存储数数据库的健康状态,解耦集群控制中心Chunkkeeper101、数据库进程监控模块NodeGuard103、网关模块GateWay106三者之间的数据通信;

数据库进程监控模块NodeGuard103,用来监控数据库的状态,并在协调服务集群Zookeeper Cluster102中维护一个心跳节点,以及通知集群控制中心Chunkkeeper101数据库的可用性;

开源数据库进程模块DB104,用于通过本地磁盘来存储数据,或通过共享存储模块Shared Storage105来存储数据;

共享存储模块Shared Storage105,用于共享存储;

网关模块GateWay106,用于接收结构化查询语言(SQL)请求,并根据协调服务集群Zookeeper Cluster102中的路由配置,选择把SQL请求转发给开源数据库进程模块DB104,该开源数据库进程模块DB104包括DB1或者DB2或者DB3;

数据中心IDC107,包括IDC1、IDC2、IDC3。

其中,DB1和DB1-HA是两个数据库进程,在DB1能正常提供服务的情况下,DB1-HA不提供服务;DB1和DB1-HA的监控模块会上报心跳,当DB1的上报心跳异常,或者没有上报心跳达到一定时间阀值后,会发起主备切换流程。

其中,DB1和DB1-HA的监控模块会上报心跳,当DB1的上报心跳异常,或者没有上报心跳达到一定时间阀值后,会发起主备切换流程,包括:

当心跳不存在或者心跳上报异常超过一定的阀值时间,发起主备切换流程;

DB1所在的宿主机进行共享资源隔离和VIP回收工作;

如果操作失败,则本次数据中心内部切换失败,上报协调服务集群Zookeeper Cluster102进行跨数据中心切换,操作成功则DB1-HA所在的宿主机进行共享资源的挂载,并使用共享存储中的数据启动数据库进程,如果操作失败,则本次数据中心内部切换失败,上报协调服务集群Zookeeper Cluster102进行跨数据中心切换,操作成功则DB1-HA获取VIP资源,对外提供服务。

其中,每个数据库进程DB都有一个NodeGuard节点进行监控守护,NodeGuard节点在Zookeeper集群中维护一个Zookeeper心跳节点即Zookeeper临时节点,当NodeGuard节点判断DB进程异常包括MySQL进程不可用,会上报Zookeeper心跳节点异常;当NodeGuard节点消失,意味着NodeGuard和DB进程所在的宿主机宕机,同时NodeGuard在Zookeeper中维护的心跳节点也会跟着消失,当心跳节点异常或者心跳节点消失超过一个人为设定的时间阀值后,Chunkkeeper会根据Zookeeper中的心跳信息发起主备切换流程。

其中,当心跳节点异常或者心跳节点消失超过一个人为设定的时间阀值后,Chunkkeeper会根据Zookeeper中的心跳信息发起主备切换流程,包括:

NodeGuard上报异常心跳到Zookeeper集群或者心跳丢失超过时间阀值,Chunkkeeper关注到这个事件,并发起切换任务;

如果是NodeGuard上报异常心跳,则Chunkkeeper下发任务到Zookeeper,任务为令DB1的NodeGuard将DB1设置为只读模式,DB1的NodeGuardWatch到这个任务,并将DB1设置为只读模式,否则跳过上述设置只读模式的步骤,Chunkkeeper下发任务到Zookeeper,任务令NodeGuard上报DB2和DB3的复制同步点,NodeGuard获取DB2和DB3的同步点后上报给Chunkkeeper;

Chunkkeeper选取同步点较大的数据库假设此数据库为DB2,下发任务给其NodeGuard,令DB2加载中继日志到数据库引擎;

DB2的NodeGuard完成DB2加载中继日志到数据库引擎的操作,并上报Zookeeper任务完成;

Chunkkeeper修改GateWay的路由,从原来的转发SQL请求到DB1到转发请求到DB2;

GateWay从Zookeeper获取新的路由配置,并转发新的SQL请求到DB2。

本发明还提供一种基于开源数据库的跨数据中心容灾解决方法。

请参见图2,图2为本发明基于开源数据库的跨数据中心容灾解决方法的示意图,本发明基于开源数据库的跨数据中心容灾解决方法,包括:

S21、NodeGuard上报异常心跳到Zookeeper集群或者心跳丢失超过时间阀值,Chunkkeeper关注到这个事件,并发起切换任务;

S22、如果是NodeGuard上报异常心跳,则Chunkkeeper下发任务到Zookeeper,任务为令DB1的NodeGuard将DB1设置为只读模式,DB1的NodeGuardWatch到这个任务,并将DB1设置为只读模式,否则跳过上述设置只读模式的步骤,Chunkkeeper下发任务到Zookeeper,任务令NodeGuard上报DB2和DB3的复制同步点,NodeGuard获取DB2和DB3的同步点后上报给Chunkkeeper;

S23、Chunkkeeper选取同步点较大的数据库假设此数据库为DB2,下发任务给其NodeGuard,令DB2加载中继日志到数据库引擎;

S24、DB2的NodeGuard完成DB2加载中继日志到数据库引擎的操作,并上报Zookeeper任务完成;

S25、Chunkkeeper修改GateWay的路由,从原来的转发SQL请求到DB1到转发请求到DB2;

S26、GateWay从Zookeeper获取新的路由配置,并转发新的SQL请求到DB2。

其中,请参见图3,图3为本发明基于开源数据库的跨数据中心容灾解决方法又一实施例的示意图,本发明基于开源数据库的跨数据中心容灾解决方法,还包括:

S31、当心跳不存在或者心跳上报异常超过一定的阀值时间,发起主备切换流程;

S32、DB1所在的宿主机进行共享资源隔离和VIP回收工作;

S33、如果操作失败,则本次数据中心内部切换失败,上报协调服务集群Zookeeper Cluster102进行跨数据中心切换,操作成功则DB1-HA所在的宿主机进行共享资源的挂载,并使用共享存储中的数据启动数据库进程,如果操作失败,则本次数据中心内部切换失败,上报协调服务集群Zookeeper Cluster102进行跨数据中心切换,操作成功则DB1-HA获取VIP资源,对外提供服务。

其中,DB1和DB1-HA是两个数据库进程,在DB1能正常提供服务的情况下,DB1-HA不提供服务;DB1和DB1-HA的监控模块会上报心跳,当DB1的上报心跳异常,或者没有上报心跳达到一定时间阀值后,会发起主备切换流程。

其中,每个数据库进程DB都有一个NodeGuard节点进行监控守护,NodeGuard节点在Zookeeper集群中维护一个Zookeeper心跳节点即Zookeeper临时节点,当NodeGuard节点判断DB进程异常包括MySQL进程不可用,会上报Zookeeper心跳节点异常;当NodeGuard节点消失,意味着NodeGuard和DB进程所在的宿主机宕机,同时NodeGuard在Zookeeper中维护的心跳节点也会跟着消失,当心跳节点异常或者心跳节点消失超过一个人为设定的时间阀值后,Chunkkeeper会根据Zookeeper中的心跳信息发起主备切换流程。

本发明基于开源数据库的跨数据中心容灾解决系统及方法,兼顾基于共享存储高可用方案的简便性和基于远程复制方案的跨数据中心容灾的能力,并且保证了容灾前后数据的一致性,为传统公司使用开源数据库提供了一套切实可行的容灾方案。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或者操作之间存在任何这种实际的关系或者顺序。而且,术语“包含”、“包括”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系统要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个、、、、、、”限定的要素,并不排除在包括所述要素的过程、方法、物品、设备或者装置中还存在另外的相同要素。

对于本发明基于开源数据库的跨数据中心容灾解决系统及方法,实现的形式是多种多样的。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1