Deepgreen & Greenplum 高可用(二) - Master故障转移

上一篇文章中提到了Segment节点的故障转移,其中主要涉及Mirror添加、故障自动切换、故障修复后balanced到原集群状态,以及一些建议。具体请移步传送门-->《Deepgreen & Greenplum 高可用(一) - Segment节点故障转移》。

书接上文,今天来谈一谈Master节点的故障转移。

一、首先从理论上来讲,要达到Master节点的单点保障,Master Standby要与Master部署在不同的服务器上。当Master节点故障时,同步程序停止,此时手动在Master主机激活Standby。激活Standby时,同步日志被用来恢复Master最后一次事务成功提交时的状态。另外,在激活Standby主机同时,可以指定一个新的Standby。

下面我们开始实验:

1.首先给原有集群添加Standby

gpinitstandby -s reverse <<--Standby所在主机名,与/etc/hosts中相对应

2.通过SQL查看现有Master及Standby Master状态

postgres=# select string_agg(role||'-'||hostname,'|') from gp_segment_configuration where content='-1';
  string_agg
--------------
 p-flash|m-reverse

3.模拟Master故障并切换到Standby

# 查询Master进程
ps -ef | grep postgres
kill -9 3897 <<-- 上面查询到的Master进程pid
# 测试是否可以连接到集群(失败)
psql -d postgres
#切换到Standby
gpactivatestandby -d ${MASTER_DATA_DIRECTORY}

# 测试是否可以连接到集群(成功)
psql -d postgres
#如果想在切换的同时创建一个新的Standby,可以执行如下命令
gpactivatestandby -d ${MASTER_DATA_DIRECTORY} -c new_standby_hostname

4.切换完成后,在新Master主机上连接数据库并运行ANALYZE

psql dbname -c 'ANALYZE;'

至此,切换完成。

二、与Mirror一样,因为Standby一般不会单独占用一台机器,通常部署在某个Segment节点之上,所以长期使用Standby接管服务,会导致Standby主机争抢Segment实例资源。通常在原Master修复后,应尽快切换为原集群状态,下面我们来做这个实验。

1.首先在原Standby主机(现已经承担Master服务)上,执行如下命令,将Standby初始化到原Master主机(刚修复的问题机器)

gpinitstandby -s flash

2.在当前承担Master服务的Standby主机上停止Master服务

gpstop -m

3.在原Master主机上重新激活Master服务

gpactivatestandby -d $MASTER_DATA_DIRECTORY

4.激活之后,通过下面命令查看状态

gpstate -f

5.一旦状态正常,便可将原Standby主机重新初始化

gpinitstandby -s reverse

至此,集群已经恢复到原始状态,这里面关于原Master、现Master、原Standby和现Standby的概念,有点绕,需要认真品味。

三、最后分享另外两个与Standby相关的操作

1. 同步Standby并更新到最新的同步

gpinitstandby -s standby_master_hostname -n

2.删除Standby

gpinitstandby -s standby_master_hostname -r

备注:

  • Standby可以轻松添加和删除,然而Mirror却只允许添加,不允许删除。
  • 需要注意,Master的热备Standby需要手工激活,并且使用不同的访问IP;而Segment的镜像却可以自动切换。

End~~

时间: 2025-01-31 05:15:56

Deepgreen & Greenplum 高可用(二) - Master故障转移的相关文章

Deepgreen &amp; Greenplum 高可用(一) - Segment节点故障转移

尚书中云:惟事事,乃其有备,有备无患.这教导我们做事一定要有准备,做事尚且如此,在企事业单位发展中处于基础地位的数据仓库软件在运行过程中,何尝不需要有备无患呢? 今天别的不表,主要来谈谈企业级数据仓库软件Deepgreen和Greenplum的高可用特性之一:计算节点镜像. 一.首先从理论上来讲,正常Segment节点和他的Mirror是分布在不同主机上的,以防止单点故障导致的数据库访问异常.当正常Segment节点出现故障时,Mirror节点可以自动接管Segment节点的服务,数据库仍然可以

MySQL下高可用故障转移方案MHA的超级部署教程_Mysql

MHA介绍MHA是一位日本MySQL大牛用Perl写的一套MySQL故障切换方案,来保证数据库系统的高可用.在宕机的时间内(通常10-30秒内),完成故障切换,部署MHA,可避免主从一致性问题,节约购买新服务器的费用,不影响服务器性能,易安装,不改变现有部署.      还支持在线切换,从当前运行master切换到一个新的master上面,只需要很短的时间(0.5-2秒内),此时仅仅阻塞写操作,并不影响读操作,便于主机硬件维护.   在有高可用,数据一致性要求的系统上,MHA 提供了有用的功能,

MySQL 高可用MHA安装部署以及故障转移详细资料汇总

  1,简介 1.1mha简介 MHA,即MasterHigh Availability Manager and Tools for MySQL,是日本的一位MySQL专家采用Perl语言编写的一个脚本管理工具,该工具仅适用于MySQLReplication(二层)环境,目的在于维持Master主库的高可用性.   MHA(Master High Availability)是自动的master故障转移和Slave提升的软件包.它是基于标准的MySQL复制(异步/半同步).      MHA有两部

mysql-mmm高可用架构

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://navyaijm.blog.51cto.com/4647068/1230674 一.说明 1.本文将介绍如何使用mysql-mmm搭建数据库的高可用架构,MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器)关于mysql主主复制配置的监控.故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入)

亿级流量电商详情页系统的大型高并发与高可用缓存架构实战

对于高并发的场景来说,比如电商类,o2o,门户,等等互联网类的项目,缓存技术是Java项目中最常见的一种应用技术.然而,行业里很多朋友对缓存技术的了解与掌握,仅仅停留在掌握redis/memcached等缓存技术的基础使用,最多了解一些集群相关的知识,大部分人都可以对缓存技术掌握到这个程度.然而,仅仅对缓存相关的技术掌握到这种程度,无论是对于开发复杂的高并发系统,或者是在往Java高级工程师.Java资深工程师.Java架构师这些高阶的职位发展的过程中,都是完全不够用的.技术成长出现瓶颈,在自己

MySQL 高可用MMM安装部署以及故障转移详细资料汇总

  1,      mmm简介 MMM(Master-Masterreplication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序.MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制,虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提供部分读服务,以加速在主主切换时刻备选主的预热,可以说MMM这套脚本程序一方面实现了故障切换的功能,另一方面其内部附加的工具脚本也可以实现多个slave

图解故障服务器下线:关于阿里云MongoDB高可用的探秘

服务器容灾一直是云服务运维过程中无法避开的问题,我们常常会讨论如何对出现故障的机器进行数据库方面的恢复,却很少考虑到在机器出现故障后,是用一套怎样的处理流程将三节点副本集恢复如初的. MongoDB采用的是什么方法,得以做到在有机器故障的情况下依旧能保证用户业务的高可用?最近举行的"MongoDB Sharding杭州用户交流会"中,针对这一问题,阿里云资深研发工程师果实分享了关于MongoDB 故障服务器如何下线方面的详尽的技术解密. 对于MongoDB数据库来说,MongoDB内核

Redis开发运维实践高可用和集群架构与实践(二)

11.1.2 环境搭建 11.1.2.1 部署架构 部署架构上采用三台机器,一个Master接受写请求,两个Slave进行数据同步,三台机器上都部署sentinel(一般为奇数个,因为需要绝大部分进行投票才能failover).(官方示例)具体架构如下图: 注意:如果有条件可以将sentinel多部署几个在客户端所在的应用服务器上,而不是与从节点部署在一起,这样避免整机宕机后sentinel和slave都减少而导致的切换选举sentinel无法超过半数. 11.1.2.2 网络规划 redis高

SQL Server 2008 数据库镜像部署实例之二 配置镜像,实施手动故障转移_mssql2008

上一篇文章已经为配置镜像数据库做好了准备,接下来就要进入真正的配置阶段 一.在镜像数据库服务器上设置安全性并启动数据库镜像会话 1.展开数据库,选择VirtualManagerDB,点击右键选择任务--镜像 2.点击配置安全性,点选是,包括见证服务器 3.去掉见证服务器,以后进行配置 4.设置主体服务器,填入端点名称为site1 5.添加镜像服务器,取端点名为site2 6.指定服务账户为域管理员账户(可以在域内事先配置) 7.创建成功,点击关闭 8.弹出对话框,选择不开始开始镜像 9.点选高性