GaussDB (DWS) 集群管理系列:CM启停功能的原理、流程和关键日志
CM启停集群功能介绍
一 CM_CTL模块
cm_ctl是GaussDB(DWS)提供的用来控制集群服务的工具。启动集群和停止集群是cm_ctl的重要功能,其功能的实现主要通过启停文件实现:
- 集群启停文件 cluster_manual_start
- 实例启停文件 instance_manual_start_X(X是实例编号,例如instance_manual_start_6001)
当启动集群、节点、实例时,会删除启停文件,当停止集群、节点、实例时,会生成启停文件。通过cm_ctl生成的启停文件中有三行信息,每行为一个数字,第一个字段保留,第二、三个字段分别记录了停止模式和停止等级。启停文件位于$GAUSSHOME/bin下。其中,GAUSSHOME为环境变量。
行数 |
字段 |
取值范围 |
说明 |
1 |
保留字段 |
0 |
- |
2 |
停止模式 |
0:smart |
发送SIGTERM信号 |
1: fast |
发送SIGINT信号 |
||
2: immediate |
发送SIGKILL信号 |
||
3 |
停止等级 |
0 |
单实例停止,对应实例级启停文件 |
1 |
单节点停止,对应集群级启停文件 |
||
2 |
集群级停止,对应集群级启停文件 |
- cm_agent组件不区分停止单节点和停止集群,因此启停文件均为集群级;
- 停止等级仅用于内部识别,不影响实际的停止流程;
- 停止cm_server进程与具体停止模式无关,均发送SIGKILL信号;
- 如果启停文件内容为空,则根据名称判断启停文件级别,并执行默认的停止流程,默认的停止模式为smart;
- 目前不支持通过cm_ctl停止单个cm_server进程,可通过手动生成实例级启停文件的方式控制;
- 以smart方式停止节点或集群时,DN环的停止顺序为先停止备DN,再停止主DN;
cm_ctl启停命令:
启动集群 |
cm_ctl start |
启动节点 |
cm_ctl start –n nodeid |
启动实例 |
cm_ctl start –n nodeid –D datapath |
停止集群 |
cm_ctl stop |
停止节点 |
cm_ctl stop –n nodeid |
停止实例 |
cm_ctl stop –n nodeid –D datapath |
以下图中实例6001为例,其启动命令为cm_ctl start –n 1 –D /home/mpp/data/dnP1
具体的启动停止操作将交由cm_agent执行。
二、CM_AGENT模块
cm_agent是GaussDB(DWS)提供的部署在集群各主机上用来启停和监控各数据库实例进程的集群管理组件,拉起和停止本主机上部署的实例进程是cm_agent的一个重要功能。该功能由常驻的启停线程来完成,根据检测到的启动、停止条件去相应地启动、停止集群,下面对cm_agent的启停流程进行介绍:
1. CM Agent启停流程
cm_agent的停止实例进程流程如图1所示:
图1
cm_agent启动实例进程的流程如图2所示:
图2
CM Agent整体的启停流程大致如图1和图2所示,对于不同类型的实例,其启停流程上会有一些差别,下面对不同实例启停的差别进行描述:
(1)CM Server: 只有在检查到启停文件存在时才会杀死cm_server进程,而在磁盘、网卡有故障时并不会杀死cm_server进程。
(2)CN:对于已经被剔除的CN,不会再对其启动。
(3)DN:拉起DN时进行build进程的检查
a. build进程pid>0并且running(正在进行build)
b. build进程pid>0并且not running(即build失败),重新进行build
c. build进程pid<0,重新进行build
d.build进程pid=0, 且DN进程不存在,(build已经完成)拉起DN
2. 关键日志举例
日志类型 |
|
关键字段 |
举例 |
启动日志
|
GTM磁盘或网卡故障 |
disk damged/ nic down |
stop the gtm instance 1001 due to disk damged or nic down |
GTM进程不存在但满足启动条件 |
GTM START system |
gtm(/home/mpp/data/gtm) is not running,now start, try 0 ! !GTM START system(command:…) |
|
CN磁盘故障、网卡故障或CN被剔除 |
disk fault/ nic fault/ dropped |
kill CN because disk fault or nic fault or be dropped
|
|
CN无法重启 |
Do not start cn |
Do not start cn because cn on current node has been manually stopped. |
|
CN进程不存在但满足启动条件 |
CN START system |
coordinate(/home/mpp/data/cn) is not running, now start, try 0 times! CN START system(command:…) |
|
DN启停文件存在 |
manually stopped |
Datanode 6001 is manually stopped. Do not perform start check. |
|
cm_server因端口或磁盘原因无法重启 |
would not be started |
CM Server 1 would not be started due to port conflict. |
|
cm_server启停文件存在无法重启 |
Do not start cm server |
Do not start cm server because cm server on current instance has been manually stopped. |
|
拉起cm_server |
CM_SERVER START system |
CM_SERVER START system(command:…). |
|
停止日志 |
检测到集群启停文件 |
cluster manual start file |
Found the cluster manual start file, set the shutdown flag. |
所有实例正常停止 |
all the instances |
all the instances have stopped! |
|
仍存在实例进程 |
Stopping check |
all the instances |
- 点赞
- 收藏
- 关注作者
评论(0)