首页 > 其他分享 >【我和openGauss的故事】openGauss特性:CM支持两节点部署特性

【我和openGauss的故事】openGauss特性:CM支持两节点部署特性

时间:2023-07-20 11:37:15浏览次数:46  
标签:node CM cm 特性 192.168 ctl openGauss k8s

【我和openGauss的故事】openGauss特性:CM支持两节点部署特性

杨凯同学 2023-07-14 18:50 发表于 openGauss公众号

1.什么是CM

CM(Cluster Manager)是一款数据库管理模块。支持自定义资源监控,提供了数据库主备的状态监控、网络通信故障监控、文件系统故障监控、故障自动主备切换等能力。提供了丰富的数据库管理能力,如节点、实例级的启停,数据库实例状态查询、主备切换、日志管理等。提供了通过REST接口远程查询和接收集群状态的能力。

2.CM 特点

从5.0开始CM支持2节点部署
CM集群和数据库集群都能实现高可用,RPO=0
(1)CM集群高可用:
基于网关IP实现:备实例基于与网关IP的连通性判定自身是否升主,主实例基于与其与网关IP的连通性判定自身是否降备。目前支持自动故障切换和手工故障切换。
(2)数据库集群高可用
备实例是否failover的判定除去基于流复制状态,额外增加对数据库集群VIP(选配参数)的连通性的探测,以此降低主实例故障的误判概率,进而降低脑裂故障概率。为了确保脑裂故障时数据库集群的数据一致性,提供可配参数支持自动故障恢复和手工故障恢复。手工故障恢复需要按照特定文档及工具执行差异数据合并。

3.CM两节点部署的XML

root@k8s-node1 cm_server]# vi /home/omm/cluster_config.xml 

<?xml version="1.0" encoding="utf-8"?>
<ROOT>
 <CLUSTER>
	<PARAM name="clusterName" value="Cluster_template" />
	<PARAM name="nodeNames" value="k8s-master,k8s-node1"/>
	<PARAM name="gaussdbAppPath" value="/dbms/huawei/opengauss/install/app" />
	<PARAM name="gaussdbLogPath" value="/var/log/omm" />
	<PARAM name="tmpMppdbPath" value="/dbms/huawei/opengauss/tmp"/>
	<PARAM name="gaussdbToolPath" value="/dbms/huawei/opengauss/install/om" />
	<PARAM name="corePath" value="/dbms/huawei/opengauss/corefile"/>
	<PARAM name="backIp1s" value="192.168.10.2,192.168.10.3"/>
</CLUSTER>	
 <DEVICELIST>
 <DEVICE sn="node1_hostname">
  	<PARAM name="name" value="k8s-master"/>
  	<PARAM name="azName" value="AZ1"/>
  	<PARAM name="azPriority" value="1"/>
  	<PARAM name="backIp1" value="192.168.10.2"/>
  	<PARAM name="sshIp1" value="192.168.10.2"/>
<!-- cm主 -->
       <PARAM name="cmsNum" value="1"/>
       <PARAM name="cmDir" value="/dbms/huawei/opengauss/install/cm"/>
       <PARAM name="cmServerPortBase" value="15300"/>
       <PARAM name="cmServerListenIp1" value="192.168.10.2,192.168.10.3"/>
       <PARAM name="cmServerHaIp1" value="192.168.10.2,192.168.10.3"/>
       <!-- cmServerlevel目前只支持1 -->
       <PARAM name="cmServerlevel" value="1"/>
       <!-- cms主及所有备的hostname -->
       <PARAM name="cmServerRelation" value="k8s-master,k8s-node1"/>
  <!-- dn -->
  	<PARAM name="dataNum" value="1"/>
  	<PARAM name="dataPortBase" value="15400"/>
  	<PARAM name="dataNode1" value="/dbms/huawei/opengauss/install/data/dn,k8s-node1,/dbms/huawei/opengauss/install/data/dn"/>
  	<PARAM name="dataNode1_syncNum" value="0"/>
</DEVICE>
 <DEVICE sn="node2_hostname">
  	<PARAM name="name" value="k8s-node1"/>
  	<PARAM name="azName" value="AZ1"/>
  	<PARAM name="azPriority" value="1"/>
  	<PARAM name="backIp1" value="192.168.10.3"/>
  	<PARAM name="sshIp1" value="192.168.10.3"/>
<!-- cm -->
  	<PARAM name="cmDir" value="/dbms/huawei/opengauss/install/cm"/>
  	<PARAM name="cmServerPortStandby" value="15300"/>
</DEVICE>
</DEVICELIST>
</ROOT>

4.cm日常运维命令

--cm命令查看集群状态
[omm@k8s-master ~]$ cm_ctl query -Cvdi
[  CMServer State   ]

node          node_ip         instance                                         state
--------------------------------------------------------------------------------------
1  k8s-master 192.168.10.2    1    /dbms/huawei/opengauss/install/cm/cm_server Primary
2  k8s-node1  192.168.10.3    2    /dbms/huawei/opengauss/install/cm/cm_server Standby

[   Cluster State   ]

cluster_state   : Normal
redistributing  : No
balanced        : No
current_az      : AZ_ALL

[  Datanode State   ]

node          node_ip         instance                                    state            | node          node_ip         instance                                    state
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1  k8s-master 192.168.10.2    6001 /dbms/huawei/opengauss/install/data/dn P Standby Normal | 2  k8s-node1  192.168.10.3    6002 /dbms/huawei/opengauss/install/data/dn S Primary Normal


cm切换primary库命令
[omm@k8s-master ~]$ cm_ctl switchover -n 1 -D /dbms/huawei/opengauss/install/data/dn
....
cm_ctl: switchover successfully.
[omm@k8s-master ~]$ cm_ctl query -Cvdi
[  CMServer State   ]

node          node_ip         instance                                         state
--------------------------------------------------------------------------------------
1  k8s-master 192.168.10.2    1    /dbms/huawei/opengauss/install/cm/cm_server Primary
2  k8s-node1  192.168.10.3    2    /dbms/huawei/opengauss/install/cm/cm_server Standby

[   Cluster State   ]

cluster_state   : Normal
redistributing  : No
balanced        : Yes
current_az      : AZ_ALL

[  Datanode State   ]

node          node_ip         instance                                    state            | node          node_ip         instance                                    state
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1  k8s-master 192.168.10.2    6001 /dbms/huawei/opengauss/install/data/dn P Primary Normal | 2  k8s-node1  192.168.10.3    6002 /dbms/huawei/opengauss/install/data/dn S Standby Normal

--停止集群
[omm@k8s-master ~]$ cm_ctl stop
cm_ctl: stop cluster. 
cm_ctl: stop nodeid: 1
cm_ctl: stop nodeid: 2
.........
cm_ctl: stop cluster successfully.
[omm@k8s-master ~]$ cm_ctl query -Cvdi
[  CMServer State   ]

node          node_ip         instance                                         	state
--------------------------------------------------------------------------------------
1  k8s-master 192.168.10.2    1    /dbms/huawei/opengauss/install/cm/cm_server Down
2  k8s-node1  192.168.10.3    2    /dbms/huawei/opengauss/install/cm/cm_server Down

--启动集群
[omm@k8s-master ~]$ cm_ctl start
cm_ctl: checking cluster status.
cm_ctl: checking cluster status.
cm_ctl: checking finished in 366 ms.
cm_ctl: start cluster. 
cm_ctl: start nodeid: 1
cm_ctl: start nodeid: 2
............
cm_ctl: start cluster successfully.
[omm@k8s-master ~]$ cm_ctl query -Cvdi
[  CMServer State   ]

node          node_ip         instance                                         state
--------------------------------------------------------------------------------------
1  k8s-master 192.168.10.2    1    /dbms/huawei/opengauss/install/cm/cm_server Primary
2  k8s-node1  192.168.10.3    2    /dbms/huawei/opengauss/install/cm/cm_server Standby

[   Cluster State   ]

cluster_state   : Normal
redistributing  : No
balanced        : Yes
current_az      : AZ_ALL

[  Datanode State   ]

node          node_ip         instance                                    state            | node          node_ip         instance                                    state
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1  k8s-master 192.168.10.2    6001 /dbms/huawei/opengauss/install/data/dn P Primary Normal | 2  k8s-node1  192.168.10.3    6002 /dbms/huawei/opengauss/install/data/dn S Standby Normal

5.CM两节点特性-配置前提条件

--cm集群故障自动切换配置前提条件
third_party_gateway_ip = 192.168.10.1    
cms_enable_failover_on2nodes = true         
cms_network_isolation_timeout = 20  

--cm集群故障手工切换配置前提条件
third_party_gateway_ip = 192.168.10.1    
cms_enable_failover_on2nodes = false     
cms_network_isolation_timeout = 20  

--数据库集群故障自动切换配置前提条件
third_party_gateway_ip = 192.168.10.1    
cms_enable_failover_on2nodes = true         
cms_enable_db_crash_recovery = on 

--数据库集群故障手工切换配置前提条件
third_party_gateway_ip = 192.168.10.1    
cms_enable_failover_on2nodes = true      
cms_enable_db_crash_recovery = off

6.CM 在openGauss5.0 新增的特性

高可用:CM支持VIP管理
	通过VIP可以直接找到主机,连接重连更准更快(毫秒级别);
	支持主机故障,CM选出新主时,VIP漂移到新的主上;
	当出现双主时,依然可以通过VIP访问到唯一一个主机,降低了双主丢数据的风险。

高可用:CM支持两节点部署
	通过引入第三方网关IP,有效解决CM集群两节点部署模式下自仲裁问题,支持CMS和DN均为2节点的部署;
	同时支持动态配置CM集群故障切换策略和数据库集群脑裂故障恢复策略,从而能够尽可能确保集群数据的完整性和一致性。


高可用:CM磁盘只读检测能力增强

	只读状态从数据库获取,保证准确性;
	只读仲裁只仲裁当前超过阈值的实例,其他节点不受影响;
	主机只读保护后自动主备切换,选可用备机升主保证集群能正常提供工作。

高可用:CM易用性提升

	支持一键式关闭CM集群服务;
	支持和内核的安装部署解耦;
	支持按事件调用用户自定义脚本;
	支持CM组件单独升级,增强数据库集群可靠性;
	CM根据配置信息,支持用户自定义组件的监控和管理

复制

标签:node,CM,cm,特性,192.168,ctl,openGauss,k8s
From: https://blog.51cto.com/u_16191492/6783685

相关文章

  • 【我和openGauss的故事】浅尝 openGauss v5.0.0 的 MySQL 语法兼容性
    【我和openGauss的故事】浅尝openGaussv5.0.0的MySQL语法兼容性严少安2023-07-1418:50发表于openGauss公众号在openGauss中,以下简称og5,提供了一个名为Dolphin的插件,并以此来提供MySQL的兼容性。本文将以openGaussv5.0.0版本为基础,对照PostgreSQLv15.2和Mar......
  • IfcMetric
    IfcMetric实体定义IfcMetric用于捕获可应用于目标的定量结果度量。 IfcMetric是IfcConstraint的一个子类型,可以通过IfcControlExtension架构中的IfcRelAssociatesConstraint关系与IfcRoot的任何子类型相关联,也可以通过IccResourceConstraintRelationship与IfcProperty相关联......
  • 【学习记录】2023年暑期ACM训练
    学习记录7月16日集训正式开始前一天,搬东西到了机房,在我的老古董笔记本上配置好了环境。这半个月来基本没有写代码,目前非常生疏。晚上在VJudge上拉了个热身赛,做了些简单的签到题,稍微找回了些手感。有一道计算几何的题目有思路,但是卡在了代码实现上,毕竟还没有系统学过。7月17日&......
  • CMU15445 B+Tree
    首先,上一个taskbufferpool和这里的b+tree具体实现肯定不一样,关于具体的存储的层次也不一样;在bufferpool里,数据以page为单位,在b+tree中,每个索引结点而言,存储了很多的key-value,每个value对应一个子节点(子节点是用page_id来标识),需要从key找对应的page_id,这里p......
  • 通过CM集群管理的openGauss数据库选主策略
    通过CM集群管理的openGauss数据库选主策略前提条件:集群内参与选主的备实例数量超过集群实例总数的一半细分策略:(1)cma会尝试拉起数据库集群原始主实例,6s内成功拉起则无需新一轮仲裁(2)local_term最大的(3)local_last_xlog_location最大的(4)静态主local_static_role(5)与......
  • ArcMap+ArcPy 图层样式批量设置
    originLayerName=""mxd=arcpy.mapping.MapDocument(r"CURRENT")originLayer=arcpy.mapping.ListLayers(mxd,originLayerName)[0]layers=arcpy.mapping.ListLayers(mxd)forlyrinlayers:iflyr.name==originLayer.name:co......
  • .net 6 winform启动器:调用CMD命令行执行dotnet命令启动.net core程序并将控制台输出日
    背景历史遗留问题,生产车间运行的一个.netcoresignalr程序使用命令行程序启动,经常由于生产人员误操作将光标停留在控制台上导致程序假死,丢失部分测试数据,车间随便找了一台win10系统部署的程序,源代码遗失,电脑也是阉割版,原开发者已经离职多年无人敢动,于是想了一个歪门邪道发方......
  • SAS - PROC FCMP
    PROCFCMP概述PROCFCMP可用于自定义函数(funcion)和子程序(subroutines)。自定义函数和子程序的名称的最大长度为32,长度超过32的名称虽然可以定义,但无法调用。PROCFCMP定义函数和子程序的时遵循DATA步中的语法,定义后的函数和子程序被存储在SAS数据集中,可以在其他SAS语......
  • Proj. CMI Paper Reading: Conversational Automated Program Repair
    Abstract背景:之前APR与大模型的结合仅仅使用了一些特殊构建的input/prompt本文:conversationalAPR方法:使用long-termcontextwindow来记录之前的validationfeedback实验:在10个LLMs上进行对比展示改进......
  • Proj. CMI Paper Reading: R-U-SURE? Uncertainty-Aware Code Suggestions By Maximiz
    AbstractTask:buildinguncertainty-awaresuggestionsbasedonadecision-theoreticmodelofgoal-conditionalutility,推理LLM用户的未观测到的意图方法:adecision-theoreticmodelofgoal-conditionedutility,使用生成式模型生成的randomsamples来做proxy,minimumBa......