故障和重大变化处理过程
has服务启动失败
在主节点启动has服务后,list命令并未显示该节点信息。使用systemctl status has 查看has服务状态,若服务启动失败,可通过如下命令查看has日志并进行排查:
journalctl -u has -n 100 -f
yml配置文件错误
1、问题描述:
如下图所示,提示yml文件缺少必须的参数
解决方法:
在yml文件中添加相应参数。
2、问题描述:
如下图所示,提示loop_wait参数配置过小。
解决方法:
修改yml文件中loop_wait参数,该参数至少为5。
3、问题描述:
如下图所示,提示ttl参数配置过小。
解决方法:
修改ttl参数为loop_wait的至少三倍以上
对应文件或脚本缺失
1、问题描述:
bin目录下脚本或etc目录下文件缺失导致服务无法启动。
解决方法:
检查相应目录下文件是否存在。如不存在则重新解压补充。
运行过程故障
正常情况下,has服务启动后,使用\${has_home}/bin/sd_hasctl 工具 list命令查看如下:
如运行过程中备库发生故障,主库不受影响;运行过程中主库发生故障,备库将自动挂载存储设备并启动数据库对外提供服务。原主库问题解决后重新启动将以备库身份加入。以下描述has运行过程中可能需要人工介入的故障问题。
switchover失败
1、问题描述:
执行switchover,提示如下图的错误信息
原因分析:
主节点收到switchover请求后,会先检查挂载点目录除了本节点数据库实例进程使用外,是否还有其他进程在使用,如果有,则提示switchover失败,提示信息如上图所示。
解决方法:
1、查看数据库进程,获取进程号<vastbase pid>
ps -ef|grep vastbase
2、通过lsof检查正在使用的进程,输出如下图所示
lsof <mount point>|grep -v <vastbase pid>
- 第一列COMMAND表示占用挂载点目录的命令或程序名称
- 第二列PID表示表示占用挂载点目录的进程号
- 第三列USER表示占用挂载点目录的进程拥有者
- 第九列NAME表示占用进程打开文件的确切名称
3、结束步骤2的进程,结束进程的方式根据实际的进程选择合理的退出方式。
(1)对于只读的占用进程(cd命令,tail命令等),例如通过cd命令进到挂载点目录,可以通过正常的方式退出该目录或者通过kill -9\
(2)对于读写的占用进程(vi命令等),不建议通过kill -9
switchover过程中has进程停止或宕机
1、问题描述:
如果在switchover过程中,某个节点意外停止进程或宕机,仲裁盘中的switchover标记有可能并未被更改回最初状态。该情况下需要停止has服务并使用\${has_home}/bin/sd_hasctl工具的隐藏命令clear将状态手动清除。
解决方法:
1、查看仲裁设备信息: cat \${arbitrator_path},arbitrator_path为仲裁设备路径。
如图所示,仲裁设备数据中switch_status一项为3,并未改为0。