如何解决Greenplum master node与seg node元数据不一致

作为分布式数据库,Greenplum的元数据经常(是真的,经常遇到)会出现些错误,典型的一个是master node与seg node元数据不一致,本文结合一个具体错误,介绍下解决的办法。

现象

使用gpcheckcat -p 5432 databasename检查数据库时,将报出类似如下的输出:

Relation oid: 12345678
Relation 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条记录
Greenplum 集群之间同步数据方法及性能.....................................................................................1 1 概述.................................................................................................................................................2 2 相同集群相同数据库同 SCHEMA 之间同步数据....................................................................2 2.1 查看原始表的大小行数结构......................................................................................... 2 2.2 同步语句..............................................................................................................................2 2.3 查看 cpu 内存的使用情况..............................................................................................3 2.3.1 查看 Master CPU 内存使用情况.........................................................................3 2.3.2 查看数据节点的 CPU 使用情况..............................................................................3 2.3.3 查看数据节点的内存磁盘使用情况..................................................................6 2.4 查看耗时表的大小..........................................................................................................7 3 相同集群同数据库之间同步数据.............................................................................................8 3.1 使用 pg_dum 方式同步数据..............................................................................................8 3.1.1 查看原始表的信息...................................................................................................8 3.1.2 把数据下载到磁盘...................................................................................................9 3.1.2.1 下载数据语句............................................................................................... 9 3.1.2.2 查看 Master 节点详细信息.........................................................................9 3.1.3 把数据导入到数据库中........................................................................................ 10 3.1.3.1 导入数据库语句......................................................................................... 10 3.1.3.2 查看 Master 节点的详细信息...................................................................11 3.1.3.3 查看数据节点的详细信息.........................................................................11 3.1.4 验证数据的准确性................................................................................................ 13 3.1.5 pg_dump 同步数据总结........................................................................................13 3.2 使用 dblink 同步数据........................................................................................................13 3.2.1 dblink 同步相同集群同数据库的数据.............................................................13 3.2.1.1 同步语句......................................................................................................13 3.2.1.2 查看 Master 节点的详细信息...................................................................15 3.2.1.3 查看数据节点的详细信息.........................................................................15 3.2.2 验证数据的准确性................................................................................................ 17 3.2.3 dblink 使用总结......................................................................................................17 3.3 使用 gptransfer 同步数据.................................................................................................17 3.3.1 gptransfer 介绍.......................................................................................................17 3.3.2 gptransfer 命令参数介绍.......................................................................................18 3.3.3 查看集群及硬件信息............................................................................................ 19 3.3.4 同集群之间同步数据............................................................................................ 19 3.3.4.1 查看表的详细信息..................................................................................... 19 3.3.4.2 进行表数据同步......................................................................................... 19 3.3.4.3 查看硬件详细信息..................................................................................... 21 3.3.4.4 查看数据的准确性..................................................................................... 23 3.3.4.5 使用 gptransfer 总结...................................................................................23 3.3.5 同集群之间同步数据........................................................................................ 24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值