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

2023年 8月 12日 52.1k 0

centos7 数据库Greenplum-1.13的安装缘环境下载依赖部署安装配置及数据库初始化配置目录配置服务器地址配置用户环境变量数据库配置初始化**配置远程登录数据库**navcat连接greenplum数据库**数据库基本处理操作**异常解决方案1. 异常:configure: error: readline library not found2. 异常: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."4. 异常: /data/gpdata/master/gpseg-1 is exists5. 异常: database **** not exists6. 异常: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.[新增]7. FATAL:password authentication failed for user "gpadmin"[新增]8. FATAL:no pg_hba.conf entry for host "192.168.126.1", use gpadmin database greenplum SSL off蜚语注缘好久不见、甚是想念,这不,一段时间没见,捣鼓了个Greenplum数据库,一开始看的官方文档,太多了,配置以后还有点出问题,就在网上找些教程,还是会出很多问题,后自己一个个问题给解决掉,才算搞定了,下面分享一下。

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

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

依赖安装依赖命令:

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

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

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

systemctl display firewalld.service

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

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

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

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

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

sysctl -p

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

* soft nofile 65536* hard nofile 65536* soft nproc 131072* hard nproc 131072

创建pgadmin用户,命令:groupadd gpadminuseradd gpadmin -r -m -g gpadminpasswd gpadmin#此处输入密码:gpadmin#重复输入密码确认:gpadmin

配置免密登录,命令:

su gpadmincd ~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

配置及数据库初始化配置目录对数据库安装目录执行用户权限设置,命令:chown -R gpadmin:gpadmin /usr/local/greenplum*

在当前bash环境下读取并执行数据库目录下的greenplum_path.sh文件,命令: source /usr/local/greenplum-db-6.13.0/greenplum_path.sh

创建数据库目录并对gpadmin进行授权,命令:#创建目录mkdir /datamkdir /data/gp1mkdir /data/gp2mkdir /data/master

文件夹授权,命令:

chown -R gpadmin:gpadmin /data

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

配置服务器地址mkdir /home/gpadmin/gpconfigscd /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 gpadmincd

#编辑文件.bash_profilevim .bash_profile

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

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

#继续编辑配置文件vim .bashrcsource /usr/local/greenplum-db-6.13.0/greenplum_path.shexport MASTER_DATA_DIRECTORY=/data/master/gpseg-1export PGPORT=5432export PGUSER=gpadminexport 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=6500declare -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的密码为gpadminalter 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-devel12. 异常: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:

编辑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用户的密码为gpadminalter 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

本文来源:https://blog.csdn.net/u011561335/article/details/121889849

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论