centos7 数据库 Greenplum 的单机安装及异常解决方案

好久不见、甚是想念,这不,一段时间没见,捣鼓了个Greenplum数据库,一开始看的官方文档,太多了,配置以后还有点出问题,就在网上找些教程,还是会出很多问题,最后自己一个个问题给解决掉,才算搞定了,下面分享一下。

环境

注意,Linux服务器内存>4G,会提示内存不足

配置详情
系统Linux.el7.x86_64
部署包greenplum-db-6.13.0-rhel7-x86_64

下载

首先要下载安装包,下载地址:

位置下载地址
github(国内网速较慢)greenplum-db-6.13.0-rhel7-x86_64.rpm
csdngreenplum-db-6.13.0-rhel7-x86_64.rpm

依赖

安装依赖命令:

yum install apr apr-util bash bzip2 curl krb5 libcurl libevent libxml2 libyaml zlib openldap openssh openssl openssl-libs perl readline rsync R sed tar zip

部署

  1. 关闭防火墙,命令:
systemctl stop firewalld.service

如果要永久关闭,执行命令:

systemctl display firewalld.service
  1. 添加系统配置,使用vi /etc/sysctl.conf命令编辑,添加系统配置,具体内容:
net.ipv4.ip_forward = 0
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 1
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.sem = 250 64000 100 512
kernel.shmmax = 810810728448 # kernel.shmmax = kernel.shmall * PAGE_SIZE 
kernel.shmmni = 4096
kernel.shmall = 197951838	#kernel.shmall = _PHYS_PAGES / 2 # See Shared Memory Pages
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.core.netdev_max_backlog = 10000
vm.overcommit_memory = 2
net.ipv4.conf.all.arp_filter = 1

官方内容(太多了,没用这个):

#官方配置:
# kernel.shmall = _PHYS_PAGES / 2 # See Shared Memory Pages
kernel.shmall = 197951838
# kernel.shmmax = kernel.shmall * PAGE_SIZE 
kernel.shmmax = 810810728448
kernel.shmmni = 4096
vm.overcommit_memory = 2 # See Segment Host Memory
vm.overcommit_ratio = 95 # See Segment Host Memory

net.ipv4.ip_local_port_range = 10000 65535 # See Port Settings
kernel.sem = 500 2048000 200 4096
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.conf.all.arp_filter = 1
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
vm.swappiness = 10
vm.zone_reclaim_mode = 0
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.dirty_background_ratio = 0 # See System Memory
vm.dirty_ratio = 0
vm.dirty_background_bytes = 1610612736
vm.dirty_bytes = 4294967296

修改后,执行sysctl -p进行刷新。

sysctl -p
  1. 系统资源限制配置,执行vi /etc/security/limits.conf命令添加以下内容:
vi /etc/security/limits.conf

* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072 
  1. 创建pgadmin用户,命令:
groupadd gpadmin
useradd gpadmin -r -m -g gpadmin
passwd gpadmin
#此处输入密码:gpadmin
#重复输入密码确认:gpadmin

配置免密登录,命令:

su gpadmin
cd ~
ssh-keygen -t rsa
#对ip 192.168.126.138 设置免密登录
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.126.138
#此处有提示,直接回车就行

安装

可以通过两种方式进行安装,一种是通过yum命令安装,一种是通过rpm命令安装,如下:

#进入管理员帐号
su root
#切换到安装包所在目录(我下载的安装包是放在/opt下面的)
cd /opt

通过rpm安装部署包(我是使用这种方式):

#默认目录安装(初学者推荐):
rpm --install greenplum-db-6.13.0-rhel7-x86_64.rpm
#指定安装目录安装
rpm --install greenplum-db-6.13.0-rhel7-x86_64.rpm --prefix=/usr/local/greenplum-db

通过yum 安装部署包(这种会自动下载依赖,因为下载时间比较长,所以没选择这种):

#执行安装命令:
yum install greenplum-db-6.13.0-rhel7-x86_64.rpm

配置及数据库初始化

配置目录

  1. 对数据库安装目录执行用户权限设置,命令:
chown -R gpadmin:gpadmin /usr/local/greenplum*
  1. 在当前bash环境下读取并执行数据库目录下的greenplum_path.sh文件,命令:
 source /usr/local/greenplum-db-6.13.0/greenplum_path.sh
  1. 创建数据库目录并对gpadmin进行授权,命令:
#创建目录
mkdir /data
mkdir /data/gp1
mkdir /data/gp2
mkdir /data/master

文件夹授权,命令:

chown -R gpadmin:gpadmin /data

新建pg数据库文件夹,执行命令创建并进入此目录:

配置服务器地址

mkdir  /home/gpadmin/gpconfigs
cd /home/gpadmin/gpconfigs

创建文件配置文件,并输入本机ip,命令:

vi hostfile_exkeys
#输入以下内容
192.168.126.138

vi hostfile_gpinitsystem
#输入以下内容
192.168.126.138

执行授权命令:

chown -R gpadmin:gpadmin /home/gpadmin/gpconfigs

配置用户环境变量

修改gpadmin用户的环境变量,命令如下:

#切换到gpadmin用户
su  gpadmin
cd 

#编辑文件.bash_profile
vim .bash_profile

#插入以下内容
source /usr/local/greenplum-db-6.13.0/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/data/master/gpseg-1
MASTER_HOSTNAME=localhost
export PGPORT=5432
export PGUSER=gpadmin
export PGDATABASE=hdw

#保存后刷新执行
source /home/gpadmin/.bash_profile

#继续编辑配置文件
vim .bashrc
source /usr/local/greenplum-db-6.13.0/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/data/master/gpseg-1
export PGPORT=5432
export PGUSER=gpadmin
export PGDATABASE=hdw

#保存后执行
source /home/gpadmin/.bashrc

#执行gpssh同步时间(单机部署好像没必要,没试过,有试过的可以留言下)
gpssh-exkeys -f /home/gpadmin/gpconfigs/hostfile_exkeys

数据库配置

复制数据库配置文件,命令如下:

#拷贝文件
cp /usr/local/greenplum-db-6.13.0/docs/cli_help/gpconfigs/gpinitsystem_config  /home/gpadmin/gpconfigs

配置命令如下:

vim /home/gpadmin/gpconfigs/gpinitsystem_config

#配置数据目录
PORT_BASE=6500
declare -a DATA_DIRECTORY=(/data/gp1 /data/gp2)
#配置主机名称
MASTER_HOSTNAME=localhost
#配置数据库名称
DATABASE_NAME=hdw
#配置集群列表
MACHINE_LIST_FILE=/home/gpadmin/gpconfigs/hostfile_gpinitsystem

初始化

执行完毕以后执行数据库初始化,命令如下:

#初始化
gpinitsystem -c /home/gpadmin/gpconfigs/gpinitsystem_config

#命令中间会有个确认,输入Y就行
Continue with Greenplum creation Yy/Nn>   Y

如果还有其他的yes/no的提示,选择yes,如果提示输入密码,那就是你的ssh免密登录配置失败,就直接输入密码(会输入很多次),如果嫌弃繁琐,那就重新配置一下上面的免密登录

初始化结束以后,数据库就在5432端口启动了,大功告成,如果初始化失败,就看下最后的异常解决方案,我罗列了大部分的异常解决方案,都是自己碰到的,苦了我…

执行完以后,可以用gpadmin用户登录

配置远程登录数据库


#此处使用root用户进行编辑
su root

vi /data/master/gpseg-1/pg_hba.conf

#输入以下内容
host    all    all     0.0.0.0/0    md5

#注:最后一个如果是md5,表示密码登录,trust 表示免密登录

navcat连接greenplum数据库

有回复说让另外搞一个navcat连接greenplum数据库的教程,我想着这个不是太复杂,就在这里添加上吧。
在我们启动服务以后,点击连接,选择postgreSQL,如图:
在这里插入图片描述

然后输入我们gp数据库的服务器ip,输入端口(默认5432),用户名及密码,输入完成以后,点击测试,提示连接成功即可。如下:
在这里插入图片描述
另外还有一些异常及解决方案,我放到下面的异常解决方案里面,连接失败的同学可以参考。

数据库基本处理操作

直接上命令,中间会加一些注释,就不在这里多说了,走起:


#切换到gpadmin用户
su gpadmin

#执行此处进入数据库命令行
psql

#完整命令:
psql -d gpdatabase -h 127.0.0.1 -p 5432 -U gpadmin

#修改gpadmin的密码为gpadmin
alter role gpadmin with password 'gpadmin'; 

#创建gpuser用户
CREATE USER gpuser WITH PASSWORD 'gpuser';

#创建gpdb数据库
CREATE DATABASE gpdb OWNER gpuser;

#对gpuser授予gpdb 的所有权限
GRANT ALL PRIVILEGES ON DATABASE gpdb  TO gpuser;

如果有任何问题,欢迎留言,我继续添加异常解决方案。

异常解决方案

1. 异常:configure: error: readline library not found

解决方案:缺少readline-devel依赖,执行以下命令安装:

yum install -y readline-devel

2. 异常:PostgreSQL’s request for a shared memory segment exceeded available memory, swap space, or huge pages. To reduce the request size (currently 234802044 bytes)

**解决方案:**这种情况下,是内存不足引起的,增加电脑内存吧,当然,内存足够大的话,就重启下,可能被其他服务占用了大量内存。

3. 异常:“could not bind IPv6 socket: Address already in use”,“Is another postmaster already running on port 6000? If not, wait a few seconds and retry.”

解决方案:这种情况一般是6000端口占用的问题,6000端口是X11的占用端口,会出现端口冲突。如果按照我的教程来,就能看到我把端口设置成了6500,解决方案就是修改gpinitsystem_config中的6000端口改成别的端口。

4. 异常: /data/gpdata/master/gpseg-1 is exists

解决方案::文件夹已存在,这种异常通常存在于重新安装的时候,或者在安装前已经安装过gp库了,删除相关的文件夹即可,如果按照我的教程来,那就执行以下命令对初始化文件进行清理:

 rm -rf /data/master/gpseg-1
 rm -rf /data/gp1/* 
 rm -rf /data/gp2/*

5. 异常: database **** not exists

解决方案: 初始化时默认数据库配置不对导致的,两种解决方案具体解决如下:

此处列出方案1

  1. 编辑gpinitsystem_config文件,查看DATABASE_NAME的具体参数:
#首先
vi gpconfigs/gpinitsystem_config 

使用找到的参数登录,命令:

psql -d 数据库名称 -h 127.0.0.1 -p 5432 -U gpadmin

这样就能进入数据库了,进入以后就对数据库进行操作了,包括数据库的创建等。。

方案二就是把上面的配置统一,将上文中gpinitsystem_config文件中的参数DATABASE_NAME.bashrc.bash_profile里面的配置参数PGDATABASE一致即可。(未测试,自行测试吧)

6. 异常:could not map anonymous shared memory: 无法分配内存","This error usually means that PostgreSQL’s request for a shared memory segment exceeded available memory, swap space, or huge pages. To reduce the request size (currently 170118012 bytes), reduce PostgreSQL’s shared memory usage, perhaps by reducing shared_buffers or max_connections.

**解决方案:**查看日志文件(根据打印日志确定是哪个日志文件),如图我们查看/home/gpadmin/gpAdminLogs/gpinitsystem_20211213.log文件:
在这里插入图片描述

看到输出信息是could not map anonymous shared memory: 无法分配内存",如图:
在这里插入图片描述
这种情况和异常2类似内存不足引起的,增大内存释放内存(重启服务器或关闭一些不必要的程序)

[新增]7. FATAL:password authentication failed for user “gpadmin”

**解决方案:**在使用客户端连接数据库时提示此异常,原因是密码错误,最好手动输入验证密码问题,如果实在记不起来,可以在服务器上通过修改命令重新设置密码,命令如下:

#设置gpadmin用户的密码为gpadmin
alter user gpadmin with password 'gpadmin';

[新增]8. FATAL:no pg_hba.conf entry for host “192.168.126.1”, use gpadmin database greenplum SSL off

**解决方案:**此类异常是因为我本次文章所使用的数据库是在虚拟机中部署的,所以ip并不是我的本机ip,而是识别为了网关地址,这种情况我们需要修改pg_hba.conf配置(我相信大部分同学都不记得这个文件在哪里,我们可以通过find命令进行搜索,命令也贴在下面),具体修改如下:

#搜索配置文件
[root@localhost ~]# find / -name pg_hba.conf
/data/gp1/gpseg0/pg_hba.conf
/data/gp2/gpseg1/pg_hba.conf
/data/master/gpseg-1/pg_hba.conf
#编辑master节点下的配置文件:
[root@localhost ~]# vim /data/master/gpseg-1/pg_hba.conf
#在IPv4 local connections下面添加以下内容:
host    all             all              192.168.126.1/32            md5

其中 192.168.126.1代表我本机地址,修改后使用以下命令重新加载配置文件:

#1.切换至gpadmin用户
su gpadmin
#2.重新加载配置文件
gpstop -u

操作完成后通过客户端连接,可以看到连接成功的提示,如果还不行,尝试修改其他两个子节点下的配置文件吧。

有问题可以在评论区留言,看到的话我会添加异常解决方案,如果以后异常解决方案太多,为了方便阅读,我会考虑重新开一篇文章,专门来收录异常解决方案。

蜚语

没有什么是永垂不朽的,除了爱情;没有什么是亘古不灭的,除了信仰。而爱情便是我的信仰

官网教程地址:https://docs.greenplum.org/6-13/install_guide
其他参考地址:https://blog.csdn.net/WinterspringLF/article/details/118915790

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 23
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰夏之夜影

赠人玫瑰,手留余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值