zoukankan      html  css  js  c++  java
  • pg_dump 备份greenplum db 报错退出

    今天用pg_dump 备份greenplum 数据库的ddl 的时候,遇到一个其他的错误,记录一下。

    执行备份命令:

    [gpadmin@gpmdw tmp]$ pg_dump -Fp --gp-syntax  -s -f ./pgdump_output.sql testdb1
    pg_dump: query to obtain distribution policy of table "dim_org" returned no data
    

     使用-v 参数,查看详细出错信息,重新执行

    [gpadmin@gpmdw tmp]$ pg_dump -Fp --gp-syntax -v -s -f ./pgdump_output.sql testdb1
    20171121:18:43:37|pg_dump-[INFO]:-reading schemas
    20171121:18:43:37|pg_dump-[INFO]:-reading user-defined functions
    20171121:18:43:37|pg_dump-[INFO]:-reading user-defined types
    .....
    20171121:18:43:37|pg_dump-[INFO]:-reading constraints
    20171121:18:43:37|pg_dump-[INFO]:-reading triggers
    pg_dump: reading dependency data
    pg_dump: saving encoding = UTF8
    pg_dump: saving standard_conforming_strings = off
    pg_dump: saving database definition
    pg_dump: query to obtain distribution policy of table "dim_org" returned no data
    pg_dump: *** aborted because of error
    [gpadmin@gpmdw tmp]$ 

    开始怀疑是dim_org 这张表有问题,经过检查,dim_org 很正常,没有任何问题;

    testdb1=# d public.dim_org
               Table "public.dim_org"
     Column |          Type          | Modifiers 
    --------+------------------------+-----------
     orgid  | integer                | 
     name   | character varying(100) | 
    Distributed by: (orgid)
    
    testdb1=# 

    后来再检查数据库日志,发现 pg_dump 是执行如下SQL来查询表的表的分布键的:

    SELECT attrnums from pg_namespace as n, pg_class as c, gp_distribution_policy as p WHERE c.relname = 'dim_org' AND n.nspname='public' AND c.relnamespace=n.oid AND c.oid = p.localoid;

    而我的数据库testdb1 存在一张测试表  public.pg_class, 里面的数据为空,导致上面的SQL执行结果为空。所以报错退出;
    把public.pg_class 修改为public.pg_class2 之后,重新执行pg_dump ,可以正常备份了。

    以后还是不要再public 下创建和系统表同名的表了,这个问题又搞了一个上午。

  • 相关阅读:
    深度学习框架caffe在macOS Heigh Sierra上安装过程实录
    关于MacOS升级10.13系统eclipse菜单灰色无法使用解决方案
    Struts2中的OGNL详解
    JAR包介绍大全用途作用详解JAVA
    使用SQLQuery 在Hibernate中使用sql语句
    Spring整合Struts的两种方式介绍
    springMVC使用@ResponseBody返回json
    springMVC controller配置方式总结
    安装GitLab出现ruby_block[supervise_redis_sleep] action run
    Mac系统下源码编译安装MySQL 5.7.17
  • 原文地址:https://www.cnblogs.com/yhnxuhbgx/p/7878156.html
Copyright © 2011-2022 走看看