检测故障Segment

检测故障Segment

启用镜像的情况下,系统允许存在故障Segment并且不影响数据库服务正常运行。可以通过 gpstate工具查看整个数据库系统状态。gpstate 可以展示整个数据库系统中包括主Segment、镜像Segment、Master和备用Master在内的每 一个单独系统组件的状态。

如何检测故障Segment

  1. 在Master上,用-e选项运行gpstate工具显示有错误情况的Segment:
    $ gpstate -e

    如果工具列出Segments with Primary and Mirror Roles Switched,表明 segment不在他的原始角色(系统初始化时赋予的角色)。这意味着系统处于一种潜在的不平衡状态, 因为一些segment主机可能比正常状态下拥有更多的活动segment,并不处于它们的最佳性能状态。

    Segments展示Config statusDown则预示着 其对应的镜像segment产生故障下线了。

    修复该问题的详细过程,请见从Segment故障中恢复

  2. 为了获取故障segment的详细信息,可以检查 gp_segment_configuration系统表。例如:
    $ psql postgres -c "SELECT * FROM gp_segment_configuration WHERE status='d';"
  3. 针对那些故障的segment实例,注意主机、端口号、原来角色和数据目录。这些信息会帮助您在问题定位时 提供有用的决策信息。
  4. 要展示镜像segment实例的信息,运行:
    $ gpstate -m