资讯专栏INFORMATION COLUMN

PG_class报错 复现

IT那活儿 / 2193人阅读
PG_class报错 复现
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!! 



    本次准备复现一下之前遇到的一个错误,因为硬盘的故障导致的primary实例上的pg_class表内容缺失,会造成在master主机查询报错。

 

1

在自己的测试机创建新的数据库和表,并将psql命令进入的默认数据库改为新创建的。

如果不指定的话执行psql命令就会报错:

建表:

查看指定模式下有多少张表:

如果不确定表的模式名也可以这样,schema就是模式名。

2

复现错误,删除primary实例上pg_class表中的内容。
获取表的oid,比如a,b两表。oid字段如果不指定的话是不会出现的。
登录任意peimary节点。
标准语句:
PGOPTIONS="-c gp_session_role=utility" psql -h ip -p 端口 -d 模式名
例如本次我想登录gp1主机上的gpseg0实例:
在gp_segment_configuration表中也能查到端口:
删除之前先备份使用copy to命令,可以看到备份的是两行数据。
备份的文件是在登录的指定主机上 我登录的是gp1主机备份的文件就在gp1主机的家目录下:
需要注意的是如果没有指定oid字段,就需要加上参数指定OIDS:
删除gpseg0主机pg_class表中关于a,b两表的内容,此时在gp1主机上的pg_class表是没有a,b表的内容了,但是在master表是有的。并且此时被删除的表无法在master主机上删除。
  • master主机:
  • gp1主机:
无法删除。
其中set allow_system_table_mods=DML;是允许对元数据进行修改,假如不设置的话就会提示没有权限。

3

以上的操作是为了复现当时的错误,正常情况下遇到这样的报错需要使用gpcheckcat命令来检验数据库目录表的不一致性。
有两个选择一个是在线检查,一个是全量检查。可以根据本身业务的需求选择使用。默认的输出目录是家目录下的gpAdminLogs目录。
  • 在线检查:


nohup $GPHOME/bin/lib/gpcheckcat -O -A -p 5432 2>&1 > gpcheckcat.date +%F_%s.log &


  • 全量检查:注意全量检查需要加master的端口。


nohup $GPHOME/bin/lib/gpcheckcat -A -p5432 2>&1 > gpcheckcat.date +%F_%s.log &
可以看到刚才删除的表名和oid和segid。
接下来就是修复鉴于gp1主机上只有一个primary,所以尝试使用gp2主机primary的pg_class。
登录gp2主机:
将a,b两表的内容copy到家目录:
将文件从gp2传输到gp1:
登录gp1主机使用copy命令使用gp2主机的文件恢复并查询:
master主机查询:

 


END




本文作者:徐 瑞

本文来源:IT那活儿(上海新炬王翦团队)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129503.html

相关文章

  • PostgreSQL查询表以及字段备注

    摘要:查询所有表名称以及字段含义表名名称字段字段备注列类型查看所有表名查看表名和备注查看特定表名备注查看特定表名字段 查询所有表名称以及字段含义 select c.relname 表名,cast(obj_description(relfilenode,pg_class) as varchar) 名称,a.attname 字段,d.description 字段备注,concat_ws(,t.t...

    anonymoussf 评论0 收藏0
  • 2017年经历的那些灵异事件

    摘要:年快要过去了,回顾这一年来,在业务代码里,开发新功能占据,修复占了,在解决的这些中,大部分都是代码级别的错误,使用基本都可以解决,但其中有三个比较神奇,算得上是灵异事件了。 2017年快要过去了,回顾这一年来,在业务代码里,开发新功能占据70%,修复BUG占了30%,在解决的这些BUG中,大部分都是代码级别的错误,使用 Chrome Devtools 基本都可以解决,但其中有三个比较神...

    Markxu 评论0 收藏0
  • 我是这样搞懂一个神奇的BUG

    摘要:但是,不应该啊我们是事先有做检查的。一个请求成功返回,表示账户创建成功。自从年双十一正式上线,累计处理了亿错误事件,付费客户有阳光保险核桃编程荔枝掌门对微脉青团社等众多知名企业。 摘要: 通过分析用户的行为,才想得到为什么会出现这种情况! 前两天在BearyChat收到这样的一个报警消息: 409 ?Conflict ? 平时很少遇到这样的错误,貌似很严重的样子,吓得我赶紧查看到底发生...

    J4ck_Chan 评论0 收藏0
  • Fundebug前端JavaScript插件更新至1.8.2,修复2个小BUG

    摘要:前端异常监控插件更新至,修复了个小修复用户行为中重复记录请求的修复的为报错的这个都不会影响功能,不过为了避免造成困扰,请大家及时更新插件。 摘要: 修复2个BUG,请大家及时更新。 showImg(https://segmentfault.com/img/remote/1460000019373421?w=900&h=383); Fundebug前端异常监控服务 Fundebug是专业...

    lifesimple 评论0 收藏0
  • 一步一步搭建前端监控系统:如何定位前端线上问题?

    摘要:一直以来,前端的线上问题很难定位,因为它发生于用户的一系列操作之后。当然,这些问题并非不能克服,让我们来一起看看如何去定位线上的问题吧。地址参考一步一步搭建前端监控系统错误监控篇一步一步搭建前端监控系统接口请求异常监控篇 摘要: 记录用户行为,排查线上BUG。 作者:一步一个脚印一个坑 原文:如何定位前端线上问题(如何排查前端生产问题) Fundebug经授权转载,版权归原作者所...

    aaron 评论0 收藏0
  • 一步一步搭建前端监控系统:如何记录用户行为?

    摘要:摘要通过记录用户行为,快速复现场景。这是搭建前端监控系统的第二章,主要是介绍如何统计报错,跟着我一步步做,你也能搭建出一个属于自己的前端监控系统。 摘要: 通过记录用户行为,快速复现BUG场景。 作者:一步一个脚印一个坑 原文:搭建前端监控系统(备选)用户行为统计和监控篇(如何快速定位线上问题) Fundebug经授权转载,版权归原作者所有。 一步一步搭建前端监控系统系列博客: ...

    tolerious 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<