《Greenplum企业应用实战》一2.2 安装Greenplum的常见问题

简介:

本节书摘来自华章出版社《Greenplum企业应用实战》一书中的第2章,第2.2节,作者 何勇 陈晓峰,更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.2 安装Greenplum的常见问题

安装Greenplum最常见的错误就是环境变量设置错误,网卡配置错误,或者是每个Segment的通道或网络没有打通。
如果子节点的操作系统环境不一样,也可能会导致各种各样的错误。所以在搭建环境的时候,要求每一台机器的配置基本一样,方便以后管理与维护,避免一些奇怪的问题。下面将介绍几个常见的报错及处理方法。

2.2.1 /etc/hosts配置错误

现在来看一个奇怪的报错SQL,查询一张普通表时报如下错误,但是查询数据字典又不报错:

testDB=# select * from test002;
WARNING:  Greenplum Database detected segment failure(s), system is reconnected
WARNING:  Greenplum Database detected segment failure(s), system is reconnected
ERROR:  No primary gang allocated (cdbgang.c:1635)
testDB=# select count(1) from pg_class;
 count 
-------
   633
(1 row)

报这个错误是因为Master连接不到Segment。如果原先是一个正常的系统,突然报错了,就要想想是否修改了什么导致的。在这个例子中,是因为修改了/etc/hosts,不小心将:

10.20.151.8     inc-dw-hadoop-151-8 sdw1

改成了:

10.20.151.18     inc-dw-hadoop-151-8 sdw1

Master连接Segment的时候连接不上,就报了这个错误,但是pg_class是每一个节点都有的,而Master上的数据只需要在Master上查询,不用连接Segment,所以没有报错,只需将配置修改回来即可。
有些时候,也可以利用这个方法来判断一个操作是否需要与Master交互,比如生成执行计划(关于执行计划的详细内容可阅读第5章)是否只在Master上执行,与Segment有没有交互:

testDB=# explain select * from test002;
WARNING:  Greenplum Database detected segment failure(s), system is reconnected
WARNING:  Greenplum Database detected segment failure(s), system is reconnected
ERROR:  No primary gang allocated (cdbgang.c:1635)
testDB=# explain select count(1) from pg_class;
                            QUERY PLAN                            
------------------------------------------------------------------
 Aggregate  (cost=39.20..39.21 rows=1 width=0)
   ->  Seq Scan on pg_class  (cost=0.00..20.48 rows=7488 width=0)
(2 rows)

这样就可以看出,生成分布式执行计划也是需要与Segment进行交互的。那么为什么下面生成pg_class的执行计划不会报错呢?这是因为表test002是业务数据,数据分布在Segment上,生成的执行计划是分布式的,而pg_class是保存表元数据信息的数据字典,数据保存在Master上,生成的执行计划是单机的,详见第5章执行计划。
在Greenplum 4.3中,这个报错是:ERROR: Unexpected internal error (cdbgang.c:1622)。报错的内容与原因都是一样的,只是在显示上Greenplum 4.1与Greenplum 4.3有所区别。
在Greenplum 3.3.x版本中,如果修改了Master的/etc/hosts配置,将:

127.0.0.1    localhost  localhost.localdomain

错写成:

127.0.0.1    localhost  localhost.localdomain mdw

那么还会有如下的奇怪现象发生。
在创建表的时候Master没有报错,说明Master与Segment是可以通信的,但是查询这张表的时候就会报如下的错误:

testDB=# create table aaa(like bbb);
NOTICE:  Table doesn't have 'distributed by' clause, defaulting to distribution columns from LIKE table
CREATE TABLE
testDB =# select * from bbbb;
ERROR:  Interconnect timeout: Unable to complete setup of all connections within time limit.
DETAIL:  Completed 2 of 6 incoming and 0 of 0 outgoing connections.
gp_interconnect_setup_timeout = 20 seconds.

错误提示已经超时了,建议将超时时间设置大一点,但是修改相关参数还是没有用。其实是因为Segment在连接到Master的时候使用的IP是127.0.0.1,指定到了本地机器,导致Segment连接不到Master,故报出这个错误。将Master连接到Segment就没有问题,因此将对应的/etc/hosts修改回来就可以了。
将/etc/hosts改回来之后,进行查询后还是报同样的错,这是因为当前连接还没有生效,要退出当前的session,重新连接Greenplum才行。
Greenplum内部会有很多的网络通信交互,因此建议将操作系统的防火墙关闭,避免各种奇怪的问题,其中防火墙就会引起本节介绍的在Greenplum 3.3.x版本中遇到的问题。

2.2.2 MASTER_DATA_DIRECTORY设置错误

没有设置MASTER_DATA_DIRECTORY,会报这样的错误:

[gpadmin@dw-greenplum-1 ~]$ gpstop 
20120110:11:16:52:gpstop:dw-greenplum-1:gpadmin1-[INFO]:-Starting gpstop with args: ''
20120110:11:16:52:gpstop:dw-greenplum-1:gpadmin1-[INFO]:-Gathering information and validating the environment...
20120110:11:16:52:gpstop:dw-greenplum-1:gpadmin1-[CRITICAL]:-gpstop failed. (Reason='Environment Variable MASTER_DATA_DIRECTORY not set!') exiting...

这样会导致MASTER_DATA_DIRECTORY参数的目录设置错误:

[gpadmin@dw-greenplum-1 ~]$ echo $MASTER_DATA_DIRECTORY 
/home/gpadmin/gpdata/gpmaster/gpseg-1
[gpadmin@dw-greenplum-1 ~]$ export MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/gpmaster/gpseg1
[gpadmin@dw-greenplum-1 ~]$ gpstop 
20120110:11:19:43:gpstop:dw-greenplum-1:gpadmin-[INFO]:-Starting gpstop with args: 
20120110:11:19:43:gpstop:dw-greenplum-1:gpadmin-[INFO]:-Gathering information and validating the environment...
20120110:11:19:43:gpstop:dw-greenplum-1:gpadmin-[CRITICAL]:-gpstop failed. (Reason='[Errno 2] No such file or directory: '/home/gpadmin/gpdata/gpmaster/gpseg1/postgresql.conf'') exiting...

在初始化数据库的时候要多注意环境变量的设置,如果环境变量设置不当,很容易造成数据库初始化错误。

相关文章
|
存储 消息中间件 SQL
实战干货|自研数据存储迁移MySQL实战
本篇聊聊公司自研数据存储迁移到MySQL过程中的技术选型、技术方案设计。围绕数据层进行的实时、离线数据链路进行迁移同步,不再完全依靠应用层的繁重设计,减轻心智负担。最后简单对项目做了反思和建议。
157 0
|
SQL 存储 弹性计算
基于云原生数据库 PolarDB for PostgreSQL 分布式开源项目实现序列号生成和性能调优赛题解析 | 学习笔记
快速学习基于云原生数据库 PolarDB for PostgreSQL 分布式开源项目实现序列号生成和性能调优赛题解析
基于云原生数据库 PolarDB for PostgreSQL 分布式开源项目实现序列号生成和性能调优赛题解析 | 学习笔记
|
SQL 存储 Oracle
阿里云PostgreSQL_开发实践_3 | 学习笔记
简介:快速学习阿里云PostgreSQL_开发实践_3
118 0
阿里云PostgreSQL_开发实践_3 | 学习笔记
|
SQL 存储 NoSQL
Greenplum应用最佳实践
Greenplum分布式分析数据库 通用操作的最佳实践。持续更新
1421 0
Greenplum应用最佳实践
|
SQL 存储 关系型数据库
【学习资料】第2期PostgreSQL、Greenplum 技术+108个场景结合最佳实践《如来神掌》
大家好,这里是PostgreSQL、Greenplum 《如来神掌》 - 目录 - 珍藏级
【学习资料】第2期PostgreSQL、Greenplum 技术+108个场景结合最佳实践《如来神掌》
|
SQL 安全 固态存储
【学习资料】第18期快速入门PostgreSQL应用开发与管理 - 8 PostgreSQL 管理
大家好,这里是快速入门PostgreSQL应用开发与管理 - 8 PostgreSQL 管理
12725 0
|
安全 关系型数据库 Linux
【学习资料】第11期快速入门PostgreSQL应用开发与管理 - 1 如何搭建一套学习、开发PostgreSQL的环境
大家好 ,这里是快速入门PostgreSQL应用开发与管理 - 1 如何搭建一套学习、开发PostgreSQL的环境
|
存储 关系型数据库 物联网
数据库选型十八摸 之 PostgreSQL - 致 架构师、开发者
标签 PostgreSQL , 数据库特性 , 数据库应用场景分析 , 数据库选型 背景 数据库对于一家企业来说,相比其他基础组件占据比较核心的位置。 有很多企业由于最初数据库选型问题,导致一错再错,甚至还有为此付出沉痛代价的。
13691 1
|
网络安全 数据库 索引
《Greenplum5.0 最佳实践》 迁移数据使用Gptransfer
使用 gptransfer 完成 GPDB 集群间数据迁移任务
5387 0