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

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

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

作者:杨文

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 删除。

评论
登录后参与评论
2 条评论
热度
最新
good
good
回复回复点赞举报
你好,怎么在这个基础上添加闹钟功能
你好,怎么在这个基础上添加闹钟功能
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
基于单片机的简易声光报时时钟
本设计采用STC89C51单片机作为主控制器,外部加上74HC573驱动数码管。系统总体框图如下:
一条晒干的咸鱼
2024/11/19
1100
基于单片机的简易声光报时时钟
别怕!51 单片机从入门到应用,小白也能轻松吃透
这篇教程专为单片机小白打造,从 51 单片机基础讲起,带你搭建开发环境,学习汇编与 C 语言编程。通过 LED 灯闪烁、按键控制、数码管显示等基础实验,以及简易电子钟、温度检测系统等应用案例,结合代码实操,助你快速掌握 51 单片机开发。
羑悻的小杀马特.
2025/03/24
3100
基于51单片机设计的简易电子琴
版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/80538312
zy010101
2019/05/25
8170
八路抢答器单片机c语言程序_八路抢答器单片机c语言程序
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,
全栈程序员站长
2022/11/01
1K0
51单片机八路抢答器proteus仿真
由于51单片机小板,按键比较少,还有一些功能上的缺陷,所以说无法完成八路抢答器,所以我们用proteus仿真,代码与实验结果如下:
全栈程序员站长
2022/11/01
4840
设计分享|单片机8路抢答器
51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。
电子工程师成长日记
2022/07/27
6070
设计分享|单片机8路抢答器
单片机ds1302时钟程序(51单片机液晶显示程序)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/129766.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/29
1.4K1
单片机ds1302时钟程序(51单片机液晶显示程序)
基于单片机的八路抢答器的设计与实现_基于单片机的三路抢答器设计
1.以单片机为核心,设计一个八位竞赛抢答器:同时供八名选手或八个代表队比赛,分别用八个按钮S0~S7表示。
全栈程序员站长
2022/11/07
3940
基于51单片机的自动浇花器电路
自动浇水灌溉系统设计方案,以AT89C51单片机为控制核心,采用模块化的设计方法。
芯动大师
2024/05/16
1350
基于51单片机的自动浇花器电路
单片机入门:按键消抖
按键按下都会发出一声响,虽然有的按键声音很轻微,但这都是金属导体碰撞产生的震动,这种现象称为键盘抖动。如果不对键盘的抖动进行处理,按键会对系统电路或程序产生意外的干扰。
电子工程师成长日记
2022/07/21
9040
单片机入门:按键消抖
四路抢答器c语言程序_八路抢答器原理讲解
uc code table[]={0x3f,0x06,0x5b,0x4f,0x66,
全栈程序员站长
2022/11/01
4080
基于51单片机的红绿灯设计
实现十效果具体为:南北通行42秒,南北闪烁3秒,南北黄灯4秒,禁止通行1秒,东西黄灯4秒,东西通行27秒,东西闪烁3秒,东西黄灯4秒。同时具备特殊放行模式:南北自由通行;东西自由通行;全部禁行。所有时间可以修改。貌似和平时的红路灯不一样,但是由于想凑齐八个状态,就整了这神奇的控制步骤。黄灯多,安全第一!!
全栈程序员站长
2022/11/15
5780
基于51单片机的红绿灯设计
基于51单片机的流水灯设计
设计思路一(未用中断): 8个LED灯正极解电源,负极接单片机I/O口。 死循环:设置P2口为11111110,使用左移函数,循环七次。 同时每次位移中间加入延时函数。 三个按键:A按键启动、B按键控制不同流水速度(低中高)、C按键控制流水灯暂停蜂鸣器长响: 思路一:设置一个变量i,起初为0,按下A键后为1;当i为1进入死循环 设置变量j,按下B,j++,当j大于3,j=j-3;使用j*1000,来空置循环函数的延时时间。设置bit变量s=0,按下按键C,s++,当s=1,j进入循环蜂鸣器响,s=0退出循环。 在每次延时时检查按键
全栈程序员站长
2022/08/18
8230
基于51单片机的流水灯设计
基于单片机的水位检测系统_51单片机温度传感器程序
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
3940
基于单片机的水位检测系统_51单片机温度传感器程序
蓝桥杯单片机—-NE555频率测量
NE555 (Timer IC)为8脚时基集成电路,NE555是属于555系列的计时IC的其中的一种型号,555系列IC的接脚功能及运用都是相容的,只是型号不同的因其价格不同其稳定度、省电、可产生的振荡频率也不大相同;而555是一个用途很广且相当普遍的计时IC,只需少数的电阻和电容,便可产生数位电路所需的各种不同频率之脉波讯号。
全栈程序员站长
2022/07/28
1.3K0
蓝桥杯单片机—-NE555频率测量
C51单片机–定时器实验
这个代码感觉逻辑上没问题,实际仿真出来倒计时的1s感觉要比实际的慢,可能是由于单片机执行语句时也需要耗费时间
全栈程序员站长
2022/09/13
7910
C51单片机–定时器实验
计算机控制技术实验说明
AD转换是所有嵌入式系统或机器人获取外部信息的一种重要方式,将温度、角度和位置等转换为对应的数字量,供处理器处理。
zhangrelay
2019/01/23
5480
浅谈单片机中C语言与汇编语言的转换
一、单片机课设题目要求与软件环境介绍 做了一单片机设计,要用C语言与汇编语言同时实现,现将这次设计的感受和收获,还有遇到的问题写下,欢迎感兴趣的朋友交流想法,提出建议。 单片机设计:基于51单片机的99码表设计 软件环境:Proteus8.0 + Keil4 要求:1,开关按一下,数码管开始计时。2,按两下,数码管显示静止。3,按三下,数码管数值清零。 二、C语言程序 1 #include<reg51.h> 2 #define uint unsigned int 3 #define uchar uns
Zoctopus
2018/06/04
2.4K0
STC 89C52 单片机引脚对应的功能以及实例讲解
学习单片机能够让你更加深刻的认识到我们身边中常用电器的工作方式,接下来我们以引脚来讲解一些单片机中常用引脚的功能
Gorit
2021/12/09
2.9K0
STC  89C52  单片机引脚对应的功能以及实例讲解
水流量霍尔传感器工作原理_51单片机温度传感器
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/11
1.2K0
水流量霍尔传感器工作原理_51单片机温度传感器
推荐阅读
相关推荐
基于单片机的简易声光报时时钟
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档