解决GREENPLUM某些版本gprecoverseg –r失败后镜像双坏,系统无法启动的问题
开始之前,我先声明一点,参考这篇文章去操作数据库,造成丢失数据,搞瘫系统的可能性非常之高,初学者以及思路不清晰者,请关闭页面,不要再继续下去,经过一通乱搞以后,真的就没人能再帮得了你了。
先说明一下故障的来由,由于系统的BUG某些版本的GREENPLUM只要执行了gprecoverseg -r,就一定会失败,而且一定会镜像双坏,无法启动。这里说明一下,这种版本的GP镜像反转时,只能重启数据库去自动修复,不可以使用gprecoverseg –r人工修复,切记。
值得庆幸的是,只要是进入到这种反转修复失败的情况,一般来说所有镜像一定是同步的,因为如果不同步的话会报另一个错误:有部分镜像失败,无法执行gprecoverseg -r,这种情况就不会出现我们本文讨论的问题。此时虽然我们无法启动整个数据库,但是事实上MIRROR是可以作为PRIMARY启动的,只是GREENPLUM把节点的状态搞乱了。我们只要把出现问题之前的描述节点状态的系统表gp_segment_configuration恢复到镜像反转的状态,就可以启动数据库了,当然只能是手动恢复。
接下来我结合实际的数据介绍一下gp_segment_configuration 的表结构
postgres=# select * from gp_segment_configuration where address like 'sdw10-%' or address like 'sdw11-%' order by dbid ;
dbid | content | role | preferred_role | mode | status | port | hostname | address | replication_port | san_mounts
------+---------+------+----------------+------+--------+-------+-------------+---------+------------------+------------
56 | 54 | p | p | c | u | 40000 | dssln-sdw10 | sdw10-1 | 41000 |
57 | 55 | p | p | c | u | 40001 | dssln-sdw10 | sdw10-1 | 41001 |
58 | 56 | p | p | c | u | 40002 | dssln-sdw10 | sdw10-1 | 41002 |
59 | 57 | p | p | c | u | 40003 | dssln-sdw10 | sdw10-2 | 41003 |
60 | 58 | p | p | c | u | 40004 | dssln-sdw10 | sdw10-2 | 41004 |
61 | 59 | p | p | c | u | 40005 | dssln-sdw10 | sdw10-2 | 41005 |
62 | 60 | p | p | s | u | 40000 | dssln-sdw11 | sdw11-1 | 41000 |
63 | 61 | p | p | s | u | 40001 | dssln-sdw11 | sdw11-1 | 41001 |
64 | 62 | p | p | s | u | 40002 | dssln-sdw11 | sdw11-1 | 41002 |
65 | 63 | p | p | s | u | 40003 | dssln-sdw11 | sdw11-2 | 41003 |
66 | 64 | p | p | s | u | 40004 | dssln-sdw11 | sdw11-2 | 41004 |
67 | 65 | p | p | s | u | 40005 | dssln-sdw11 | sdw11-2 | 41005 |
158 | 48 | m | m | s | u | 50000 | dssln-sdw10 | sdw10-2 | 51000 |
159 | 49 | m | m | s | u | 50001 | dssln-sdw10 | sdw10-2 | 51001 |
160 | 50 | m | m | s | u | 50002 | dssln-sdw10 | sdw10-2 | 51002 |
161 | 51 | m | m | s | u | 50003 | dssln-sdw10 | sdw10-1 | 51003 |
162 | 52 | m | m | s | u | 50004 | dssln-sdw10 | sdw10-1 | 51004 |
163 | 53 | m | m | s | u | 50005 | dssln-sdw10 | sdw10-1 | 51005 |
164 | 54 | m | m | c | d | 50000 | dssln-sdw11 | sdw11-2 | 51000 |
165 | 55 | m | m | c | d | 50001 | dssln-sdw11 | sdw11-2 | 51001 |
166 | 56 | m | m | c | d | 50002 | dssln-sdw11 | sdw11-2 | 51002 |
167 | 57 | m | m | c | d | 50003 | dssln-sdw11 | sdw11-1 | 51003 |
168 | 58 | m | m | c | d | 50004 | dssln-sdw11 | sdw11-1 | 51004 |
169 | 59 | m | m | c | d | 50005 | dssln-sdw11 | sdw11-1 | 51005 |
dbid | content | role | preferred_role | mode | status | port | hostname | address | replication_port | san_mounts
dbid 和content表示数据库的ID
role 代表当前角色
preferred_role 代表首选角色,也就是原本应该出演的角色
mode='s/c/r'三个取值分别代表synced, change logging, resyncing
status='u/d'两个取值分别代表up,down。
其他字段不做解释了。
上面这个样例数据表示11节点的6个镜像子库全部被标记为DOWN了,但是事实上里边的数据是完整的,10节点的6个主用子库镜像失败,可以启动,但是启动不起来,但事实上里边的数据也是完整的只是状态标记出现了问题。
根据之前的分析,我们只要把这两个节点的镜像数据到反转状态就可以了。目标如下:
postgres=# select * from gp_segment_configuration where (address like 'sdw10-%' and preferred_role = ‘p’) or (address like 'sdw11-%' and preferred_role = ‘m’) order by dbid ;
dbid | content | role | preferred_role | mode | status | port | hostname | address | replication_port | san_mounts
------+---------+------+----------------+------+--------+-------+-------------+---------+------------------+------------
56 | 54 | m | p | s | u | 40000 | dssln-sdw10 | sdw10-1 | 41000 |
57 | 55 | m | p | s | u | 40001 | dssln-sdw10 | sdw10-1 | 41001 |
58 | 56 | m | p | s | u | 40002 | dssln-sdw10 | sdw10-1 | 41002 |
59 | 57 | m | p | s | u | 40003 | dssln-sdw10 | sdw10-2 | 41003 |
60 | 58 | m | p | s | u | 40004 | dssln-sdw10 | sdw10-2 | 41004 |
61 | 59 | m | p | s | u | 40005 | dssln-sdw10 | sdw10-2 | 41005 |
164 | 54 | p | m | s | u | 50000 | dssln-sdw11 | sdw11-2 | 51000 |
165 | 55 | p | m | s | u | 50001 | dssln-sdw11 | sdw11-2 | 51001 |
166 | 56 | p | m | s | u | 50002 | dssln-sdw11 | sdw11-2 | 51002 |
167 | 57 | p | m | s | u | 50003 | dssln-sdw11 | sdw11-1 | 51003 |
168 | 58 | p | m | s | u | 50004 | dssln-sdw11 | sdw11-1 | 51004 |
169 | 59 | p | m | s | u | 50005 | dssln-sdw11 | sdw11-1 | 51005 |
好我们正式开始:
1、 启动到维护模式:
gpstart –m
以维护方式连接到数据库
PGOPTIONS='-c gp_session_role=utility' psql -d postgres
打开系统表的维护开关
set allow_system_table_mods=DML;
2、 备份系统表:
create table mybak_segment_configuration as select * from gp_segment_configuration;
3、 修改数据到镜像反转状态:
update gp_segment_configuration set role='p',mode='s',status='u' where address like 'sdw11%' and preferred_role='m';
update gp_segment_configuration set role='m',mode='s',status='u' where address like 'sdw10%' and preferred_role='p';
\q
4、 重启数据库
gpstop –m –M fast
gpstart
5、 检查镜像,此时应该已经自动恢复到正常状态。
gpstate –m
6、 如果不同步就修一下
gprecoverseg
7、 如果镜像仍然反转就重新启动一下数据库。
gpstop –M fast
gpstart
分享:解决GREENPLUM某些版本gprecoverseg –r失败后镜像双坏,系统无法启动的问题_醉糊涂虫_新浪博客
解决GREENPLUM某些版本gprecoverseg –r失败后镜像双坏,系统无法启动的问题相关推荐
- 重装系统失败后怎么用好系统U盘启动解决?
很多朋友在第一次重装电脑系统时都会出现这样或那样的错误,导致重装系统后进不去系统,非常的被动.那么当我们遇到这种情况该怎么办呢?其实我们可以使用好系统U盘启动来解决重装系统后进不去的问题. 好系统U盘 ...
- 解决centOS7以上版本防火墙关闭失败的问题
关闭防火墙:systemctl stop firewalld.service 禁止开机自启:systemctl disable firewalld.service 查看防火墙状态:firewall-c ...
- ac9462网卡无法启动_如何解决Windows系统无法启动承载网络的问题?
原标题:如何解决Windows系统无法启动承载网络的问题? 说到无法启动承载网络,很多人都不知道如何去解决.最近有位朋友使用笔记本无线网卡创建wifi热点的时候,就出现无法启动承载网络的情况.而这种情 ...
- 解决Linux上steam更新游戏后导致版本不一致连接失败的问题
解决Linux上steam更新游戏后导致版本不一致,客户端连接失败的问题 为了与小伙伴们玩的舒服顺畅,我将游戏的服务端放在linux上,此次更新服务端遇到了问题,记录如下: 在更新具体steam游戏前 ...
- win10一直正在检查更新_教你解决“Win10系统更新失败后循环重启安装”的解决方法...
众所周知,win10系统是目前市场占有率最大的操作系统,会有大量人员针对此系统查找bug,确保用户正常使用,所以经常会有更新需要安装.但是有些用户反馈更新经常出现失败,每次开启系统会出现提示重启安装更 ...
- 思科模拟器8.1版本身份验证失败禁用网络解决
思科模拟器8.1版本身份验证失败禁用网络解决 本篇文章为解决思科模拟器8.1等版本会出现的打开软件需要验证才能进入的方法. 思科在8.-版本后会出现身份验证问题,当联网后会自动选择进行身份验证,若你和 ...
- 解决谷歌浏览器:Flash插件初始化失败,请更新您的FlashPlayer版本之后重试!
解决谷歌浏览器:Flash插件初始化失败,请更新您的FlashPlayer版本之后重试! chrome浏览器使用百度编辑器给网站上传图片时,提示"flash插件初始化失败,请更新您的flas ...
- Mac的最新版本JDK下载失败的解决方法
Mac的最新版本JDK下载失败的解决方法 设置MAC下的JAVA工具,先配置最新JDK8,当然首选进入官网下载 大小是两百多兆,自己在国内下载结果只有5K,没有完成全部下载,然后测试很多次也是这样,后 ...
- 解决gitee提交大文件时,commit成功,push失败后无法再push成功问题
我在提交一个大约50MB的文件是遇到的一个问题,代码无法push成功.报错信息如下: 此后,我在提交几KB大小的文件也push失败!!!报错信息也如上.在百度上找了很多方法依旧无法解决,最终找到一个回 ...
- 微信小程序——解决上传并部署云函数时报错ResourceNotFound.Function, 未找到函数版本,请创建后再试。 (7f2d9d2d-5eac-4575-9n57-acd66cfa587g
1. 上传部署我们的云函数 2. 报错 错误信息为:Error: ResourceNotFound.Function, 未找到函数版本,请创建后再试. (7f2d9d2d-5eac-4575-9b57 ...
最新文章
- 自己动手实现OpenGL!
- 求马鞍点java_二维数组马鞍点求解算法
- 从零开始学习docker(十六)Swarm mode 创建集群
- 面向区块链的高效物化视图维护和可信查询论文学习
- 小鹏N5申报图曝光 搭载155KW电机、NEDC 600公里与P5相同
- ajax 请求_你了解前端出现Ajax跨域请求的原因吗?
- MySQL 账户名与密码修改!
- 词汇的积累 —— 反义词、同义词
- 3.30华为笔试第三题
- 微信文章互阅python脚本,一天可刷120分
- 日文简历 模板
- win10怎么弄c语言,win10系统下搭建C语言开发环境方法步骤
- Unity Editor资源重命名
- Spring 创建切面
- 最新变态传奇android,新开超级变态传奇_刚开一秒的变态传奇手游私服 18183Android游戏频道...
- 公司招了个漂亮女程序员是种什么样的体验?
- 一文讲懂什么是 vlan、三层交换机、网关、DNS、子网掩码、MAC地址
- 节拍器在学习音乐过程中起到什么作用?-小星星节拍器怎么样?
- 计算机专业的在职考研,2019年深造北京航空航天大学在职研究生计算机专业在职考研科目是什么...
- 南京小米二面 全程58分钟
热门文章
- mac parallels desk 网络初始化失败
- 公交查询系统Android源代码,公交查询源码
- 基于python的电影在线_利用python实现电影推荐
- python凯撒密码实验报告_凯撒密码的python实现
- HTML+CSS静态页面网页设计作业——咖啡网站pc端带轮播js (5页) 学生酒水网页作业, 生鲜水果网页作业成品, 零食小吃网页作 美食网页业模板
- 让我们努力的学习ruby吧
- ping 不通 华为三层交换机vlan_华为三层交换机VLAN间路由怎么设置
- 浏览器漏洞种类复杂多样
- 浏览器内核以及渲染过程
- QQ揭秘:如何实现托盘闪动消息提醒?【低调赠送:QQ高仿版GG 4.1 最新源码】...