如何检查失败的Segment/master

在启用Mirror情况下,可能出现Segment失败时,系统不会中断服务,而且没有明确提示。检查系统状态的一种方法就是使用gpstate命令。该命令会列出GPDB系统中每个独立组件(Primary Instance、Mirror Instance、Master、Standby)的状态。

检查失败的Segment
1. 在Master主机,使用-e参数执行gpstate命令。这将显示任何出错状态的Instance:
$ gpstate -e
2. 处于修改跟踪(Change Tracking)状态表明对应的Mirror已经失败。
如果某个Instance不在其初始的角色,意味着其当前的运行状态与系统初始化时的设置不同。这意味着系统处于非平衡状态,一个Segment主机可能会有较多的活动Instance,消耗更高的系统资源。参考”恢复所有Instance到初始角色”相关章节。
3. 要获得失败Instance的详细信息,可查看系统日志表gp_segment_configuration。例如:
$ psql -c "SELECT * FROM gp_segment_configuration WHERE status='d';"
4. 对于失败的Instance,注意其主机、端口、初始角色和数据目录。这些将有助于确定Instance所在的主机和位置,有助于诊断故障。
5. 查看Primary Instance与Mirror Instance之间的映射关系,执行命令:
$ gpstate –m

根据3中提到的可以写一个脚本;通过邮件提醒;或者短信提醒! greenplum_status_report.sh

#/bin/sh

export PGPORT=
export PGUSER=gpadmin
export PGDATABASE=postgres
admail="lottu_zhu@staff.easou.com"

psql -p ${PGPORT} ${PGDATABASE} ${PGUSER} -t -c "SELECT dbid||' status is down' FROM gp_segment_configuration WHERE status='d';"  -o /tmp/dbid.txt

l=`awk 'NF{n++}END{print n}' /tmp/dbid.txt`

 ]
then
mail -s "GREENPLUM STATUS REPORT " $admail < /tmp/dbid.txt
fi

在加入定时任务中即可。

上一篇:nginx,apache的alias和认证功能


下一篇:如何检测当前浏览器的类型及版本