#共享集群启停
# 基本原理
共享集群启停包括两种模式:
- 通过ycsctl命令启停某个服务器。
- 通过yasboot命令启停整个集群。
其中,使用ycsctl命令启停服务器要求系统中已正确配置如下环境变量:
- $YASCS_HOME——服务器对应的YCS HOME目录,该目录下包含了管理外部资源的shell脚本。
# 启停状态
在YCS中,online表示已启动运行中状态,offline表示停止状态,在拓扑图中表示如下:
Host ID |Target |State |YasFS |YasDB
----------------------------------------------------------------
1 online online online online
YCS控制管理整个共享集群的运行,启停状态按照其所管理的资源进行展示,包括:
- State字段表示YCS服务的当前状态。
- YasFS字段表示YFS服务的当前状态。
- YasDB字段表示数据库实例的当前状态。
- Target字段表示数据库实例是否纳入YCS一起启动,根据参数AUTO_START而定,当AUTO_START=ALWAYS时,Target为online,当AUTO_START=NEVER时,Target为offline。
# 启停顺序
默认情况下,YCS的启停过程包含了YCSM、YFS和数据库实例的启停,其中,YCSM属于该YCS的专属监控进程,YFS属于YCS的内嵌资源,数据库实例属于YCS的外部资源。这些服务在启停过程中的顺序关系为:
- 启动YCSM之后,由YCSM启动并看护YCS。
- 启动YCS时会自动启动YFS服务,停止YCS也会自动停止YFS服务。
- 数据库实例启动依赖YFS以及YCS的拓扑信息,所以在YCS/YFS服务启动成功后,再启动数据库实例。
- 停止YCS时,将先关闭数据库实例,再停止YCS/YFS服务,最后停止YCSM。
# 服务器启停
通过AUTO_START参数控制数据库实例是否与YCS一起启动。当参数配置为ALWAYS时,数据库实例与YCS一起启动,当参数配置为NEVER时,数据库实例不与YCS一起启动,可后续由外部命令单独启动。
通过不同的命令选项控制数据库实例是否与YCS一起停止。选项为ycs
时,数据库实例与YCS一起停止,选项为instance
时,将单独停止数据库实例。
# 启动YCS
使用如下命令可启动YCS,系统接收到命令后会先启动YCSM,再启动YCS,启动YCS的同时会启动YFS服务线程,然后根据AUTO_START参数值确定是否需要启动数据库实例:
#启动服务器0上的ycs
$ ycsctl start ycs
$ ycsctl status
# AUTO_START=ALWAYS
-----------------------------------------------------------------------------------------
Self Host ID|Cluster Master ID|YasFS Master ID|YasDB Master ID|Active Host Count
-----------------------------------------------------------------------------------------
1 1 1 1 1
-----------------------------------------------------------------------------------------
Host ID |Target |State |YasFS |YasDB
-----------------------------------------------------------------------------------------
1 online online online online
2 offline offline offline offline
# AUTO_START=NEVER
-----------------------------------------------------------------------------------------
Self Host ID|Cluster Master ID|YasFS Master ID|YasDB Master ID|Active Host Count
-----------------------------------------------------------------------------------------
1 1 1 255 1
-----------------------------------------------------------------------------------------
Host ID |Target |State |YasFS |YasDB
-----------------------------------------------------------------------------------------
1 offline online online offline
2 offline offline offline offline
# 启动数据库实例
通过ycsctl start instance可以单独启动服务器上的数据库实例,请注意数据库实例将被直接启动到open状态。
$ ycsctl start instance
$ ycsctl status
-----------------------------------------------------------------------------------------
Self Host ID|Cluster Master ID|YasFS Master ID|YasDB Master ID|Active Host Count
-----------------------------------------------------------------------------------------
1 1 1 1 1
-----------------------------------------------------------------------------------------
Host ID |Target |State |YasFS |YasDB
-----------------------------------------------------------------------------------------
1 online online online online
2 offline offline offline offline
#本地登录数据库查看实例状态
$ yasql sys/sys
SQL> SELECT status FROM V$INSTANCE;
STATUS
-----------------
OPEN
Note:
当服务器上YCS服务未启动时,单独启动数据库实例将会由于无法与YCS建立UDS连接,而抛出Connection refused错误。
建议在集群所有实例都正常启动(处于OPEN状态)后,再开始使用数据库。
# 关闭数据库实例
通过ycsctl stop instance可以单独关闭服务器上的数据库实例,请注意此时所执行关闭操作为shutdown immediate。
$ ycsctl stop instance
$ ycsctl status
-----------------------------------------------------------------------------------------
Self Host ID|Cluster Master ID|YasFS Master ID|YasDB Master ID|Active Host Count
-----------------------------------------------------------------------------------------
1 1 1 255 1
-----------------------------------------------------------------------------------------
Host ID |Target |State |YasFS |YasDB
-----------------------------------------------------------------------------------------
1 offline online online offline
2 offline offline offline offline
# 强制停止数据库实例
强制停止是指向数据库实例发送立即终止进程信号,无论其处在何种状态都会立即退出进程。
通过参数WAIT_STOP_FIN_TIME控制执行停止脚本之后多长时间还未停止就使用强制停止。
0表示一直等待,不使用强制停止;其它值表示等待该数值的秒数后,数据库还未停止将执行强制停止。
# 停止YCS
使用如下命令停止YCS服务,同时停止YFS服务,在此之前使用shutdown immediate关闭运行中的数据库实例,最后停止YCSM监控进程:
$ ycsctl stop ycs
Note:
1.YCS在存在YashanDB资源的场景下,需要等待数据库实例正常退出后,才会退出。
2.停止YCS失败场景:数据库实例关闭较慢。
出现这类问题,可能是因为在数据库中存在大量并发业务的过程中去停止服务器,数据库需要处理业务的正常停止而导致shutdown缓慢。
# 集群启停
使用yasboot工具可以实现整个共享集群的启停,其过程等同于对集群中的每个服务器执行上述的“启动YCS”和“停止YCS”操作。
需注意的是,集群启停不可进行单独数据库实例启动的指定(即调整AUTO_START参数),否则将导致启动过程出错。
#停止共享集群
$ yasboot cluster stop -c yashandb
#启动共享集群
$ yasboot cluster start -c yashandb
#重启共享集群
$ yasboot cluster restart -c yashandb