首页 > 其他分享 >GaussDB集群管理层(CM)关键技术方案

GaussDB集群管理层(CM)关键技术方案

时间:2024-10-30 11:57:45浏览次数:1  
标签:DN 关键技术 CM GaussDB Agent Server 故障 仲裁

GaussDB Kernel V5 集群管理层关键模块如下。

在这里插入图片描述

图4 集群管理层组件设计图

CM 组件提供了四种服务 CM Agent, CM Server, OM Monitor, cm_ctl,与各类实例服务组件(CN, DN, GTM 等)一起构成了整个数据库集群系统。cm_ctl通过命令行执行集群的启动、停止、状态查询、主备倒换、备机重建等功能除启动和停止外,主要通过与 CM Server 的消息传递执行命令可在任意节点执行并获取到相同的结果OM Monitor由系统定时任务拉起负责 CM Agent 的运行状态监控CM Agent由 OM Monitor 拉起负责拉起和停止所在节点的 CN, DN, GTM, CM Server(如果存在);监控实例状态并上报至 CM Server;执行 CM Server 下发的命令等对应 cm_agent 二进制文件,所有节点常驻服务CM Server由 CM Agent 拉起,是整个集群管理组件的大脑负责接收 cm_ctl 发送的命令并下发至 CM Agent;接收并处理 CM Agent 上报的实例状态,下发仲裁指令保证各类故障和异常场景下集群的可用性对应 cm_server 二进制文件,常驻服务CM与各类组件的主备数据同步、倒换、重建等机制高度融合,提供告警、重启、倒换、隔离等手段,赋予数据库实例故障恢复及自愈的高可用(HA)能力,保证数据的可靠性和完整性,最终实现集群对外的业务连续性。

集群管理仲裁关键技术单节点故障在生产过程中,不可避免。

CM 组件可根据探测到的状态进行仲裁,从而尽可能恢复集群可用性的过程。以某个主 DN 故障为例,一次典型的仲裁流程包括:① CM Agent 1探测DN主实例并发现故障② CM Agent 1持续上报实例故障信息至CM Server③ CM Server执行仲裁流程,选择DN备机升主④ CM Server下发升主命令至CM Agent 2⑤ CM Agent 2对实例执行升主操作
在这里插入图片描述

图5 集群管理仲裁过程

常见的故障类型包含磁盘故障、网络故障、下电故障、操作系统故障、其它故障(CPU故障)等。CM在选举过程中,遵从DN多数派。即,对于某一个DN分片来说,故障后的选主,需要得到大多数DN的投票,候选DN副本才可以被选中升主。

仲裁规则主要依据两个原则:

1) 任期(Term)大,且日志长的DN副本优先被选主

2) 同等条件下,静态主优先。CM辅助不同组件故障情况下恢复过程

  1. CN 故障 (集中式部署时,无CM节点)DDL 语句无法执行,DML 语句不受影响通过将故障 CN 剔除,可保障 DDL 语句不受影响仅支持集群内 CN 个数大于 3,且 1 个 CN 发生故障时剔除

  2. DN 故障单点故障可自动恢复主 DN 故障时,仲裁备 DN 升主继续提供服务备 DN 故障时,主 DN 将日志和数据同步至从备,业务不受影响

  3. 主 GTM 故障备 GTM 升主后继续提供服务

  4. 主 CM Server 故障备 CM Server 接受多数派 CM Agent链接,升主后继续提供服务异常检测从业界经验来看,数据库实例可能处于故障、僵死、亚健康等状态。这些状态的出现概率逐级降低,但检测难度逐级增高。

尤其是如何区分亚健康状态和系统繁忙状态,具有较大的挑战性。CM 组件包含异常检测流程,可用于识别和处理网络不稳定、磁盘 IO 挂死、进程/线程僵死、进程频繁退出、实例状态时好时坏等场景,提高集群的稳定性和可用性。

以 DN 短链接检测为例,CM Agent 按照固定时间间隔与 DN 实例新建链接。如果与某个主 DN 链接失败或通过新链接无法执行 SQL 语句,则认为该 DN 发生 1 次 Hang 异常。如果多次出现异常,则会触发 Hang 检测机制,将该 DN 实例杀死并执行主备切换。

目前常见的异常检测项有:短链接建立通过短链接执行 SQL 语句IO 挂死内存占用异常基于Paxos协议复制实现DN副本自仲裁GaussDB Kernel V5 采用基于Paxos协议主备副本复制协议,实现DN副本的自仲裁功能。

关键技术方案如下图所示,

其中DCF为GaussDB Kernel V5 基于Paxos协议的一致性复制组件。需包含日志复制、自仲裁选主等功能。
在这里插入图片描述

图6 DN自仲裁设计关键技术

方案要点:1)DN 副本自仲裁,缩短仲裁链路,减小RTO 2)采用Paxos一致性协议,保证DN副本间的一致性,避免备机由于日志分叉产生增量重建。未来技术方案演进:1) DCF组件日志与数据库内核日志合一,减少对IO的占用。2) 采用Parallel Paxos协议或者多主的Paxos协议提升日志复制的吞吐量 3)通过RDMA/UB 网络优化主、备节点日志传输,提升日志复制性能。

标签:DN,关键技术,CM,GaussDB,Agent,Server,故障,仲裁
From: https://www.cnblogs.com/xiaoxu0211/p/18515591

相关文章

  • GaussDB可维护性--支持SQL PATCH
    支持SQLPATCH可获得性本特性自503.1.0版本开始引入。特性简介SQLPATCH能够在避免直接修改用户业务语句的前提下对查询执行的方式做一定调整。在发现查询语句的执行计划、执行方式未达预期的场景下,可以通过创建查询补丁的方式,使用Hint对查询计划进行调优或对特定的语句......
  • PbootCMS上传文件大小限制
    修改 php.ini 文件打开 php.ini 文件。修改以下参数:file_uploads=onupload_tmp_dir=/tmpupload_max_filesize=32Mpost_max_size=32Mmax_execution_time=600max_input_time=600memory_limit=32M重启PHP服务使用命令重启PHP服务:se......
  • pbootcms网站搬家到新服务器后 前台显示数据不完全
    在将PBootCMS网站从一个服务器迁移到另一个服务器后,如果前台显示的数据不完全,而后台显示正常,通常需要检查以下几个方面。根据您的描述,最终发现问题出在服务器时间上。以下是详细的排查和解决步骤:1.检查服务器时间登录新服务器:使用SSH或其他方式登录到新服务器。检......
  • 易优cms系统报错SQLSTATE[42S22]: Column not found: 1054 Unknown column 'groupid'
    .检查数据库表结构确认表结构:首先确认相关表中是否存在 groupid 列。  DESCRIBE表名;将 表名 替换为实际的表名,例如 eyou_member 或 eyou_admin。2.修改查询语句检查查询语句:如果 groupid 列确实不存在,需要修改相关的查询语句。找到引发错误的查询......
  • 易优cms系统报错unserialize(): Error at offset 0 of 1571 bytes_Eyoucms系统报错问
    解决方案清除缓存通过FTP访问服务器。导航至 /data/runtime 目录。删除该目录下的所有文件和文件夹。升级系统登录后台。检查是否有可用的更新。升级到最新版本,以确保已知的问题已被修复。检查代码如果问题仍然存在,可以检查 \corelibrary\think\cache\dri......
  • Error infos: DedeCms错误警告:连接数据库失败,可能数据库密码不对或数据库服务器出错!
    使用FTP工具登录到网站根目录。导航至/data/common.inc.php文件。下载该文件到本地,使用代码编辑工具(如EditPlus或Dreamweaver)打开,不要使用记事本编辑。修改以下配置项,将其更改为您的实际数据库信息:$cfg_dbhost='localhost';//数据库服务器地址$cfg_dbname='your_......
  • Dedecms备份的数据文件位置及备份数据库的方法
    备份数据文件的位置Dedecms备份的数据库文件通常保存在以下目录中:  /dede/backup_data/用织梦DEDECMS后台备份数据库的方法第一种方法登录原站后台登录到您的Dedecms后台管理界面。备份数据库进入“系统”->“数据库备份/还原”。选择需要备份的表,建议......
  • PbootCMS 模板提示未检测到您服务器环境的sqlite3数据库扩展
    错误信息:未检测到您服务器环境的sqlite3数据库扩展,请检查php.ini中是否已经开启该扩展!另外,检测到您服务器支持pdo_sqlite扩展,您也可以修改数据库配置连接驱动为pdo_sqlite试试!解决方法:1.**第一种方法**:把数据库配置连接驱动改为pdo_sqlite-打开数据库配置文件`/apps/co......
  • dedeCMS 保存目录数据时失败解决方法
    修改 catalog_add.php 文件:打开 /dede/catalog_add.php 文件。找到大约第236行的 ShowMsg("保存目录数据时失败,请检查你的输入资料是否存在问题!","-1");。在其上方加入以下代码:echo$in_query;die;保存文件。测试并获取错误信息:添加新的栏目,查看页......
  • 帝国CMS中打印模板制作教程详解
    调用打印页面链接:模板中添加打印页面链接:[!--news.url--]e/DoPrint/?classid=[!--classid--]&id=[!--id--]指定使用打印模板的链接:[!--news.url--]e/DoPrint/?classid=[!--classid--]&id=[!--id--]&tempid=打印模板ID管理打印模板:登录后台,选择“模板......