故障切换
如果主节点发生故障, 日志同步将停止。此时必须激活备用主节点。激活备用主节点后, Oushu Database 将重建最后一成功提交的事务时的状态。
手动激活备用主节点
- 确保已为系统配置了备用主节点。
- 请登录到 Oushu Database 备用主节点并激活:
oushu_master$ hawq activate standby
激活备用主节点后, 它将成为 Oushu Database 群集的活跃的主节点。
- (可选)配置新的备用主节点。有关说明, 请参阅 「向现有群集添加备用主节点」- http://www.oushu.com/docs/ch/master-mirroring.html#id4 。
- 通过在主节点上执行以下命令来检查 Oushu Database 群集的状态:
oushu_master$ hawq state
新激活的主节点的状态应为 active。如果配置了新的备用主节点, 则备用主节点状态为 passive。当未配置备用主节点时, 该命令将显示 -No entries found, 指示没有配置主节点。
- 查询该 gp_segment_configuration 表来验证 segment 节点是否已将自己注册到新的 master 节点:
oushu_master$ psql dbname -c 'SELECT * FROM gp_segment_configuration;'
- 最后, 通过查询 gp_master_mirroring 视图来检查新添加的备用主节点的状态。有关说明, 请参阅 「检查备用主节点的状态」- http://www.oushu.com/docs/ch/master-mirroring.html#id13 。
自动激活备用主节点
最新的 Oushu Database 支持备用主节点的自动激活,您可以按如下步骤打开此功能。
- 确保已为系统配置了备用主节点。
- 您可以在启动集群前,在配置文件 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>
强烈建议您将 zookeeper 集群所有服务端的地址添加到 ha_zookeeper_quorum 中,请参见 「安装HDFS」- http://www.oushu.com/docs/ch/installation.html#hdfs 时在 core-site.xml 中对 ha.zookeeper.quorum 的设置,而非使用默认值。这是为了保证 Oushu Database 主节点与备用主节点使用相同的 zookeeper 服务,以避免本地 zookeeper 服务无法使用而导致 Oushu Database 无法自动切换或者发生错误切换。
(注:如果第一个属性值为 on,则要求用户手动将第二个属性值添加到 hawq-site.xml,以确保 zookeeper 服务被能正常访问,否则 Oushu Database 将不会启动。)
- 启动运行 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
- 如果运行时的集群的上述属性值没有设置恰当(针对跳过第 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
- 在 zookeeper 服务能正常访问时(半数以上zookeeper节点存活),Oushu Database 的备用主节点能在主节点故障后 2~3 分钟内完成自动激活。 (注:此时集群中不再有备用主节点,如需添加,后续步骤参见 「向现有群集添加备用主节点」- http://www.oushu.com/docs/ch/master-mirroring.html#id4 。)