【小白】Greenplum集群数据库搭建指南

2023-03-27 00:00:00 数据库 执行 命令 节点 安装

【小白】Greenplum集群数据库搭建指南
已搭建5次,参照网上教程3次,后续整理本教程,参照本教程完成2次,可放心使用!!

一、环境说明
本次搭建共两台Linuex服务器,一台Master节点,二台Segment节点,其中sdw2为master的standby(备份)所在的节点(以下IP为修改后的ip):

192.168.14.155 mdw

192.168.14.156 sdw1

192.168.14.157 sdw2

GP版本:greenplum-db-6.16.2-rhel7-x86_64.rpm

安装包下载(官网):Download VMware Tanzu™ Greenplum® — VMware Tanzu Network

二、安装前服务器准备
1.关闭防火墙(所有)

启动:systemctl start firewalld

关闭:systemctl stop firewalld

查看状态:systemctl status firewalld

开机禁用:systemctl disable firewalld

开机启用:systemctl enable firewalld

其中Active状态为dead则防火墙为关闭状态,如不是关闭状态则需要执行关闭防火墙的代码;同时建议执行开机禁用防护墙命令,以确保防火墙为关闭状态。

2.配置hosts(所有)

/ect/hosts添加:

192.168.14.155 mdw
192.168.14.156 sdw1
192.168.14.157 sdw2
确保所有机器ping所有的hostname都是通的

3.修改内核(所有)

/etc/sysctl.conf 中追加

kernel.shmmax = 500000000
kernel.shmmni = 4096
kernel.shmall = 4000000000
kernel.sem = 500 1024000 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_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.conf.all.arp_filter = 1
net.ipv4.ip_local_port_range = 10000 65535
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
vm.overcommit_memory = 2
vm.swappiness = 10
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.dirty_background_ratio = 0
vm.dirty_ratio=0
vm.dirty_background_bytes = 1610612736
vm.dirty_bytes = 4294967296

添加后执行:

sysctl -p
4.修改文件打开限制(所有)

vi /etc/security/limits.conf

* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
加在“# End of file”内容之前

5.创建用户和用户组(所有)

groupadd -g 530 gpadmin
useradd -g 530 -u530 -m -d /home/gpadmin -s /bin/bash gpadmin
chown -R gpadmin:gpadmin /home/gpadmin/
passwd gpadmin
6.创建安装目录,并赋权限(所有)

mkdir /opt/greenplum
chown -R gpadmin:gpadmin /opt/greenplum/
7.修改主机名(所有)

hostnamectl set-hostname 主机名
8.授权问题(所有)

/etc/sudoers下添加(注:在同格式 root 后添加)

gpadmin ALL=(ALL) ALL
9.重启(所有)

reboot
三、开始安装
1.上传安装文件到主节点(master)

greenplum-db-5.7.1-rhel7-x86_64.zip 上传到/home/pgadmin 下

2.在线情况使用yum直接进行安装定位到当前安装包所在目录执行(没有yum?参考附录)(master):

yum install greenplum-db-6.16.2-rhel7-x86_64.rpm -y
安装过程选择安装目录:/opt/greenplum

rpm -ivh –-prefix=/opt/greenplum greenplum-db-6.16.2-rhel7-x86_64.rpm
3.离线情况

将整理好的依赖包拽到mdw中并定位到依赖所在目录下,执行

yum clean all ;yum localinstall –y --skip-broken ./*
依赖安装完成后定位到greenplum安装包路径,执行

rpm -ivh -–prefix=/opt/greenplum greenplum-db-6.16.2-rhel7-x86_64.rpm
处理依赖包备用方案执行(不推荐)

rpm -Uvh --force --nodeps *.rpm
一些会用的命令整合(参考使用)

rpm -ivh *.rpm #安装rpm依赖
rpm -Uvh *.rpm #更新rpm依赖

tar -xvf *.tar #解压tar包

#使用环境 安装的目标服务器为离线 提前使用有网的服务器使用此命令
#命令功能为将“要安装的包”所需依赖下载并保存到“保存路径”下,以供离线安装依赖
yum -y install 要安装的包 --downloadonly --downloaddir=保存路径
4.安装完成后应用下环境变量(master):

source /opt/greenplum/greenplum-db/greenplum_path.sh
5.配置hostlist文件记录所有节点,seg_hosts文件只记录segment节点(master)

[gpadmin@mdw ~]$ cat hostlist
mdw
sdw1
sdw2

[gpadmin@mdw ~]$ cat seg_hosts
sdw1
sdw2
6.gpssh-exkeys 打通服务器,即服务器间免密码登陆(master)

gpssh-exkeys -f hostlist
打通前可能需要ssh秘钥实现免密登录具体实现步骤如下:

情况一,秘钥问题

(1)使用ssh-keygen生成ssh秘钥(一直回车就行)

(2)使用ssh-copy-id 用户名@主机名进行公钥分发(master分发给所有节点)

情况二,子节点与子节点之间报错

(1)修改hosts文件,减少节点,尝试主节点和台先打通,之后再加一台,依次进行打通(每次都重新生成秘钥并分发)

(2)可能是公钥分发失败,可以使用命令尝试是否可以免密连接

ssh sdw1
7.打通后就可以使用gpssh命令对所有节点进行批量操作(master):

[gpadmin@mdw ~]$ gpssh -f hostlist
=> pwd
[sdw3] /home/gpadmin
[sdw1] /home/gpadmin
[sdw2] /home/gpadmin
[ mdw] /home/gpadmin
8.压缩主节点数据库文件

tar -cf gp6.16.tar greenplum-db-6.16.2/
master节点压缩后把主节点tar压缩包手动上传到每个子节点的opt/greenplum下并解压

也可通过如下命令进行压缩(可选操作,因为本次就三个节点所以未使用此方式)

[gpadmin@mdw ~]$ gpssh -f hostlist
=> pwd
[sdw3] /home/gpadmin
[sdw1] /home/gpadmin
[sdw2] /home/gpadmin
[ mdw] /home/gpadmin
=> tar -cf gp6.16.tar greenplum-db-6.16.2/ #压缩
=> gpscp -f /home/gpadmin/hostlist gp6.16.tar =:/opt/greenplum/ #分发
=> tar -xf gp6.16.tar
9.创建数据库数据目录(注:一定要使用gpadmin进行创建,不然在初始化会报权限不足)(所有都需要创建)

=> mkdir -p /home/gpadmin/gpdata/gpmaster
=> mkdir -p /home/gpadmin/gpdata/gpdatap1
=> mkdir -p /home/gpadmin/gpdata/gpdatap2
=> mkdir -p /home/gpadmin/gpdata/gpdatam1
=> mkdir -p /home/gpadmin/gpdata/gpdatam2
10.进行软连接(子节点)

注: 子节点执行,master不执行

ln -s /opt/greenplum/greenplum-db-6.16.2 /opt/greenplum/greenplum-db
命令执行后在子节点opt/greenplum下会出现一个greenplum-db文件

11.配置 .bash_profile 环境变量(master)

source /opt/greenplum/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/gpmaster/gpseg-1
export PGPORT=5432
export PGDATABASE=testDB #默认进入的db
source .bash_profile
12.配置初始化配置文件,模板:/opt/greenplum/greenplum-db/docs/cli_help/gpconfigs/gpinitsystem_config(master)

可以使用以配好的模板文件gpinit_config

ARRAY_NAME="Greenplum"
SEG_PREFIX=gpseg
PORT_BASE=40000
declare -a DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatap1 /home/gpadmin/gpdata/gpdatap2)
MASTER_HOSTNAME=mdw
MASTER_DIRECTORY=/home/gpadmin/gpdata/gpmaster
MASTER_PORT=5432
TRUSTED_SHELL=/usr/bin/ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE
MIRROR_PORT_BASE=50000
REPLICATION_PORT_BASE=41000
MIRROR_REPLICATION_PORT_BASE=51000
declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatam1 /home/gpadmin/gpdata/gpdatam2)
MACHINE_LIST_FILE=/home/gpadmin/seg_hosts

13.初始化数据库(master)

gpinitsystem -c /home/gpadmin/gpinit_config -s sdw3
其中sdw3是指master的standby(备份)所在的节点,书上和网上的一些资料都将standby放在后一个节点,可能是约定俗成

如提示::是否覆盖"/home/gpadmin/gpinit_config",而不理会权限模式0644 (rw-r--r--)? 输入 y

初始化根据脚本提示操作即可,如果上面有一些配置有问题,gpinitsystem就不能成功,日志在/home/gpadmin/gpAdminLogs中,认真查看日志,一味重复安装无意义

14.初始化报错:

可参考:

Greenplum初始化gpinitsystem报错解决_你好我是李白-CSDN博客
https://blog.csdn.net/jwocnimabi/article/details/106864905

可参考:

gpstart error: Do not have enough valid segments to start the array._蚁人的博客-CSDN博客
https://blog.csdn.net/u010429286/article/details/72903322

#初始化报错汇总(遇到过的)
1.master与segment节点的gp安装包要路径一致
2.报错权限不足------参考上边的授权问题以及参考上边创建数据库目录的注意事项
15.测试验证数据库(master)

登陆默认数据库postgres

[gpadmin@mdw gpAdminLogs]$ psql -d postgres
psql (8.3.23)
Type "help" for help.
postgres=#select datname,datdba,encoding,datacl from pg_database;
显示信息如下

四、基本操作
1、启动数据库

gpstart
2、重启

gpstop -r
3、仅重新载入配置文件的更改

gpstop -u
4、停止数据库

gpstop
5、创建数据库

createdb test_database -E utf-8
6、创建用户(测试使用Navcat进行数据库连接 则使用 6 - 8 进行数据库配置)

执行 psql, 进入到数据库(进入指定数据库:psql -d databasename),执行:

create role test password 'test' login;
7、退出数据库

\q
8、允许某用户远程登录

/gpdata/master/gpseg-1/pg_hba.conf 文末添加:

host all gpadmin 0.0.0.0/1 md5
host all test 0.0.0.0/0 md5
执行:

gpstop –u
#如果执行后还是连接不上可以关闭数据库在启动
gpstop
gpstart
配置后就可进行连接

主机为 : master 地址

端口 : 5432

初始数据库 : postgres

用户名 : test

密码 : test

附录
ssh参考资料:
SSH原理与运用(一):远程登录 - 阮一峰的网络日志
http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html

yum安装:

-bash: yum: command not found_邓国胜的博客_新浪博客
http://blog.sina.com.cn/s/blog_643754960102w82m.html

附录2

1.二次连接 gpstart 或者 gpstop 报错:

-gpstop failed. (Reason='Environment Variable MASTER_DATA_DIRECTORY not set!') exiting...
解决方案:

vim ~/.bashrc
添加内容:

MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/gpmaster/gpsne-1
export MASTER_DATA_DIRECTORY
添加后执行命令:

source .bashrc
2.vim命令简单使用

vim 命令打开某个文件后,点击 i 键 进入编辑模式,此时进行编辑,编辑完成后使用 esc 键退出编辑模式,输入 :wq 进行保存退出。


本文来源:https://blog.csdn.net/zzbbhhh/article/details/120365861

相关文章