针对数据库的两地三中心自动切换方法

责任编辑:朱文凤 2021.04.13 11:02 来源:通信世界全媒体

通信世界网消息(CWW)随着互联网的高速发展,企业对经营规模和业务复杂性等方面的要求逐渐增长,这对数据库来说,意味着需要能够处理比单个节点更多的流量,并且要能够提供“始终在线”的高可用性。为了实现数据库的高可用性,很多企业和专家设计了相应的方案,比如双机高可用、主从架构、多主集群高可用等。虽然这些方案实现了一定的高可用性,但仍存在一些缺点,如表1所示。

表1 现行高可用技术方案的缺点

image.png

现有高可用性方案存在缺点,我们需要从整体优化的角度设计数据库以实现高可用性。本文研究了两地三中心自动切换方法,在解决上述问题的同时,更好地实现了数据库的高可用性。

高可用故障切换机制,实现数据零丢失随着虚拟集群对于高可用要求的提升,故障切换机制的作用越发凸显,本文研究的高可用虚拟集群高效透明的故障切换机制,可以将两地三中心集群下高可用能力提升到99.999%,容灾能力达到《信息安全技术 信息系统灾难恢复规范》(GB/T 20988—2007)第6级能力要求,同时实现了数据零丢失。高效检测心跳网络机制是本文研究的高可用集群检测节点状态的高效检测方法。无论主数据库服务器是否向辅节点数据库服务器发送记录,这两个数据库服务器均会互相执行心跳检测操作。如果其中一个数据库服务器连续4次没有响应心跳检测尝试,那么另一数据库服务器会假定发生了集群故障。集群中每个数据库服务器都可设置心跳检测周期,到达周期后向集群中的其他数据库服务器发送心跳检测。数据库服务器检测到集群故障后,会在其消息日志写入一条消息并关闭数据复制。如果发生了集群故障,两个数据库服务器之间的连接将被断开,并且辅节点数据库服务器将保持只读方式。

CM(Connect Manager,连接管理器)的切换机制原理●P-DBS(Primary Database Server,主节点)发生故障CM实现了集群节点的故障切换。在一个两地三中心的高可用集群部署中,针对不同节点的故障,本项目可实现不同的故障切换策略。

如图1所示,P-DBS发生故障时,NS-DBS(Nearly secondary database server,近点辅节点)和MS-DBS(Middle distance secondary database server,中程辅节点)启用接管。NS-DBS成为新的主服务器,原MS-DBS重定向为新的主服务器的MS-DBS备机,原RS-DBS(Remote secondary database server,远程辅节点)备机重定向为新的主服务器的RS-DBS备机。

(发稿)论文:两地三中心自动切换方法_v1.0-李敬林(1)(1) (1)1210.png

图1 主节点故障切换流程图

●原NS-DBS整体发生故障如图2所示,在主服务器故障(原NS-DBS整体发生故障)时,MS-DBS启接管,此时由MS-DBS备机接管。MS-DBS备机接管成为新的主服务器,原RS-DBS备机重定向成为新的主服务器的RS-DBS备机。

(发稿)论文:两地三中心自动切换方法_v1.0-李敬林(1)(1) (1)1373.png

图2 主服务器故障切换流程图

●原NS-DBS、MS-DBS同时发生故障在主服务器故障(原NS-DBS、MS-DBS同时发生故障)时,RS-DBS启用接管,此时由RS-DBS备机接管。RS-DBS备机接管成为主服务器,由于此时没有别的备用服务器,仅有主服务器,不再有接管。当集群存在多个RS-DBS备机时,RS-DBS其它备机仍可成为当前主服务器的RS-DBS备机,直至最后一个RS-DBS备机成为主服务器。

●仅剩一个RS-DBS在最极端的情况下,如图3所示,仅剩一个RS-DBS时,从原RS-DBS开始逐步恢复整个高可用集群。如果整个集群未到最极端情况(仅剩一个RS-DBS),则可以从以下步骤依次开始恢复。

恢复原PRI(ids1)或者NS-DBS(NS-DBS)为当前PRI(原RS-DBS(RS-DBS))的MS-DBS备机;第二,MS-DBS切换,使用ids1成为MS-DBS主用;第三,启动原SEC(ids2),恢复成MS-DBS备用(需要在ids1重新定义MS-DBS备用);第四,启动原NS-DBS(NS-DBS),恢复成NS-DBS备用;第五,启动原RS-DBS(RS-DBS),恢复成RS-DBS备用(需要在ids1重新增加RS-DBS备用),恢复完成后,整个高可用集群完成恢复。

(发稿)论文:两地三中心自动切换方法_v1.0-李敬林(1)(1) (1)1957.png

图3 极端情况下故障切换流程

CM负载均衡的实现在本设计中,CM不仅可以实现集群节点的故障切换,CM集群还负责对集群内所有节点负载均衡。客户端通过CM获取信息建立到数据库服务的连接。高可用集群内所有节点都可以对客户端提供服务,由CM确定客户端应该连接到哪个数据库节点。连接管理器用于监视和维护客户端连接,以及将客户端连接请求定向到适当的服务器。CM从连接单元中的每台服务器收集工作负载统计信息,通过获取各节点的状态信息,实时了解集群整体状态,当客户端需要连接数据库集群获取服务时,根据当前状态提供连接节点并引导应用连接到正常提供服务的节点;当检测到数据库集群中有故障时,引导数据库故障节点的服务迁移到正常节点上。

CM执行可配置的负载均衡,这样客户机将基于服务器的工作负载进行重定向。CM连接到集群中的每台服务器,收集有关服务器类型、未使用的工作负载容量及当前服务器状态的统计信息。通过这些信息,CM将客户机连接重定向到活动量最少的服务器。

针对负载均衡的策略,客户端可以指定连接到不同的数据库服务器:首先,指定CM将连接请求定向到等待时间最短的服务器;其次,指定CM将连接请求定向到应用失败次数最少的服务器;最后,指定CM将连接请求定向到工作负载最低的服务器。

要进一步增加可用性,并避免使CM成为负载瓶颈,可配置多个CM实例同时对客户端提供服务。

两地三中心部署架构高可用集群总体系统组成本文设计的高可用数据库集群是基于单机版本数据库管理系统实现的,总体系统组成如图4所示。

(发稿)论文:两地三中心自动切换方法_v1.0-李敬林(1)(1) (1)2655.png

图4 集群系统架构图

高可用数据库管理系统集群软件核心服务主要由CM和数据库服务组成。虽然数据库服务软件提供的最终软件是一个,但架构实现上主节点系统与辅节点系统有所不同。为了理解方便,拆分成两个系统进行描述。

主节点系统组成主节点组成模块主要可分为SQL处理模块、SQL本地写操作执行模块、proxy处理模块、辅节点状态控制模块、SMX通信模块,如图5所示。

(发稿)论文:两地三中心自动切换方法_v1.0-李敬林(1)(1) (1)2881.png

图5 主节点系统模块图

●SQL处理模块

判断当前节点是辅节点还是主节点,如果是主节点,对输入的SQL命令进行语法解析。

●proxy处理模块

用于将从辅节点发来的写操作数据包进行解析并传送至SQL本地执行模块执行。

●SQL本写操作地执行模块

执行proxy模块、SQL处理模块发送来的写操作命令,在表中更新(该模块不是本文阐述的重点)。

●辅节点状态控制模块

用于辅节点与主节点沟通在线信息、运行载荷信息、LSN信息、网络状态信息等,并根据信息,决定是否更改当前状态。

●SMX通信模块

为辅节点状态控制模块和proxy处理模块提供网络收发接口,并提供流控处理。

辅节点系统组成高可用数据库管理系统集群辅节点组成模块主要可分为SQL处理模块、辅节点状态控制模块、日志重做模块、proxy处理模块、SMX通信模块,如图6所示。

(发稿)论文:两地三中心自动切换方法_v1.0-李敬林(1)(1) (1)3277.png

图6 辅节点系统模块图

●SQL处理模块

判断当前节点是辅节点还是主节点,判断当前节点是否可以执行更新操作,对输入的SQL命令进行语法解析。

●proxy处理模块

用于将SQL处理模块发来的写操作语句封装成相应格式数据包。

●辅节点状态控制模块

用于与主节点沟通在线信息、运行载荷信息、LSN信息、网络状态信息等。

●日志重做模块

根据主节点发送来的LSN,以及从共享磁盘读取的逻辑日志在内存中重做数据。

●SMX通信模块

为辅节点状态控制模块和proxy处理模块提供网络收发接口,并提供流控处理。

典型应用场景以下以中移信息调度云平台项目,阐述如何使用本文研究的两地三中心高可用架构,满足各调度中心对数据的共享需求。

项目背景随着移动调度行业的不断发展,对调度通用数据要求越来越严格。以元数据管理方法构建一个完整、可持续的数据管理体系逐渐提上日程。调度云平台项目可以规范数据对象的结构化设计方法及内容,实现不同级别调度实体的数据共享,为移动各个省调、地调、县调的横纵向数据共享提供基础。

需求分析中移模型数据中心建设要求为北京数据中心、南基数据中心双活,两个数据中心均可提供业务应用服务(业务双活)。对于数据业务,采用单点写、两点读的方式(数据读写分离)。

解决方案在本应用场景中,通过数据库高可用虚拟集群实现应用结构化数据的同步工作。

(发稿)论文:两地三中心自动切换方法_v1.0-李敬林(1)(1) (1)3856.png

图7 中移模型数据中心解决方案部署图

如图7所示,北京设置为主节点,并在同机房建立NS-DBS高可用辅节点;南基建立数据库辅节点。北京中心内的主节点通过传输逻辑日志到同机房NS-DBS辅节点,同机房NS-DBS辅节点重做逻辑日志达到辅节点和主节点数据同步。主、辅两端使用全双工通信方式异步传输日志,可以很好地规避网络延时带来的问题。

北京到南基的数据同步采用全双工模式传输逻辑日志,在南基端建立RS-DBS辅节点,RS-DBS辅节点端通过重做逻辑日志,达到南基和北京的数据同步,北京、南基间属于超远距离读双活,必须使用高速同步网络。

在数据库使用流程中,应用程序连接到CM,然后分发相关会话(session)到北京本地或者南基分中心,实现读写分离,数据库对应用完全透明。

发生故障时,CM自动监听,并且切换到可用节点,实现本地、异地容灾自动切换。北京主节点发生故障时,如果应用是长连接,当NS-DBS辅节点启动时,会保留这些长连接,并且恢复到发生故障的瞬间。

价值体现架构设计先进:通过上千千米远程异地容灾方案建设,实现本地、异地读写分离双活集群秒级数据同步,故障1分钟内自动切换,双活集群高可用,数据库对应用完全透明,有望成为移动标准架构。

国产数据库成功案例:此项目是国产数据库系统在通信行业核心应用的一个典型案例。开创了国产数据库系统在移动行业核心应用的先河,该项目的成功应用为移动行业用户提供了示范和参考。随着原有数据向国产数据库系统平滑迁移等工作的顺利完成,客户认可了国产数据库系统是可以替代国外成熟数据库的,在稳定性、高性能、高可用方面完全满足了客户核心业务支撑需求。


通信世界网版权及免责声明:
1、凡本网注明“来源:通信世界全媒体”及标有原创的所有作品,版权均属于通信世界网。未经允许禁止转载、摘编及镜像,违者必究。对于经过授权可以转载我方内容的单位,也必须保持转载文章、图像、音视频的完整性,并完整标注作者信息和本站来源。
2、凡本网注明“来源:XXX(非通信世界网)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。
3、如因作品内容、版权和其它问题需要同本网联系的,请在相关作品刊发之日起30日内进行。
发表评论请先登录
...
热点文章
    暂无内容