[原]Greenplum failed segment的恢复方法

  当在使用greenplum过程中有不当的操作时,可能会出现segment节点宕掉的情况(比如在greenplum运行的过程中停掉其中几台segment节点的服务器),通过下面的方法可以恢复segment。

下面是现场出现的故障情况:

[[email protected] ~]$ gpstate -m
20161010:16:35:54:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[INFO]:-Starting gpstate with args: -m
20161010:16:35:55:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[INFO]:-local Greenplum Version: ‘postgres (Greenplum Database) 4.3.6.2 build 1‘
20161010:16:35:55:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[INFO]:-master Greenplum Version: ‘PostgreSQL 8.2.15 (Greenplum Database 4.3.6.2 build 1) on x86_64-unknown-linux-gnu, compiled by GCC gcc (GCC) 4.4.2 compiled on Nov 12 2015 23:50:28‘
20161010:16:35:55:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[INFO]:-Obtaining Segment details from master...
20161010:16:35:55:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[INFO]:--------------------------------------------------------------
20161010:16:35:55:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[INFO]:--Current GPDB mirror list and status
20161010:16:35:55:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[INFO]:--Type = Group
20161010:16:35:55:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[INFO]:--------------------------------------------------------------
20161010:16:35:55:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[INFO]:-   Mirror             Datadir                       Port    Status              Data Status
20161010:16:35:55:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[WARNING]:-tj-soc-c04-csfb2   /data1/gpdata/mirror/gpseg0   41000   Failed                                <<<<<<<<
20161010:16:35:55:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[WARNING]:-tj-soc-c04-csfb2   /data1/gpdata/mirror/gpseg1   41001   Failed                                <<<<<<<<
20161010:16:35:55:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[WARNING]:-tj-soc-c04-csfb3   /data1/gpdata/mirror/gpseg2   41000   Failed                                <<<<<<<<
20161010:16:35:55:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[WARNING]:-tj-soc-c04-csfb3   /data1/gpdata/mirror/gpseg3   41001   Failed                                <<<<<<<<
20161010:16:35:55:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[INFO]:-   tj-soc-c04-csfb4   /data1/gpdata/mirror/gpseg4   41000   Acting as Primary   Change Tracking
20161010:16:35:55:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[INFO]:-   tj-soc-c04-csfb4   /data1/gpdata/mirror/gpseg5   41001   Acting as Primary   Change Tracking
20161010:16:35:55:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[WARNING]:-tj-soc-c04-csfb1   /data1/gpdata/mirror/gpseg6   41000   Failed                                <<<<<<<<
20161010:16:35:55:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[WARNING]:-tj-soc-c04-csfb1   /data1/gpdata/mirror/gpseg7   41001   Failed                                <<<<<<<<
20161010:16:35:55:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[INFO]:--------------------------------------------------------------
20161010:16:35:55:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[WARNING]:-2 segment(s) configured as mirror(s) are acting as primaries
20161010:16:35:55:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[WARNING]:-6 segment(s) configured as mirror(s) have failed
20161010:16:35:55:026100 gpstate:tj-soc-c04-csfb1:gpadmin-[WARNING]:-2 mirror segment(s) acting as primaries are in change tracking

可以看到有6个节点Failed,有2个节点的Primary和Mirror交换了。

一、首先需要停掉GP

gpstop -M fast -a    这样会告诉你有几个节点DOWN了

二、启动GP

gpstart    启动数据库会忽略DOWN的节点

三、生成一个恢复配置文件

gprecoverseg -o ./recov    会在当前目录生成一个recov文件,里面包含了要恢复的节点信息

recov文件内容如下:(注意:这个文件不是手动创建的,而是通过gprecoverseg -o ./recov命令生成的

filespaceOrder=tj-soc-c04-csfb2:41000:/data1/gpdata/mirror/gpseg0
tj-soc-c04-csfb2:41001:/data1/gpdata/mirror/gpseg1
tj-soc-c04-csfb3:41000:/data1/gpdata/mirror/gpseg2
tj-soc-c04-csfb3:41001:/data1/gpdata/mirror/gpseg3
tj-soc-c04-csfb1:41000:/data1/gpdata/mirror/gpseg6
tj-soc-c04-csfb1:41001:/data1/gpdata/mirror/gpseg7

四、使用恢复配置文件恢复节点

$gprecoverseg -i ./recov

恢复过程中可以用gpstate -m 查看恢复状态:Resynchronizing(表示正在恢复中),Synchronized(表示恢复完毕)

五、调整Primary和Mirror

上面的情况中有Primary和Mirror兑换的情况,所以需要把他们换回来,可以用下面的命令

gprecoverseg -r

等待所有的节点都是Synchronized后,segment就恢复好了

时间: 2024-08-05 07:06:04

[原]Greenplum failed segment的恢复方法的相关文章

Eclipse默认配色的恢复方法

Eclipse默认配色的恢复方法 很多搞开发的同学一开始不喜欢默认的eclipse白底配色,去网上千辛万苦搜到了很多黑底暗色的各种eclipse配色然后import上了,之后却发现并不适合自己,想找默认的epf文件恢复默认配置却又苦于找不到.这篇文章就是为了解决这个问题而生滴! 首先要关闭eclipse,然后只需要经过简单的4步就可以恢复默认配色了 第一步,解压.setting压缩包,这个压缩包是未经改变的原配色文件,并不是epf文件: 第二步,找到eclipse的工作空间目录,也就是works

虚拟机虚拟硬盘文件丢失,通过xx-flat.vmdk恢复方法

问题现象:虚拟机虚拟硬盘文件丢失(xx.vmdk),只剩下xx-flat.vmdk文件,下面详细描述恢复方法. 1. 新建一虚拟机,不要创建硬盘2. 用ssh的方式登录host(esxi5默认没有开启,需要登录服务器开启),查找xx-flat.vmdk文件所在位置及目录,#find / -name "xxx-flat.vmdk"3. 在新虚拟机目录下创建新xxx.vmdk文件,大小要和xx-flat.vmdk文件一样大.  用ls -la查看xx-flat.vmdk文件大小  如:42

IOS 的恢复方法总结

首先需要有IOS文件,如果没有备份原文件的话,可以找个同一版本的IOS来替代. 第一种方法:X-Modem 以前我曾经尝试过一种方法,就是当Flash被删除后,启动无法进入系统,可以用X-Modem来恢复它.当时我不小心删除了一台Cisco2950交换机的Flash IOS,导致系统无法启动,在查过不少资料后得到一个结论:唯一的方法通过X-Modem来恢复.我的恢复方法如下: 1.用控制线连接交换机console口与计算机串口1,用带有xmodem功能的终端软件连接(win2000 and xp

【转】SQLServer 2008以上误操作数据库恢复方法——日志尾部备份

4号,公司的生产数据表被全部删除,目前没有找到原因,由于刚接触SQL不久,所以短时间内不会还原,也不敢动被原服务器,于是就将原服务器停掉,拷贝出里面的PPD数据库文件,留作备份:近几天在自己的电脑上尝试修复,一直没有成功,细读了一下<SQL2005技术内幕——存储引擎>了解到删除列.删除表这些操作不会直接对每一行数据进行操作,而是直接改变他们的物理指向地址的ID,专业术语我也不是很清楚,我的理解是这样的,有时间再弄清楚,不过这足以让我明白被删除的表还是存在mdf文件中,其改变的便宜地址记录在日

Cisco设备IOS的恢复方法 两种方法

如果不小心把Router或者Switch的IOS删除了,特别是Flash中的IOS和ROM中的Mini IOS都没有了的话,连启动都不行的话,有什么方法恢复它呢?答案是方法不只一种,而是两种.其实是我只知道两种:) 第一种方法:X-Modem 以前我曾经尝试过一种方法,就是当Flash被删除后,启动无法进入系统,可以用X-Modem来恢复它.当时我不小心删除了一台Cisco2950交换机的Flash IOS,导致系统无法启动,在查过不少资料后得到一个结论:唯一的方法通过X-Modem来恢复.我的

oracle 误删除表的几种恢复方法

在删除数据的时候不小心,把delete语句执行错了,把别的表给delete,而且还执行了commit!那么如何进行恢复呢,下面介绍几种恢复方法.第一种: 1.打开Flash存储的权限ALTER TABLE tableName ENABLE row movement ;2.把表还原到指定时间点flashback table tableName to timestamp to_timestamp(''2018-03-16 10:40:00'',''yyyy-mm-dd hh24:mi:ss'');后

2015-09-16 mysql 主从原理、 同步常见异常及恢复方法

1.原理 MySQL复制技术有以下一些特点:            (1)    数据分布 (Data distribution ) (2)    负载平衡(load balancing)             (3)    备份(Backups)           (4)    高可用性和容错行 High availability and failover 整体上来说,复制有3个步骤: (1)    master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,

Oracle数据库常见的误操作恢复方法(上)

实验环境:Linux6.4 + Oracle 11g 面向读者:Oracle开发维护人员 本文以Oracle自带的scott用户进行演示: 首先逻辑备份导出scott的对象数据 $ exp scott/tiger file='/u01/app/backup/scott.dmp' log='/u01/app/backup/scott.log' owner=scott; 1.误操作drop了emp表 利用表级闪回恢复,只要回收站中有就可以恢复. SQL> drop table emp; Table

ezjail服务器备份恢复方法

FreeBSD下使用ezjail管理jails虚拟机很方便,公司有多台ezjails服务器,运行n多jails虚拟机,一次硬盘故障,做了一次整机恢复,将方法归纳如下: 备份准备: 建议ezjails服务器安装2块同样大小的硬盘,一块作为备份.我是通过cron每日rsync备份需要的文件 需要备份的文件: /etc/rc.conf /etc/rc.local /etc/fstab.* /etc/crontab /usr/local/etc/ezjail/ /usr/local/etc/ezjail