如何解决Greenplum master node与seg node元数据不一致
来源:互联网 发布:万户网络怎样 编辑:程序博客网 时间:2024/06/05 22:39
作为分布式数据库,Greenplum的元数据经常(是真的,经常遇到)会出现些错误,典型的一个是master node与seg node元数据不一致,本文结合一个具体错误,介绍下解决的办法。
现象
使用gpcheckcat -p 5432 databasename检查数据库时,将报出类似如下的输出:
Relation oid: 12345678Relation name: ns1.table1 Name of test which found this issue: missing_extraneous_pg_class Name of test which found this issue: missing_extraneous_pg_attribute Name of test which found this issue: missing_extraneous_pg_type Missing relation metadata for {'oid':12345678} on master (mdw:5432) seg65 (sdw20:40000) seg66 (sdw20:40001) seg67 (sdw20:40002) seg68 (sdw20:40003) seg69 (sdw21:40000) seg70 (sdw21:40001) seg71 (sdw21:40002) seg72 (sdw21:40003) seg73 (sdw22:40000) seg74 (sdw22:40001) seg75 (sdw22:40002) seg76 (sdw22:40003) seg77 (sdw23:40000) seg78 (sdw23:40001) seg79 (sdw23:40002) seg80 (sdw23:40003) seg81 (sdw24:40000) seg82 (sdw24:40001) seg83 (sdw24:40002) seg84 (sdw24:40003) seg85 (sdw25:40000) seg86 (sdw25:40001) seg87 (sdw25:40002) seg88 (sdw25:40003)
分析
这个错误表示在master node以及错误中指出24个seg node(查询gp_segment_configuration元数据表会发现这些seg node都是primary node)中都已经没有了ns1.table1(relname=table1,oid=12345678)这个表的定义,也就是说pg_class,pg_attribute,pg_type这些元数据表都已经没有了此relation的定义。此时,尝试在master上drop ns1.table1会发现没有这个表。但是,剩余的seg node上仍然存在这个relation的定义。可以通过查询gp_segment_configuration找到剩余segment node。
解决
基本思路当然就是将残余的表定义drop掉。首先,需要从gp_segment_configuration中查到所有没在错误中列出的primary segment node的hostname和node;然后,分别登陆到这些segment node上drop掉ns1.table1。具体过程如下:
- root登陆master host
- 切换到Greenplum的管理员用户,比如gpadmin:
su - gpadmin
- 查找所有primary segment node:
psql -d databasename -c "select hostname,port from gp_segment_configuration where role='p';"
- 找到所有没在错误信息中列出的hostname+port,按照如下格式编写语句:
PGOPTIONS='-c gp_session_role=utility' psql -h hostname -p port -d databasename -c 'drop table if exists ns1.table1;'
- 在gpadmin用户下执行上一步生成的所有命令
- 找到所有没在错误信息中列出的hostname+port,按照如下格式编写语句:
PGOPTIONS='-c gp_session_role=utility' psql -h hostname -p port -d databasename -c 'select * from pg_class where oid=12345678;'
- 在gpadmin用户下执行上一步生成的所有命令,确定每一条命令返回的都是0条记录
2 1
- 如何解决Greenplum master node与seg node元数据不一致
- 如何解决Greenplum中无法通过标准命令修复的元数据错误
- 元数据不一致解决的一个实例
- 元数据不一致解决的一个实例
- ubifs- Master Node
- ubifs - master node
- Kubernetes对象之Nodes和 Master与Node的通信
- No known master node问题
- ElasticSearch: no known master node
- node实现D3数据交互与使用
- Node * a 与Node* &a
- node
- Node
- Node
- Node
- Node
- node
- node
- python入门系列(4) -- python常见应用
- 黑马程序员-------------反射
- JavaScript特效实例007-为弹出的窗口加入关闭按钮
- 关于初次在myeclipse中配置tomcat
- NFS挂载的时候需要开通那几个端口的访问权限。
- 如何解决Greenplum master node与seg node元数据不一致
- Trace命令的实现
- wxWidgets中OpenGL渲染环境的配置,主要解决不能显示物体阴影问题
- hive实例讲解实现in和not in子句
- POJ 1469 COURSES
- 可变参数列表的实现--平均值
- PowerDesigner15.1使用技巧(二)--如何找到官方资源
- Spring MVC之@RequestBody, @ResponseBody 详解
- 表格