列出当前状态为down的Segment。如果有任何行被返回,就会生成一个警告或者告警。 推荐频率:每5到10分钟 重要度: IMPORTANT |
在postgres数据库中运行下例查询: SELECT * FROM gp_segment_configuration
WHERE status <> 'u'; |
如果该查询返回任何行,按照这些步骤来纠正问题:
- 验证宕机的Segment所在的主机是有响应的。
- 如果主机没有问题,检查宕机的Segment的主Segment和镜像Segment的pg_log文件,以便发现Segment宕机的根因。
- 如果没有找到意料之外的错误,运行gprecoverseg工具将那些Segment重新上线。
|
检查当前处于改变跟踪模式的Segment。如果任何行被返回,应该生成一个警告或者告警。 推荐频率:每5到10分钟 重要度: IMPORTANT |
在
postgres数据库中执行下列查询:
SELECT * FROM gp_segment_configuration
WHERE mode = 'c';
|
如果该查询返回任何行,按这些步骤来纠正问题:
- 验证宕机的Segment所在的主机是有响应的。
- 如果主机没有问题,检查宕机的Segment的主Segment和镜像Segment的pg_log文件,以便发现Segment宕机的根因。
- 如果没有找到意料之外的错误,运行gprecoverseg工具将那些Segment重新上线。
|
检查当前在重新同步的Segment。如果有行被返回,应该生成一个警告或者告警。 推荐频率:每5到10分钟 重要度: IMPORTANT |
在
postgres数据库中执行下列查询:
SELECT * FROM gp_segment_configuration
WHERE mode = 'r';
|
当这个查询返回行时,它表示那些Segment正在被重新同步。如果状态没有从'r'变成's',那么在受影响的Segment的主Segment和镜像Segment的pg_log文件中检查错误。 |
检查没有以其最优角色运转的Segment。如果找到任何Segment,该集群可能不平衡。如果任何行被返回,应该生成一个警告或者告警。 推荐频率:每5到10分钟 重要度: IMPORTANT |
在
postgres数据库中执行下列查询:
SELECT * FROM gp_segment_configuration
WHERE preferred_role <> role;
|
当Segment没有运行在其首选角色中时,每台主机上可能不是都有均匀数据量的主Segment,这表示处理是倾斜的。等待一个可能的窗口并且重启数据库将Segment带回到它们的首选角色。 |
运行一个分布式查询来测试它运行在所有Segment上。对每个主Segment都应返回一行。 推荐频率:每5到10分钟 重要度: CRITICAL |
在
postgres数据库中执行下列查询:
SELECT gp_segment_id, count(*)
FROM gp_dist_random('pg_class')
GROUP BY 1;
|
如果这个查询失败,就说明该集群中存在分派到某些Segment的问题。这是一种少见的事件。检查无法被分派的主机确保没有硬件或者网络问题。 |
在一个Greenplum数据库 4.2或者更早的集群上测试Master镜像的状态。如果值是"Not Synchronized",则抛出一个告警或者警告。 推荐频率:每5到10分钟 重要度: IMPORTANT |
在
postgres数据库中执行下列查询:
SELECT summary_state
FROM gp_master_mirroring;
|
在来自Master和后备Master的pg_log中检查错误。如果没有意料之外的错误并且机器是启动的,运行gpinitstandby工具将后备Master带回到线上。在GPDB 4.2及更早的版本上,这要求一次数据库重启。 |
在Greenplum数据库上测试Master镜像的状态。如果该值不是"STREAMING",则抛出一个告警或者警告。 推荐频率:每5到10分钟 重要度: IMPORTANT |
运行下列
psql命令:
psql dbname -c 'SELECT procpid, state FROM pg_stat_replication;'
|
从来自Master和后备Master的pg_log文件中检查错误。如果没有意料之外的错误并且机器是启动的,运行gpinitstandby工具将后备Master带回到线上。 |
执行一次基本检查看看Master是否启动且工作。 推荐频率:每5到10分钟 重要度: CRITICAL |
在
postgres数据库中运行下列查询:
SELECT count(*) FROM gp_segment_configuration;
|
如果这个查询失败,则活动Master可能宕机。多尝试几次,然后手工检查活动Master。如果活动Master确实已经宕机,重新引导或者重启活动Master以确保没有进程留在活动Master上,然后触发后备Master的激活。 |