cm_ctl工具介绍
cm_ctl是openGauss提供的用来控制数据库实例服务的工具。该工具主要供OM调用,及数据库实例服务自恢复时使用。cm_ctl的主要功能有:
- 启动数据库实例服务、AZ的所有实例、单个主机上的所有实例或单独启动某个实例进程。
- 停止数据库实例服务、AZ的所有实例、单个主机上的所有实例或单独停止某个节点实例进程。
- 重启逻辑数据库实例服务。
- 查询数据库实例状态或者单个主机的状态。
- 切换主备实例或重置实例状态。
- 重建备机。
- 查看数据库实例配置文件。
- 设置日志级别,一主多备数据库实例部署下cm_server的仲裁模式、AZ之间的切换模式。
- 获取日志级别,一主多备数据库实例部署下cm_server的仲裁模式、AZ之间的切换模式。
- 检测实例进程状态。
与cm_ctl工具相关的文件:
cluster_manual_start
该文件是数据库实例启停标志文件。文件位于_$GAUSSHOME/bin_下。其中,GAUSSHOME为环境变量。启动数据库实例时,cm_ctl会删除该文件;停止数据库实例时,cm_ctl会生成该文件,并向文件写入停止模式。
instance_manual_start_X(X是实例编号)
该文件是单个实例启停标志文件。文件位于_$GAUSSHOME/bin_下。其中,GAUSSHOME为环境变量。启动实例时,cm_ctl会删除该文件;停止实例时,cm_ctl会生成该文件,并向文件写入停止模式。
cm_ctl的相关约束:
- 在集群模式下,使用cm_ctl集群工具来切换数据库角色,而不是gs_ctl数据库工具。
命令说明
cm_ctl参数可分为如下几类:
- option参数,详细请参见 表 option参数。
- 公共参数,详细请参见 表 公共参数。
- start模式的参数,详细参见 表 start参数。
- switchover模式的参数,详细请参见 表 switchover参数。
- build模式的参数,详细请参见 表 build参数。
- check模式的参数,详细请参见 表 check参数。
- stop模式的参数,详细请参见 表 stop参数。
- query模式的参数,详细请参见 表 query参数。
- view模式的参数,详细请参见 表 view参数。
- set模式的参数,详细请参见 表 set参数 表 set cm参数。
- get模式的参数,详情请参见 表 get参数。
- setrunmode模式的参数,详细请参见 表 setrunmode参数。
- changerole模式的参数,详细请参见 表 changerole参数。
- changemember功能的参数,详细请参见 表 changemember参数。
- reload模式的参数,详细请参见 表 reload 参数。
- list模式的参数,详细请参见 表 list参数。
- encrypt模式的参数,详细请参见 表 encrypt参数。
- ddb模式的参数,详细请参见 表 ddb参数。
- switch模式的参数,详细请参见 表 switch参数。
- res模式的参数,详细请参见 表 res参数。
使用方法:
cm_ctl start [-z AVAILABILITY_ZONE [--cm_arbitration_mode=ARBITRATION_MODE]] | [-n NODEID [-D DATADIR]] [-t SECS]
cm_ctl switchover [-z AVAILABILITY_ZONE] | [-n NODEID -D DATADIR [-f]] | [-a] | [-A] [-t SECS]
cm_ctl finishredo
cm_ctl build [-c] [-n NODEID] [-D DATADIR [-t SECS] [-f] [-b full] [-j NUM]]
cm_ctl check -B BINNAME -T DATAPATH
cm_ctl stop [[-z AVAILABILITY_ZONE] | [-n NODEID [-D DATADIR]]] [-t SECS] [-m SHUTDOWN-MODE]
cm_ctl query [-z ALL] [-l FILENAME] [-v [-C [-w] [-s] [-S] [-d] [-i] [-F] [-x] [-p]] | [-r]] [-t SECS] [--minorityAz=AZ_NAME]
cm_ctl view [-v | -N | -n NODEID] [-l FILENAME]
cm_ctl set [--log_level=LOG_LEVEL] [--cm_arbitration_mode=ARBITRATION_MODE] [--cm_switchover_az_mode=SWITCHOVER_AZ_MODE] [--cmsPromoteMode=CMS_PROMOTE_MODE -I INSTANCEID]
cm_ctl set --param --agent | --server [-n [NODEID]] -k [PARAMETER]="[value]"
cm_ctl get [--log_level] [--cm_arbitration_mode] [--cm_switchover_az_mode]
cm_ctl setrunmode -n NODEID -D DATADIR [[--xmode=normal] | [--xmode=minority --votenum=NUM]]
cm_ctl changerole [--role=PASSIVE | --role=FOLLOWER] -n NODEID -D DATADIR [-t SECS]
cm_ctl changemember [--role=PASSIVE | --role=FOLLOWER] [--group=xx] [--priority=xx] -n NODEID -D DATADIR [-t SECS]
cm_ctl reload --param [--agent | --server]
cm_ctl list --param --agent | --server
cm_ctl encrypt [-M MODE] -D DATADIR
cm_ctl ddb DCC_CMD
cm_ctl switch [--ddb_type=[DDB]] [--commit] [--rollback]
表 1 option参数
设置cm参数,默认set所有节点上的参数,也可以通过-n参数指定set某个节点,具体参数可以参考CM配置参数介绍 | |
DCC或者share disk模式下,执行对DCC组件或者share disk的配置数据存取命令。CM依赖DCC组件或者share disk对配置数据分布式存取,实现集群配置管理高可用能力。 | |
表 2 公共参数
指定实例数据目录。仅用于对数据库节点进行操作的命令,如start、stop、switchover、build、setrunmode、changerole、changemember、encrypt。 | |
说明:
此处列出的公共参数并不一定适用于所有命令,而是多个命令支持,为避免冗余信息,所以统一在此说明,详细的使用方法见以上使用方法,也可以使用cm_ctl --help进行查询。
表 3 switchover参数
指定进行-f类型switchover。不等待客户端中断连接,所有活跃事务都被回滚并且客户端都被强制断开,然后服务器将被切换,且不做checkpoint。使用方式:cm_ctl switchover -n NODEID -D DATADIR -f。 | |
表 4 build参数
指定进行全量build。不指定情况下,对于一主多备数据库实例部署模式进行auto build。auto build指:先调用增量build,失败之后调用全量build。 | |
表 5 check参数
表 6 stop参数
| |
表 7 query参数
表 8 set参数
表 9 set cm参数
表 10 get参数
表 11 view参数
表 12 setrunmode参数
| ||
表 13 changerole参数
|
表 14 changemember参数
| ||
表 15 start参数
表 16 reload 参数
表 17 list参数
表 18 encrypt参数
表 19 switch参数
表 20 ddb参数
表 21 res参数
注意:
- 在部署有CM工具的情况下,对于某些既可以直接调用内核工具,也可以调用CM工具进行执行的命令,如:switchover、build等,请优先使用CM工具,因为如果直接调用内核工具,有可能CM感知不到用户正在手动执行指令,进而误判集群状态异常。
- CM有进程保活功能,并且会实时监控集群状态并进行自动故障处理,如果运维人员需要手动处理集群状态或进行问题调试定位等,最好执行cm_ctl pause命令将CM服务暂停掉,否则可能会干扰运维操作,待运维操作完成后可以执行cm_ctl resume命令恢复CM服务。
命令参考
启动实例:
cm_ctl start [-z AVAILABILITY_ZONE [--cm_arbitration_mode=ARBITRATION_MODE]] | [-n NODEID [-D DATADIR]] [-t SECS]
数据库主备倒换:
cm_ctl switchover [-z AVAILABILITY_ZONE] | [-n NODEID -D DATADIR [-f]] | [-a] | [-A] [-t SECS]
所有备机停止回放,每个分片中选择一个强制升主:
cm_ctl finishredo
重建备节点:
cm_ctl build -n NODEID -D DATADIR [-t SECS] [-f] [-b full]
检测实例进程运行状态:
cm_ctl check -B BINNAME -T DATAPATH
停止实例:
cm_ctl stop [[-z AVAILABILITY_ZONE] | [-n NODEID [-D DATADIR [-R]]]] [-t SECS] [-m SHUTDOWN-MODE]
查询集群状态:
cm_ctl query [-z ALL] [-l FILENAME] [-v [-C [-s] [-S] [-d] [-i] [-F] [-x] [-p]] | [-r]] [-t SECS] [--minorityAz=AZ_NAME]
查看集群配置文件:
cm_ctl view [-v | -N | -n NODEID] [-l FILENAME]
设置参数:
cm_ctl set [--log_level=LOG_LEVEL] [--cm_arbitration_mode=ARBITRATION_MODE] [--cm_switchover_az_mode=SWITCHOVER_AZ_MODE]
设置CM参数:
cm_ctl set --param --agent | --server [-n NODEID] -k PARAMETER="'value'"
获取参数:
cm_ctl get [--log_level] [--cm_arbitration_mode] [--cm_switchover_az_mode]
设置DCF投票数:
cm_ctl setrunmode -n NODEID -D DATADIR [[--xmode=normal] | [--xmode=minority --votenum=NUM]]
改变dcf角色信息:
cm_ctl changerole [--role=PASSIVE | --role=FOLLOWER] -n NODEID -D DATADIR [-t SECS]
改变dcf节点属性:
cm_ctl changemember [--role=PASSIVE | --role=FOLLOWER] [--group=xx] [--priority=xx] -n NODEID -D DATADIR [-t SECS]
动态加载CM参数:
cm_ctl reload --param [--agent | --server]
列出所有CM参数:
cm_ctl list --param [--agent | --server]
加密:
cm_ctl encrypt [-M MODE] -D DATADIR
执行DDB命令行:
cm_ctl ddb DDB_CMD 设置:cm_ctl ddb --put [key] [value] 删除:cm_ctl ddb --delete [key] 查看DDB命令帮助信息:cm_ctl ddb --help
执行switch ddb命令:
cm_ctl switch [--ddb_type=[DDB]] [--commit] [--rollback]
执行res命令:
新增资源:cm_ctl res --add --res_name=[name] --res_attr=[res_info] 删除资源:cm_ctl res --del --res_name=[name] 修改资源:cm_ctl res --edit --res_name=[name] --res_attr=[res_info] 新增资源实例:cm_ctl res --edit --res_name=[name] --add_inst=[inst_info] 删除资源实例:cm_ctl res --edit --res_name=[name] --del_inst=[inst_info] 检查资源:cm_ctl res --check