Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >故障分析 | Greenplum 集群 standby 故障处理

故障分析 | Greenplum 集群 standby 故障处理

原创
作者头像
爱可生开源社区
发布于 2022-12-07 05:24:45
发布于 2022-12-07 05:24:45
9140
举报

作者:杨文

DBA,负责客户项目的需求与维护,没有擅长,会点数据库,不限于MySQLRedisCassandra、GreenPlum、ClickHouse、Elastic、TDSQL等等。

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


1、背景

客户测试环境Greenplum集群中,standby节点数据目录被误删除,导致standby节点不可用。如果此时由于其它各种原因导致master节点也不可用,则集群将无法对外提供服务,因此现需尽快恢复standby节点。

2、Greenplum集群架构简单介绍

1)库由Master Severs和Segment Severs组成。

2)Master Server:

  • Greenplum数据库的Master是整个Greenplum数据库系统的入口,它接受连接和SQL查询并且把工作分布到Segment实例上。
  • Master是全局系统目录的所在地。存储全局系统元数据信息。
  • Master会认证客户端连接、处理到来的SQL命令、在Segment之间分布工作负载、协调每一个Segment返回的结果以及把最终结果呈现给客户端程序。

3)Segment Severs:

  • Greenplum数据库的Segment实例是独立的数据库,每一个都存储了数据的一部分并且执行查询处理的主要部分。
  • 用户定义的表及其索引会分布在Greenplum数据库系统中可用的Segment上,每一个Segment都包含数据的不同部分。服务于Segment数据的数据库服务器进程运行在相应的Segment实例之下。用户通过Master与一个Greenplum数据库系统中的Segment交互。
  • 当某个segment宕掉后,启用对应的mirror segment提供服务,保证数据不丢失。

3、本地模拟客户环境:

3.1、本地Greenplum集群环境:

  • 1台Master;
  • 1台standby Master;
  • 5台segment计算节点,每个节点4个段,每个段有镜像,一共是40个段。

3.2、模拟master standby坏掉:

代码语言:txt
AI代码解释
复制
[root@standby01 ~]$ su - gpadmin
[gpadmin@standby01 ~]$ rm -rf /greenplum/gpdata/master/*
[gpadmin@standby01 ~]$ exit
[root@standby01 ~]$ reboot
[root@standby01 ~]$ su - gpadmin
[gpadmin@standby01 ~]$ ps -ef |grep postgres
gpadmin 17372 17298  0 18:47 pts/0  00:00:00 grep --color=auto postgres
[gpadmin@standby01 ~]$ cd /greenplum/gpdata/master/
[gpadmin@standby01 master]$ ll
总用量 0

4、故障分析及解决:

4.1、检查状态:

代码语言:txt
AI代码解释
复制
[gpadmin@master01 ~]$ gpstate -f
截取部分有用信息:
20220508:18:37:03:044858 gpstate:master01:gpadmin-[INFO]:-obtaining Segment details from master...
20220508:18:37:08:044858 gpstate:master01:gpadmin-[INFO]:-Standby master details
20220508:18:37:08:044858 gpstate:master01:gpadmin-[INFO]:-----------------------
20220508:18:37:08:044858 gpstate:master01:gpadmin-[INFO]:-    Standby address        = standby01 
20220508:18:37:08:044858 gpstate:master01:gpadmin-[INFO]:-    Standby data directory = /greenplum/gpdata/master/gpseg-1
20220508:18:37:08:044858 gpstate:master01:gpadmin-[INFO]:-    Standby port           = 5432
20220508:18:37:08:044858 gpstate:master01:gpadmin-[WARNING]:- Standby PID            = 0                           <<<<<<<<
20220508:18:37:08:044858 gpstate:master01:gpadmin-[WARNING]:- Standby status         = Standby process not running <<<<<<<<
20220508:18:37:08:044858 gpstate:master01:gpadmin-[INFO]:---------------------------------------------------------
20220508:18:37:08:044858 gpstate:master01:gpadmin-[INFO]:--pg_stat.replication
20220508:18:37:08:044858 gpstate:master01:gpadmin-[INFO]:---------------------------------------------------------
20220508:18:37:08:044858 gpstate:master01:gpadmin-[INFO]:-No entries found.
20220508:18:37:08:044858 gpstate:master01:gpadmin-[INFO]:---------------------------------------------------------

可以看到:Standby status = Standby process not running。

代码语言:txt
AI代码解释
复制
[gpadmin@master01 ~]$ psql -c "select * from gp_segment_configuration order by content asc,dbid;"
--同样,能够看到Standby节点down掉了。
代码语言:txt
AI代码解释
复制
[gpadmin@master01 ~]$ gpstate
截取部分有用信息:
20220508:18:42:46:045284 gpstate:master01:gpadmin-[INFO]:-Greenplum instance status summary
20220508:18:42:47:045284 gpstate:master01:gpadmin-[INFO]:----------------------------------------------------
20220508:18:42:47:045284 gpstate:master01:gpadmin-[INFO]:-   Master instance                            = Active
20220508:18:42:47:045284 gpstate:master01:gpadmin-[INFO]:-   Master standby                             = standby01 
20220508:18:42:47:045284 gpstate:master01:gpadmin-[WARNING]:-Standby master status                      = Standby host DOWN <<<<<<<<
20220508:18:42:47:045284 gpstate:master01:gpadmin-[INFO]:-   Total segment instance count from metadata = 40
20220508:18:42:47:045284 gpstate:master01:gpadmin-[INFO]:----------------------------------------------------
20220508:18:42:47:045284 gpstate:master01:gpadmin-[INFO]:-   Primary Segment Status
20220508:18:42:47:045284 gpstate:master01:gpadmin-[INFO]:----------------------------------------------------

可以看到Standby status = Standby host DOWN。

4.2、清除有故障的主机的(备库)配置信息:

代码语言:txt
AI代码解释
复制
[gpadmin@master01 ~]$ gpinitstandby -r
执行过程省略,但有个选项需要确认:
Do you want to continue with deleting the standby master? Yy|Nn (default=N):
> y

4.3、添加standby库:

代码语言:txt
AI代码解释
复制
[gpadmin@master01 ~]$ gpinitstandby -s standby01 
执行过程省略,但有个选项需要确认:
Do you want to continue with standby master initialization? Yy|Nn (default=N):
> y

4.4、确认集群状态:

代码语言:txt
AI代码解释
复制
[gpadmin@master01 ~]$ gpstate -f
截取部分有用信息:
20220508:18:56:33:044858 gpstate:master01:gpadmin-[INFO]:-Standby master details
20220508:18:56:33:044858 gpstate:master01:gpadmin-[INFO]:-----------------------
20220508:18:56:33:044858 gpstate:master01:gpadmin-[INFO]:-    Standby address        = standby01 
20220508:18:56:33:044858 gpstate:master01:gpadmin-[INFO]:-    Standby data directory = /greenplum/gpdata/master/gpseg-1
20220508:18:56:33:044858 gpstate:master01:gpadmin-[INFO]:-    Standby port           = 5432
20220508:18:56:33:044858 gpstate:master01:gpadmin-[INFO]:- Standby PID            = 18067                           <<<<<<<<
20220508:18:56:33:044858 gpstate:master01:gpadmin-[INFO]:- Standby status         = Standby host passive
20220508:18:56:33:044858 gpstate:master01:gpadmin-[INFO]:---------------------------------------------------------
20220508:18:56:33:044858 gpstate:master01:gpadmin-[INFO]:--pg_stat.replication
20220508:18:56:33:044858 gpstate:master01:gpadmin-[INFO]:---------------------------------------------------------
20220508:18:56:33:044858 gpstate:master01:gpadmin-[INFO]:--WAL Sender State:streaming
20220508:18:56:33:044858 gpstate:master01:gpadmin-[INFO]:--Sync state:sync
代码语言:txt
AI代码解释
复制
[gpadmin@master01 ~]$ gpstate
截取部分有用信息:
20220508:18:42:47:045284 gpstate:master01:gpadmin-[INFO]:-   Master instance                            = Active
20220508:18:42:47:045284 gpstate:master01:gpadmin-[INFO]:-   Master standby                             = standby01
20220508:18:42:47:045284 gpstate:master01:gpadmin-[INFO]:-   Standby master status                      = Standby host passive
20220508:18:42:47:045284 gpstate:master01:gpadmin-[INFO]:-   Total segment instance count from metadata = 40
代码语言:txt
AI代码解释
复制
[gpadmin@master01 ~]$ psql -c "select * from gp_segment_configuration order by content asc,dbid;"
只截取关键信息:
dbid | content | role | preferred_role | mode | status | port | hostname  | address   | datadir
------------------------------------------------------------------------------------------------------------------------
   1 |      -1 | p    | p              | n    | u      | 5432 | master01  | master01  | /greenplum/gpdata/master/gpseg-1
  43 |      -1 | m    | m              | s    | u      | 5432 | standby01 | standby01 | /greenplum/gpdata/master/gpseg-1

4.5、检测standby:

代码语言:txt
AI代码解释
复制
[gpadmin@standby01 ~]$ ps -ef |grep postgres
gpadmin  18067      1  0  18:56 ?      00:00:03  /usr/local/greenplum-db-6.7.0/bin/postgres -D /greenplum/gpdata/master/gpseg-1 -p 5432 -E
gpadmin  18208  18067  0  18:56 ?      00:00:00  postgres: 5432, master logger process
gpadmin  18209  18067  0  18:56 ?      00:00:00  postgres: 5432, startup process recovering 00000001000000000000000A
gpadmin  18217  18067  0  18:56 ?      00:00:00  postgres: 5432, checkpointer process
gpadmin  18218  18067  0  18:56 ?      00:00:00  postgres: 5432, writer process
gpadmin  18219  18067  0  18:56 ?      00:00:00  postgres: 5432, wal receiver process streaming 0/281E5D60
gpadmin  18586  17298  0  19:06 pts/0  00:00:00  grep --color=auto postgres
代码语言:txt
AI代码解释
复制
[gpadmin@standby01 master]$ pwd
/greenplum/gpdata/master
[gpadmin@standby01 master]$ ls
gpseg-1
[gpadmin@standby01 masterj$ cd gpseg-1/
[gpadmin@standby01 gpseg-1]$ ls
backup_label.old        pg_hba.conf    pg_tblspc
base                    pg_ident.conf  pg_twophase
global                  pg_log         pg_utilitymodedtmredo
gpexpand.status_detail  pg_logical     PG_VERSION
gpmetrics               pg_multixact   pg_xlog
gpperfmon               pg_notify      postgresql.auto.conf
gpsegconfig_dump        pg_replslot    postgresql.conf
gpssh.conf              pg_serial      postmaster.opts
interna1.auto.conf      pg_snapshot    spostmaster.pid
pg_clog  pg_stat        recovery.conf
pg_distributedlog       pg_stat_tmp
pg_dynshmem             pg_subtrans

可以看到standby数据恢复,并且集群状态恢复正常。

5、额外补充:

如果Greenplum集群中master节点故障,处理思路:

1)先把standby提升为新master,确保集群第一时间可用,提供对外服务;

2)修复旧master,并添加到集群中成为新standby;

3)若要回切成原master-standby状态:下线新master -> 提升原master节点 -> 新增standby节点。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
故障分析 | Greenplum Segment 故障处理
我们知道Greenplum集群由Master Severs和Segment Severs组成。其中故障存在三种类别:Master故障、Segment故障、数据异常。之前我们已经聊过“Master故障”和“数据异常”的处理方式,今天将介绍Segment故障的处理方式。
爱可生开源社区
2023/02/02
2K0
Greenplum中检测和恢复故障的master实例
greenplum整个集群是由多台服务器组合而成,任何一台服务都有可能发生软件或硬件故障,我们一起来模拟一下任何一个节点或服务器故障后,greenplumn的容错及恢复方法.
AiDBA宝典
2023/04/27
2K0
Greenplum中检测和恢复故障的master实例
Greenplum集群Master与Standby相互切换
本文档主要测试Greenplum集群的Master与Standby节点异常后数据同步问题,之相互切换的过程。在操作时通过手动停掉Master节点看Standby节点是否能正常的启动,期间是否有数据不同步的问题,再通过恢复原Master节点查看集群是否正常运行。在切换期间要注意Master与Standby脑裂的情况的发生。
小徐
2020/10/19
2.5K0
Greenplum集群Master与Standby相互切换
故障分析 | Greenplum 数据状态异常处理
客户在巡检时,发现 Greenplum 虽然正常运行,但有些数据的状态异常。我们知道 Greenplum 的数据是存在主段和镜像段上的,当 primary 数据异常,会自动的启用 mirror 数据。当然为了保证数据的高可用,还是要及时修复异常数据。
爱可生开源社区
2022/12/07
1K0
在Docker中快速体验GreenPlum 7.0.0
地址:https://hub.docker.com/r/lhrbest/greenplum/tags
AiDBA宝典
2023/08/10
1.3K0
在Docker中快速体验GreenPlum 7.0.0
GreenPlum 6.19.3 安装部署基础版
Greenplum是一个面向数据仓库应用的关系型数据库,因为有良好的体系结构,所以在数据存储、高并发、高可用、线性扩展、反应速度、易用性和性价比等方面有非常明显的优势。Greenplum是一种基于PostgreSQL的分布式数据库,其采用sharednothing架构,主机、操作系统、内存、存储都是自我控制的,不存在共享。 本质上讲Greenplum是一个关系型数据库集群,它实际上是由数个独立的数据库服务组合成的逻辑数据库。与RAC不同,这种数据库集群采取的是MPP(Massively Parallel Processing)架构。跟MySQL、Oracle 等关系型数据不同,Greenplum可以理解为分布式关系型数据库。 关于Greenplum的更多信息请访问https://greenplum.org/
AiDBA宝典
2023/04/27
1.7K0
GreenPlum 6.19.3 安装部署基础版
Snova运维篇(七):GP数据迁移和监控
gptransfer会为每个源Segment设置一个命名管道和一个gpfdist进程。这是用于最优数据传输率的配置并且被称为Fast模式。
snova-最佳实践
2019/12/27
2.3K0
Snova运维篇(七):GP数据迁移和监控
GreenPlum数据库故障恢复测试
环境介绍: Gpdb版本:5.5.0 二进制版本 操作系统版本: CentOS linux 7.0 Master segment: 192.168.1.225/24 hostname: mfsmaster Stadnby segemnt: 192.168.1.227/24 hostname: server227 Segment 节点1: 192.168.1.227/24 hostname: server227 Segment 节点2: 192.168.1.17/24 hostname: server17 Segment 节点3: 192.168.1.11/24 hostname: server11 每个segment节点上分别运行一个primary segment和一个mirror segment
星哥玩云
2022/08/16
8490
GreenPlum数据库故障恢复测试
GreenPlum 6.23.0 安装部署高配版(启用standby master和segment mirror)
可以从 Greenplum 的 GitHub 页面(https://github.com/greenplum-db/gpdb/releases)下载RPM 包,或注册并登录到 Pivotal 公司官网(https://network.pivotal.io/products/vmware-tanzu-greenplum)进行下载。
AiDBA宝典
2023/04/27
2.5K0
GreenPlum 6.23.0 安装部署高配版(启用standby master和segment mirror)
在Docker中快速体验GreenPlum 7.0.0和gpcc 7.0.0
GreenPlum 7.0.0正式版已于2023.09.29发布,基于PG 12.12内核版本。
AiDBA宝典
2023/11/16
9420
在Docker中快速体验GreenPlum 7.0.0和gpcc 7.0.0
在CentOS 8.4中安装GreenPlum 6
https://network.pivotal.io/products/vmware-tanzu-greenplum#/releases/1163282/file_groups/9837
AiDBA宝典
2023/11/22
1.2K0
在CentOS 8.4中安装GreenPlum 6
Snova基础篇(三):Greenplum集群初始化问题及调试
gpinitsystem 的日志文件。默认路径为 ~/gpAdmin/gpinitsystem_***
snova-最佳实践
2019/12/20
1.8K0
Snova基础篇(三):Greenplum集群初始化问题及调试
Greenplum 5.21.1 集群安装部署详述
简单来说GPDB是一个分布式数据库软件,其可以管理和处理分布在多个不同主机上的海量数据。对于GPDB来说,一个DB实例实际上是由多个独立的PostgreSQL实例组成的,它们分布在不同的物理主机上,协同工作,呈现给用户的是一个DB的效果。Master是GPDB系统的访问入口,其负责处理客户端的连接及SQL 命令、协调系统中的其他Instance(Segment)工作,Segment负责管理和处理用户数据。
星哥玩云
2022/08/18
1.1K0
Greenplum 5.21.1 集群安装部署详述
GreenPlum为master和segment添加镜像
在已经安装的 Greenplum DB ,给 master 节点添加 standby master 节点 。
AiDBA宝典
2023/11/18
5520
GreenPlum为master和segment添加镜像
在Docker中快速体验GreenPlum 6.23.1和gpcc监控工具
环境配置 地址:https://hub.docker.com/repository/docker/lhrbest/greenplum_gpcc/tags?page=1&ordering=last_up
AiDBA宝典
2023/04/27
7130
在Docker中快速体验GreenPlum 6.23.1和gpcc监控工具
Snova运维篇(二):GP集群配置和高可用特性
Greenplum数据的配置文件postgresql.conf位于数据库实例的数据目录之下。
snova-最佳实践
2019/12/24
1.4K0
Snova运维篇(二):GP集群配置和高可用特性
Greenplum版本升级及小版本升级示例
需要注意的是,gpupgrade 可以进行滚动升级,即升级过程不需要在整个集群中同时执行,而是逐个段进行升级。此外,如果在升级过程中出现任何问题,请参阅 gpupgrade 文档中提供的解决方案,或者向 Greenplum 社区寻求支持。
AiDBA宝典
2023/04/27
3K0
Greenplum版本升级及小版本升级示例
Snova运维篇(一):基础维护工具和命令
gpstart工具来启动一个已经由gpinitsystem工具初始化好但已经被gpstop工具停止的Greenplum数据库系统
snova-最佳实践
2019/12/24
7000
Snova运维篇(一):基础维护工具和命令
GPCC参数metrics_collector配置错误导致GreenPlum启动报错
从启动日志“2023-01-16 12:58:59.465304 CST,,,p8992,th834783360,,,,0,,,seg-1,,,,,"FATAL","58P01","could not access file ""metrics_collector"": No such file or directory",,,,,,,,"internal_load_library","dfmgr.c",202,1 0xbef3fc postgres errstart (elog.c:557)”可以看到应该是metrics_collector的问题,这个值是参数文件postgresql.conf中的shared_preload_libraries的值,用于开启gpcc的指标监控。
AiDBA宝典
2023/04/27
8480
GPCC参数metrics_collector配置错误导致GreenPlum启动报错
Greenplum测试环境部署
本实例是部署实验环境,采用的是Citrix的虚拟化环境,分配了3台RHEL6.4的主机。
Alfred Zhao
2019/05/24
1.8K0
推荐阅读
相关推荐
故障分析 | Greenplum Segment 故障处理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档