云数据库GaussDB集群搭建
云数据库GaussDB集群搭建
云数据库GaussDB集群启停问题常见案例
1.整节点未启动,om_monitor进程不存在
问题现象:启动集群时整节点未启动,对应节点上om_monitor进程不存在
定位过程:
omm用户登录到到未启动的节点,使用以下命令确认om_monitor进程不存在:
ps –eaf | grep om_monitor
1.1 Om_monitor定时任务未挂载
场景描述:使用如下命令查看启动om_monitor的定时任务是否挂载到cron服务上,如果未挂载上,则是安装失败或定时任务被删除。通过 crontab服务可以看到如下命令,代表om_monitor服务挂载成功。
crontal -l
解决方法:参照正常节点将om_monitor定时任务服务添加到omm用户的定时任务中。
1.2 Omm用户密码超期
场景描述:使用如下命令检查是否设置了omm用户密码超期时间且密码已过期,如果密码超期会导致omm用户定时任务无权限查看,进而导致无法拉起om_monitor进程。
chage -l omm
解决方法:使用如下命令将omm用户密码超期时间设置为永不过期
chage -M 99999 omm
2. 整节点未启动,cm_agent进程不存在
问题现象:整节点未启动,om_monitor进程存在,但cm_agent进程不存在
定位过程:
omm用户登录到未启动的节点,使用以下命令确认cm_agent进程不存在:
ps –eaf | grep cm_agent
2.1 启停标志文件存在
场景描述:检查om_monitor日志中是否有如下格式的日志打印,如果有说明cgroup未挂载成功,导致CMA拉起异常
can't get the *cgroup*
解决方法:重新挂载cgroup。
2.2 启停标志文件存在
场景描述:检查bin目录下启停标志文件是否存在,如果存在说明FIM界面启动命令未下发到后端
ll /opt/huawei/Bigdata/mppdb/core/bin/cluster_manual_start
解决方法:
1)删除此文件即可从后台自动拉起该节点实例;
2) FIM界面启动命令未下发到内核原因可排查分析该节点上如下两个日志文件中的报错信息来确认
/var/log/Bigdata/mpp/scriptlog/prestart.log
/var/log/Bigdata/mpp/scriptlog/start.log
2.3 Python版本过高
场景描述:检查节点上python版本为3.x,与数据库默认的2.7不符,FIM界面启动时start.log日志中有如下报错,则说明是python版本过高导致启动异常
解决方法:
与现场人员确认是否手动升级过python版本或安装了多个版本的python,并让现场人员将节点上默认python版本恢复为2.7版本。
2.4 环境变量文件为空
场景描述:检查/opt/huawei/Bigdata/mppdb/.mppdbgs_profile环境变量文件为空,则说明环境变量文件为空导致FIM界面启动命令未下发到内核
解决方法:从正常节点拷贝一份过来即可。
2.5 启停标志文件不存在
场景描述:检查bin目录下启停标志文件不存在,说明是其它原因导致om_monitor未能启动cm_agent
解决方法:收集节点上om_monitor和cm_agent日志进一步分析。
3. 节点内部分实例未启动,cn/dn/gtm/cm_server进程不存在
问题现象:节点内部分实例未启动,未启动的cn/dn/gtm/cm_server实例进程不存在
定位过程:
omm用户登录到实例未启动的节点,使用以下命令确认相应实例进程不存在:
ps –eaf | grep gaussdb
ps –eaf | grep gs_gtm
ps –eaf | grep cm_server
3.1 信号量不足导致cn/dn启动异常
场景描述: 检查对应cn/dn实例的pg_log日志,如果有如下报错,则说明是信号量不足导致cn/dn启动异常
解决方法:
1)使用root用户执行如下命令可以将节点上os参数配置为预期值;
/opt/huawei/Bigdata/mppdb/wisequery/script/gs_checkos -i B1 --detail
2)建议使用巡检工具对集群进行全面巡检和整改。
3.2 postgresql.conf配置文件存在无效GUC参数
场景描述:检查对应节点上cm_agent和systemcall日志中如果有如下报错,则说明cn/dn的postgresql.conf配置文件中存在无效参数配置
/var/log/Bigdata/mpp/omm/cm/cm_agent/cm_agent-YYYY-MM-DD_hhmmss-current.log
/var/log/Bigdata/mpp/omm/cm/cm_agent/system_call-YYYY-MM-DD_hhmmss-current.log
解决方法:
删除postgresql.conf配置文件中无效参数即可。
3.3 端口号被占
场景描述:检查对应节点上cm_agent和systemcall日志中如果有如下报错,则说明cn/dn/cm_server/gtm的端口号被占
/var/log/Bigdata/mpp/omm/cm/cm_agent/cm_agent-YYYY-MM-DD_hhmmss-current.log
/var/log/Bigdata/mpp/omm/cm/cm_agent/system_call-YYYY-MM-DD_hhmmss-current.log
Port 25308 is used, run 'netstat -anop|grep 25308' or 'lsof -i:25308'(need root) to see who is using this port.
解决方法:
1)使用如下命令找到占用端口的进程
netstat -anop|grep port
lsof -i:port (root执行)
2) kill -9清理掉占用端口的进程,然后重新启动。
3.4 Lvs虚拟ip未挂载
场景描述:cn的listen_addresses参数中配置了lvs虚拟ip,但cn节点上lvs虚拟ip未正常挂载,则也会导致cn启动不了
检查cn实例listen_addresses配置命令:
cat /srv/BigData/mppdb/data1/coordinator/postgresql.conf|grep listen_addresses
查看节点上ip信息命令:/sbin/ifconfig
解决方法:使用如下命令重新挂载lvs虚拟ip
sh /etc/init.d/gs_vip start
3.5 进程listen端口号锁文件残留
场景描述:机器异常掉电重启等情况下可能会导致进程listen端口号锁文件残留,这样当重新启动时会因锁文件已存在而无法启动。
检查锁文件命令:
ls -la /opt/huawei/Bigdata/mppdb/mppdb_tmp
检查查出来的锁文件产生时间是否是在启动时间之前,如果是则说明是之前残留的。
解决方法:将残留的锁文件删除。
3.6 Cn/dn的listen_addresses中存在无效ip
场景描述:cn/dn的postgresql.conf配置文件的listen_addresses参数存在无效ip时会导致cn/dn无法正常启动,system_call日志中会有如下报错:FATAL: could not create listen socket for "100.185.180.62"
/var/log/Bigdata/mpp/omm/cm/cm_agent/system_call-YYYY-MM-DD_hhmmss-current.log
检查cn实例listen_addresses配置命令:
cat /srv/BigData/mppdb/data1/coordinator/postgresql.conf|grep listen_addresses
解决方法:将listen_addresses参数中的无效ip删除。
3.7 数据目录无权限
场景描述:cn/dn/gtm/cm_server的数据目录权限预期是700,当权限不足时cm_agent日志中会有如下报错:
data path disc writable test failed, /srv/BigData/mppdb/data3/slave1
解决方法:根据报错提示修复cn/dn/gtm/cm_server数据目录的权限。
3.8 磁盘满
场景描述:节点上数据盘、日志盘等满均会导致cn/dn/gtm/cm_server进程启动异常。
磁盘使用率检查命令:df -lh
解决方法:清理释放磁盘空间,消除磁盘满。
4. 节点内部分实例未启动,查看状态CN、DN、GTM实例状态为down或者unknown
启动集群失败,后台查看集群状态,发现CN、DN、GTM实例显示down或者unknown。
4.1 当前节点与主cm_server节点网络不通
场景描述:当节点与主cm_server节点网络不通时,当前节点cm_agent无法将实例状态上报给cm_server,导致实例状态显示为down或unknown。
检查当前节点与主cm_server节点网络命令:在当前节点上ping 主cm_server节点ip,如果不能ping通则说明网络异常。
解决方法:联系网络侧人员解决网络问题。
4.2 Cm_server无主
场景描述:当集群中两个cm_server实例均为pending状态,没有选出主时,无法对DN状态进行仲裁,导致DN状态均显示为down或unknown。
检查当前集群cm_server状态命令:
cm_ctl query -vCd|grep cm_server
解决方法:收集主备cm_server日志并联系研发人员处理。
4.3 节点上存在多个om_monitor进程
场景描述:当节点上存在多个om_monitor进程时,会导致cm_agent进程反复被杀,无法持续向cm_server上报实例状态,进而导致节点上实例状态显示为down或unknown。
检查当前节点om_monitor个数命令:
ps -ef|grep om_monitor|grep -v grep
解决方法:kill掉当前所有om_monitor进程待起自动重新拉起。