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

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

一、首先从理论上来讲,要达到Master节点的单点保障,Master Standby要与Master部署在不同的服务器上。当Master节点故障时,同步程序停止,此时手动在Master主机激活Standby。激活Standby时,同步日志被用来恢复Master最后一次事务成功提交时的状态。另外,在激活Standby主机同时,可以指定一个新的Standby。
5e0cf588e621a15b2f129a05aaaa1783cdf77401
下面我们开始实验:
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~~
目录
相关文章
|
5月前
|
NoSQL 关系型数据库 MySQL
高可用数据库架构:互备(Multi-Master)技术详解
本文介绍了分布式系统中的互备(Multi-Master)机制,特别是在高可用数据库系统中的应用。互备机制超越了传统的主从复制,允许每个Master节点同时进行读写操作并互相同步数据,以提高可用性和负载均衡。文章探讨了主从复制与互备模式的区别,以及互备模式的数据同步和冲突解决策略。还以MySQL的双主复制和MongoDB的副本集为例,展示了MM模式在数据库高可用性中的实践。最后,强调了互备在未来分布式系统中的重要性。
179 7
|
6月前
|
关系型数据库 MySQL 数据库
MySQL集群 双主架构(配置命令)
MySQL集群 双主架构(配置命令)
121 1
|
关系型数据库 网络安全 数据库
MogDB/openGauss 手动部署(非OM工具)单机,主备,主备级联架构
MogDB/openGauss 手动部署(非OM工具)单机,主备,主备级联架构
393 0
|
关系型数据库 数据库 Oracle
Oracle Dataguard HA (主备,灾备)方案部署调试
包括: centos6.5 oracle11gR2 DataGuard安装 dataGuard 主备switchover角色切换 数据同步测试 DG数据库数据同步测试1,正常启动主库$sqlplus / as sysdbasql>startup2,启动备库$sqlplus / as sysd...
1513 0
|
监控 安全 关系型数据库
|
关系型数据库 MySQL 数据库
MySQL主备模式的数据一致性解决方案
数据一致性对于在线业务的重要性不言而喻,本专题系列,主要从阿里巴巴“去IOE”的后时代讲起,来看下阿里巴巴数据库在数据一致性解决方案
2304 0
|
关系型数据库 数据库 C语言
Deepgreen & Greenplum 高可用(一) - Segment节点故障转移
尚书中云:惟事事,乃其有备,有备无患。这教导我们做事一定要有准备,做事尚且如此,在企事业单位发展中处于基础地位的数据仓库软件在运行过程中,何尝不需要有备无患呢? 今天别的不表,主要来谈谈企业级数据仓库软件Deepgreen和Greenplum的高可用特性之一:计算节点镜像。
8291 0
|
存储 缓存 监控
MySQL - 高可用性:少宕机即高可用?
MySQL - 高可用性:少宕机即高可用?我们之前了解了复制、扩展性,接下来就让我们来了解可用性。归根到底,高可用性就意味着 "更少的宕机时间"。 老规矩,讨论一个名词,首先要给它下个定义,那么什么是可用性? 1 什么是可用性我们常见的可用性通常以百分比表示,这本身就有其隐藏的意味:高可用性不是绝对的。
1329 0
下一篇
无影云桌面