Greenplum高可用实现场景及运用讨论

本文旨在讨论Greenplum系统的高可用实现场景和使用方法。

一、Master和Standby的高可用

1.当前集群环境中已经为master节点创建了standby节点,状态正常,且记作master节点为node01,standby节点为node04。

2.系统运行中,standby节点失效,可以用直接关闭电源的方法模拟系统与standby失去联系。

此时原集群的master正常,服务访问不受任何影响。

a.standby本身没有问题,服务器重启之后可以重新投入使用,node04重启之后,在master的bin下执行:gpinitstandby -n,任何其他操作都不用,直接把standby节点加入集群队列,并完成元数据同步。如果在使用gpstate -f 发现始终无法完成master数据同步,则将数据库重启到 -m 状态,同样执行gpinitstandby -n操作即可。

b.standby本身有严重问题,无法继续提供standby服务,则需要重新添加一个standby节点,注意如果仍然使用node04这个节点,需要将之前的文件目录和数据目录清除干净,然后重新执行添加standby脚本。

3.系统运行中,master节点失败,同样通过直接关闭node01电源的方式模拟系统与master失去联系。

a.登录standby节点,首先修改pg_hba.conf文件,使该节点能够登录。

b.在standby节点的bin执行:./gpactivatestandby -d /data/gpdata/master/gpseg-1,激活standby的master,使原来的standby成为master。

c.重新查询gpstate -f,原master已经被踢出集群队列,原standby已经成为了master,如果还想把原来的node01加回集群,只能清除node01上gp安装目录和数据目录,重新以standby的形式加入集群。

 

二、primary和mirror的高可用

1.primary和mirror的部署方案有grouped和spread两种,最直观的不同是,使用grouped方式部署,系统可接受的最少segment是1个,即primary和对应的mirror可以部署在同一个节点上,而spread方式的部署可接受的最少segment是2个,即和primary对应的mirror必须部署在其他节点上。也因此处于容错考虑,实际运维场景中多数采用spread方式的部署。

2.当场景中的mirror节点由于意外停止服务,此时不影响数据库的整体访问,假设该mirror没有遭到破坏,直接重新启动即可恢复,则需要在master的bin下执行:gprecover,系统自动将停止服务的mirror调启并加入系统队列。

3.当场景中的primary节点由于意外停止服务,此时系统访问仍然不会感到异常,访问该primary节点的请求直接被转到对应的mirror上,假设停止服务的primary节点没有遭到损坏,直接可以恢复访问,则需要在master的bin中,先执行gprecover,将停止服务的primary重新调启,然后再执行gprecover -r,将原先的primary和mirror的角色重新调整完毕。

4.当某台节点服务器发生掉电或故障,导致该服务器上的primary和mirror均无法访问的时候则要考虑:

a.丢掉的mirror本身不会对他的primary造成影响,而丢掉的primary此时已经将请求转移到了对应的mirror上。

b.重启掉电的服务器,保证hosts节点名称不变,data目录完整的前提下,使用gprecovery 和 gpreconvery -F ,可以把丢掉的节点再重新加回集群。

 

 

三、运用高可用的时机

由前面描述master和standby以及primary和mirror的切换方式,当节点出现服务异常或物理宕机的时候,自动由高可用功能提供连续不断的访问,确保服务不会中断。另外在数据库实际运行过程中,需要实时监控磁盘读写效率,网络延迟等硬件信息,一旦发现哪个节点的磁盘读写效率下降,网络延迟增加,就要考虑利用高可用的方式,在不停止服务的情况下切换新节点,此处我觉得不推荐使用节点收缩的原因是,执行收缩节点时首先要停止正常的访问,并且需要靠备份还原操作完成数据一致,如果数据量比较大,恢复的时间比较长,严重影响服务正常使用。但是使用高可用直接去掉损坏的硬件,之后再通过节点扩展,可以在不停止服务的情况下直接完成节点恢复。

操作方法为,当发现某个物理节点的硬件出现问题,直接关掉这个节点,此时由高可用功能,系统访问不受影响,之后如果能通过人为修复,解决该节点性能下降原因,则直接重启机器,用./gprecover恢复节点访问,如果不能解决而需要换机器,则把新机器的节点名称等信息修改为故障节点一致的内容,更新所有节点的hosts文件,启动新节点,在新节点的相同位置,创建于旧节点完全一致的数据目录,然后执行./gprecover -F ,将关机节点的数据目录恢复到新节点上即可,稍等一会儿系统状态自动恢复正常。

你可能感兴趣的:(软件测试,数据库,greenplum,Greenplum高可用)