【小白】Greenplum集群数据库搭建指南
【小白】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
相关文章