故障切换

如果主节点发生故障, 日志同步将停止。此时必须激活备用主节点。激活备用主节点后, Oushu Database 将重建最后一成功提交的事务时的状态。

手动激活备用主节点

  1. 确保已为系统配置了备用主节点。
  2. 请登录到 Oushu Database 备用主节点并激活:
oushu_master$ hawq activate standby

激活备用主节点后, 它将成为 Oushu Database 群集的活跃的主节点。

  1. (可选)配置新的备用主节点。有关说明, 请参阅 向现有群集添加备用主节点
  2. 通过在主节点上执行以下命令来检查 Oushu Database 群集的状态:
oushu_master$ hawq state

新激活的主节点的状态应为 active。如果配置了新的备用主节点, 则备用主节点状态为 passive。当未配置备用主节点时, 该命令将显示 -No entries found, 指示没有配置主节点。

  1. 查询该 gp_segment_configuration 表来验证 segment 节点是否已将自己注册到新的 master 节点:
oushu_master$ psql dbname -c 'SELECT * FROM gp_segment_configuration;'
  1. 最后, 通过查询 gp_master_mirroring 视图来检查新添加的备用主节点的状态。有关说明, 请参阅 检查备用主节点的状态

自动激活备用主节点

最新的 Oushu Database 支持备用主节点的自动激活,您可以按如下步骤打开此功能。

  1. 确保已为系统配置了备用主节点。

2. 您可以在启动集群前,在配置文件 hawq-site.xml 中添加如下属性并同步到各节点,也可以在启动集群后再修改 GUC 值。 (友情提示:对于初次使用 Oushu Database 的用户,建议先跳过此步骤,避免因某些操作不慎导致 master 启动失败,引发主节点切换,给后续操作带来麻烦。)

<property>
  <name>enable_master_auto_ha</name>
  <value>on</value>
</property>
<property>
  <name>ha_zookeeper_quorum</name>
  <value>ZKHOST1:2181,ZKHOST2:2181,ZKHOST3:2181</value>
</property>
GUC 属性名 默认值 说明
enable_master_auto_ha off 是否允许自动切换
ha_zookeeper_quorum localhost:2181 集群中 zookeeper 服务所在的位置

强烈建议您将 zookeeper 集群所有服务端的地址添加到 ha_zookeeper_quorum 中,请参见 安装HDFS 时在 core-site.xml 中对 ha.zookeeper.quorum 的设置,而非使用默认值。这是为了保证 Oushu Database 主节点与备用主节点使用相同的 zookeeper 服务,以避免本地 zookeeper 服务无法使用而导致 Oushu Database 无法自动切换或者发生错误切换。

(注:如果第一个属性值为 on,则要求用户手动将第二个属性值添加到 hawq-site.xml,以确保 zookeeper 服务被能正常访问,否则 Oushu Database 将不会启动。)

  1. 启动运行 Oushu Database 后,您可以直接查询上述属性值是否设置正确:
oushu_master$ hawq config -s enable_master_auto_ha
GUC      : enable_master_auto_ha
Value    : on
oushu_master$ hawq config -s ha_zookeeper_quorum
GUC      : ha_zookeeper_quorum
Value    : x.x.x.x:2181,y.y.y.y:2181,z.z.z.z:2181
  1. 如果运行时的集群的上述属性值没有设置恰当(针对跳过第 2 步的用户),您可以在主节点上手动修改,并重启集群:
oushu_master$ hawq config -c enable_master_auto_ha -v on
oushu_master$ hawq config -c ha_zookeeper_quorum -v x.x.x.x:2181,y.y.y.y:2181,z.z.z.z:2181
oushu_master$ hawq restart cluster

5. 在 zookeeper 服务能正常访问时(半数以上zookeeper节点存活),Oushu Database 的备用主节点能在主节点故障后 2~3 分钟内完成自动激活。 (注:此时集群中不再有备用主节点,如需添加,后续步骤参见 向现有群集添加备用主节点 。)