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