环境:centos7 ,Greenplum6
1. Greenplum 6.4 下载
https://github.com/greenplum-db/gpdb/releases/tag/6.4.0
2. 安装单机master环境准备
2.1 关闭SELINUX
[root@master ~]# vim /etc/selinux/config
2.2关闭防火墙
[root@master ~]# systemctl status firewalld.service(查看防火墙服务状态)
Active属性:dead为防火墙已关闭,run为防火墙正在运行
[root@master ~]# systemctl stop firewalld.service
[root@master ~]# systemctl disable firewalld.service (禁用服务后就无法再使用stop firewalled.service了,下图主机名换成了segment1)
2.4改机器名
#查机器名
[root@master ~]# hostname
#改名为master
[root@master ~]# hostnamectl set-hostname master
2.5创建gpaadmin用户和用户组
[root@master ~]# groupadd -g 3030 gpadmin
[root@master ~]# useradd -u 3030 gpadmin -g gpadmin -d /home/gpdata
[root@master ~]# passwd gpadmin
(密码gpadmin123)
#补充知识点:删除 groupdel gpadmin userdel gpadmin
vim /etc/passwd可查看用户及所属组,工作目录
2.6配置内核参数
[root@master ~]# vim /etc/sysctl.conf
以下面内容覆盖原有内容:
kernel.shmmax = 500000000
kernel.shmmni = 4096
kernel.shmall = 4000000000
kernel.sem = 250 512000 100 2048
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
sysctl -p使配置生效
2.7 vim /etc/security/limits.conf
以下面内容覆盖:
*soft nofile 65536
*hard nofile 65536
*soft nproc 131072
*hard nproc 131072
2.8CentOS7需要加入服务logind
[root@master ~]# echo "RemoveIPC=no" >> /etc/systemd/logind.conf
[root@master ~]# service systemd-logind restart
2.9设置hosts文件
[root@master ~]# vim /etc/hosts
添加:172.16.250.106 master
172.16.250.106 这里更改成你自己的ip地址
2.10设置network
[root@master ~]# vim /etc/sysconfig/network
添加:
networking=yes
hostname=master (不区分大小写)
2.11重启服务器reboot
[root@master ~]# reboot
3.安装GreenPlum
3.1 gp6安装包上传到root目录
cd /进入根目录
rz命令上传文件参考:https://blog.csdn.net/lx_frolf/article/details/82770546
yum -y install greenplum-db-6.1.0-rhel6-x86_64.rpm
#默认安装到/usr/local,授权给gpadmin
chown -R gpadmin /usr/local/greenplum*
chgrp -R gpadmin /usr/local/greenplum*
使环境变量生效
source /usr/local/greenplum-db/greenplum_path.sh
3.2创建instance需要的目录
mkdir -p /home/gpdata
mkdir -p /home/gpdata/master
mkdir -p /home/gpdata/gp1
mkdir -p /home/gpdata/gp2
mkdir -p /home/gpdata/gp3
mkdir -p /home/gpdata/gp4
#修改目录属主
chown -R gpadmin:gpadmin /home/gpdata
chown -R gpadmin:gpadmin /home/gpdata/master
chown -R gpadmin:gpadmin /home/gpdata/gp*
3.3切换用户gpadmin
su gpadmin
进入$开头的bash环境
cd
改变前缀的方法:
vim bash_profile
文件末尾追加:
export PS1='[\u@\h \w]',
退出文件并 source bash_profile 使其生效
3.4 /home/gpadmin/.bash_profile文件添加以下内容:
source /usr/local/greenplum-db-6.4.0/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/home/gpdata/master/gpseg-1
export PGPORT=2345
export PGUSER=gpadmin
export PGDATABASE=gpdb
3.5 /home/gpadmin/.bashrc文件添加同3.4的内容
添加上文3.4同样内容
3.6设置子节点的host
vim all_hosts_file
添加一行master(单机版只有一个host)
3.7 权限互通
[gpadmin@master ~]# gpssh-exkeys -f all_hosts_file
3.8 编辑gp初始化文件
vim initgp_config
写入:
SEG_PREFIX=gpseg
PORT_BASE=33000
declare -a DATA_DIRECTORY=(/home/gpdata/gp1 /home/gpdata/gp2 /home/gpdata/gp3 /home/gpdata/gp4)
MASTER_HOSTNAME=master
MASTER_PORT=2345
MASTER_DIRECTORY=/home/gpdata/master
DATABASE_NAME=gpdb
3.9设置节点服务器
vim seg_hosts_file
写入:
master
本例单机,只有master这一台
4.初始化GP
gpinitsystem -c initgp_config -h seg_hosts_file
初始化失败:
原因:阿里云的服务器初始化没有设置分配swap空间,分配好swap空间即可
分配swap详情参考:https://www.cnblogs.com/zdz8207/p/linux-centos-swap.html
5.连接GP
5.1psql登录修改密码
su gpadmin
psql -p 2345
修改数据库密码
alter role gpadmin with password 'bigdata2018';
退出: \q
5.2远程连接配置
vim /home/gpdata/master/gpseg-1/postgresql.conf
修改:
#listen_addresses = '*',去#注释
vim /home/gpdata/master/gpseg-1/pg_hba.conf
添加:
host all gpadmin 0.0.0.0/0 md5
5.3重新加载配置文件
gpstop -u
附录
其他启停命令
gpstart #正常启动
gpstop #正常关闭
gpstop -M fast #快速关闭
gpstop –r #重启
安装master后添加segment节点
1.更改segment系统配置
1.1更改机器名为segment
参考前文
1.2修改/etc/hosts文件(在master上以root权限更改,再用scp命令复制到segment节点)
[root@master ~]# scp /etc/hosts segment1:/etc
1.3关闭selinux及防火墙
参考前文
selinux文件可用scp命令由master复制到segment节点
[root@master ~]# scp /etc/selinux/config segment1:/etc/selinux
1.4修改/etc/sysconfig/network文件(进入每台segment中修改)
1.5复制master的/etc/sysctl.conf文件到segment
[root@master ~] scp /etc/sysctl.conf segment:/etc/sysconfig
并sysctl -p执行
1.6修改/etc/security/limits.d/20-nproc.conf文件并复制到segment
[root@master ~] vim /etc/security/limits.d/20-nproc.conf
1.7复制/etc/security/limits.conf到segment节点
[root@master ~] scp /etc/security/limits.conf segment1:/etc/security/
1.8创建gpadmin组及用户
[root@master ~]# groupadd -g 1001 gpadmin
[root@master ~]# useradd -g admin -u 1001 gpadmin -d /home/gpadmin -s /bin/bash gpadmin
[root@master ~]# passwd admin
1.9配置扩展segment节点需要的文件
1.9.1修改master主机gpadmin目录下的all_hosts_file
将所有节点的主机名都加进去
1.9.2修改master主机gpadmin目录下的seg_hosts_file
将segment节点的主机名加进去
1.9.3新增hosts_expand文件
将当前需要新增的节点主机名加入(如此次需要加入segment1,就将segment1写入)
gpadmin目录下的文件如下图:
1.9.4在segment节点增加和master路径一致的存放数据的目录
[gpadmin@segment ~]# mkdir /home/gpdata
[gpadmin@segment ~]# mkdir /home/gpdata/master
[gpadmin@segment ~]# mkdir /home/gpdata/gp1
[gpadmin@segment ~]# mkdir /home/gpdata/gp2
[gpadmin@segment ~]# mkdir /home/gpdata/gp3
[gpadmin@segment ~]# mkdir /home/gpdata/gp4
2.配置SSH免密登录
2.1master主机生成密钥ssh-keygen -t rsa -P ''
[gpadmin@master ~]# ssh-keygen -t rsa -P ''
id_rsa为私钥,id_rsa.pub为公钥
2.2将公钥复制到segment的 ~/.ssh/authorized_keys文件(.ssh目录及authorized_keys可能要提前创建)
[gpadmin@master ~]# scp ~/.ssh/id_rsa.pub segment1:~/.ssh/authorized_keys
2.3设置目录权限
1) .ssh目录的权限必须是700(非常重要)
[root@segment1 gpadmin]# chmod 700 .ssh
2) .ssh/authorized_keys文件权限必须是600
[root@segment1 .ssh]# chmod 600 authorized_keys
2.4测试节点之间是否连通
[gpadmin@master ~]# gpssh-exkeys -f all_hosts_file
最后出现completed successfully即证明节点之间已连通
3.在segment安装GP
3.1在master上将默认安装在/usr/local的greenplum-db-x.x.x压缩打包(需要将/usr/local的读权限给到gpadmin,否则会报错)
master上未授权时压缩文件失败:
[root@master ~]# chmod -R gpadmin:gpadmin /usr/local
[gpadmin@master ~]# tar -cf gp.tar /usr/local/greenplum-db-6.4.0/
文件压缩成功:
3.2将压缩包复制到segment节点(需要将/usr/local的读权限给到gpadmin,否则会报错)
segment1上未授权时复制失败:
[root@segment1 ~]# chown -R gpadmin:gpadmin /usr/local
[gpadmin@master ~]# scp /usr/local/gp.tar segment1:/usr/local/
文件复制成功:
3.3解压文件
[root@segment1 local]# tar -xf gp.tar
3.4建立软连接
[gpadmin@segment1 local]# ln -s greenplum-db-6.4.0 greenplum-db
4.环境配置
4.1复制/home/gpadmin/.bash_profile到segment
[gpadmin@master ~]# scp /home/gpadmin/.bash_profile segment:/home/gpadmin/
4.2使环境变量生效
[gpadmin@segment1 ~]# source .bash_profile
4.3复制/home/gpadmin/.bashrc到segment
5.使用gpexpand函数增加segment节点
5.1gpexpand -f hosts_gpexpand
中间需要确认一次,并且输入数据存放的路径
成功会显示已生成gpexpand_inoutfile开头的文件
5.2修改gpexpand_inputfile(只保留前面4行)
剩下的都可删掉,否则gpexpand -i 命令会失败,报错如下
5.3gpexpand -i 脚本文件
[gpadmin@segment1 ~]pexpand -i gpexpand_inputfile_20200417_001320
(出现Initialization of the system expansion complete即增加节点成功)
5.4删除增加节点生成的schema
(不删除以后则无法增加节点)
[gpadmin@segment1 ~]pexpand -c
5.5重分布表
[gpadmin@segment1 ~]$ gpexpand -d 60:00:00
(出现completed successfully即重分布成功)
5.6失败回滚
[gpadmin@master ~]$ gpexpand -r
5.7进入GP查询节点信息
=# select * from gp_segment_configuration