GreenPlum系列-3-GP集群模拟主备切换和恢复

目录

           

一、环境

二、主备切换

三、还原主节点


           

一、环境

ds1 为master

ds2 为standby

二、主备切换

模拟手动切换

1、关闭ds1

ds1 节点执行关闭命令

#gpstop -m

此时在ds1 上执行查看集群状态命令时,就会报错

2、将ds2 转变成主节点

在ds2 上执行gpstate -b 时,同样会出现上述错误,这是因为ds2暂时还不是master节点。此时需要将ds2 置为master节点。在ds2上执行

#gpactivatestandby -d $MASTER_DATA_DIRECTORY

这里的$MASTER_DATA_DIRECTORY 就是在配置集群时指定的数据目录。

再次执行gpstate -b 命令查看集群状态,发现集群正常,不过会提示没有standby 节点,生成环境中需要在配置一个从节点,可以在配置好ds3后,通过在ds2上执行 gpinitstandby -s ds3 即可,这里不做演示。

模拟master崩溃

上面模拟的是人为关闭master节点,这里模拟master节点意外异常。

1、kill master 节点的进程

kill ds1上所有gp进程,模拟master 节点意外宕机,此时活跃的客户端连接都会被断开,并且新的连接会被拒绝,不过segment 上的进程不受影响继续执行。Standby节点不会自动接管集群。

2、将standby节点转换成master

在ds2 运行

#gpactivatestandby -d $MASTER_DATA_DIRECTORY

3、验证集群状态

在ds2上执行gpstate -b 会发现集群正常。

以上测试均是演示mater 出现异常,将standby切换为master 节点。不过会发现几个问题

问题1: ds1 \ ds2 IP地址不同。

        在实际场景中还需要配置代理,使用代理IP或者VIP,避免客户端更换IP。

问题2:集群故障不会自动切换。

       可以通过编写检查脚本去判断主节点是否异常,从而触发拉起备节点作为主节点的动作。不过作为数据库集群,数据一致性是重中之重,特别是master节点存储的是集群的元数据,所以个人建议还是人工在检查无误后,进行切换验证。当然,如果通过充分的论证和试验,能够准确的判断集群可能出现的异常情况,完全可以做到自动切换。

三、还原主节点

前提:ds1 节点具备恢复的条件。

1、移除ds1 的数据目录

首先需要将ds1 的数据目录迁移,为了从ds2 同步集群元数据文件

#mv /mnt/data_1/mgpdb/gpseg-1 /mnt/data_1/mgpdb/gpseg-1.backup

2、定义ds1 为 standby 节点

将ds1 定义为ds2 的备节点,在ds2 上执行 gpinitstandby -s ds1

#gpinitstandby -s ds1

3、查询集群主备状态

此时可以看到备节点为ds1

#gpstate -f

4、关停ds2

这里关停ds2 是为了后面主备切换做准备

#gpstop -m

5、移除ds2 数据目录

#mv /mnt/data_1/mgpdb/gpseg-1 /mnt/data_1/mgpdb/gpseg-1.backup

6、定义ds2 为standby 节点

在ds1 上执行gpinitstandby -s ds2

7、验证

此时再次通过 gpstate 命令查看集群状态,发现已恢复ds1为主,ds2为备。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值