1 安装说明
1.1 集群介绍
使用CentOS 8安装1个Master,3个Segment,每台机器命名及IP地址如下:
mdw 192.168.3.8
sdw1 192.168.3.9
sdw2 192.168.3.10
sdw3 192.168.3.11
1.2 Master与Segment说明
Master:
(1) 建立与客户羰的会话连接和管理。
(2) SQL的解析并形成分布式的执行计划。
(3) 将生成好的执行计划分发到每一个Segment节点执行。
(4) 收集Segement执行结果。
(5) Master不存储业务数据,只存储数据字典。
(6) Master主机可一主一备,分布在两台机器上。
(7) 为了提高性能,Master最好单独用一台机器。
Segement:
(1) 业务数据存取。
(2) 执行Master分发SQL语句。
(3) 相对于Master,每个Segment对等负责对应数据的存储和计算。
(4) 每台机器上可以配置一个到多个Segment。
(5) 由于每个Segment都是对等的,建议采用相同配置服务器。
(6) Segment分为Primary和Mirror两种,一般交错存放在子节点上。
2 安装环境准备
2.1 关闭防火墙(4台)
systemctl disable firewalld
systemctl stop firewalld
2.2 配置/etc/hosts(4台)
各节点之前通过节点名进行相互通信,4台服务器名称设置如下:
192.168.3.8 mdw
192.168.3.9 sdw1
192.168.3.10 sdw2
192.168.3.11 sdw3
2.3 修改内核配置参数(4台,测试可不设置)
kernel.shmall = 4000000000
kernel.shmmax = 500000000
kernel.shmmni = 4096
vm.overcommit_memory = 2
vm.overcommit_ratio = 95
net.ipv4.ip_local_port_range = 10000 65535
kernel.sem = 500 2048000 200 40960
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
vm.dirty_ratio = 0
vm.dirty_background_bytes = 1610612736
vm.dirty_bytes = 4294967296
执行命令以使上面配置生效
sysctl -p
2.4 配置资源限制参数(4台,测试可不设置)
/etc/security/limits.conf
* soft nofile 524288
* hard nofile 524288
* soft nproc 131072
* hard nproc 131072
2.5 创建用户和用户组(4台)
groupdel gpadmin
userdel gpadmin
groupadd -g 530 gpadmin
useradd -g 530 -u 530 -m -d /home/gpadmin -s /bin/bash gpadmin
chown -R gpadmin:gpadmin /home/gpadmin/
passwd gpadmin
2.6 创建安装目录并赋权(4台)
mkdir /usr/local/greenplum
chown -R gpadmin:gpadmin /usr/local/greenplum/
3 集群安装部署
3.1 安装依赖(4台)
对CentOS 8 换阿里源
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
安装依赖
yum install -y zip unzip openssh-clients ed chrony net-tools perl perl-devel perl-ExtUtils* mlocate lrzsz parted apr apr-util bzip2 krb5-devel libevent libyaml rsync
安装python2
yum install python2
ln -s /usr/bin/python2 /usr/bin/python
3.2 执行安装程序
3.2.1 下载最新版的Greenplum
https://github.com/greenplum-db/gpdb/releases
上传mdw主机后执行以下命令:
rpm -ivh open-source-greenplum-db-*-rhel8-x86_64.rpm
greenplum会安装到/usr/local目录下,需要把目录权限赋于gpadmin用户
chown -R gpadmin:gpadmin /usr/local/greenplum*
3.2.2 集群互信,免密登陆(gpadmin用户执行)
su - gpadmin
ssh-keygen -t rsa
ssh-copy-id mdw
ssh-copy-id sdw1
ssh-copy-id sdw2
ssh-copy-id sdw3
• 创建 hostlist,seg_hosts (Master)
目录/home/gpadmin/conf,再分别创建hostlist,seg_hosts 。hostlist 中填写所有节点的主机别名,seg_hosts 中填写所有Segment 的主机别名。
mkdir /home/gpadmin/conf
cd /home/gpadmin
vi /home/gpadmin/conf/hostlist
mdw
sdw1
sdw2
sdw3
vi /home/gpadmin/conf/seg_hosts
sdw1
sdw2
sdw3
应用环境变量
source /usr/local/greenplum-db-*/greenplum_path.sh
• 使用gpssh-exkeys 工具,打通n-n的免密登陆
gpssh-exkeys -f conf/hostlist
3.2.2 分发数据库文件(root用户执行)
cd /usr/local
tar -cvf gp6.tar greenplum-db-*/
chown -R gpadmin:gpadmin /usr/local/gp6.tar
• 分发
gpscp -f /home/gpadmin/conf/hostlist gp6.tar =:/usr/local/greenplum
• 解压(gpadmin用户执行)
在master上运行,一台上敲命令,操作4台。
source /usr/local/greenplum-db-*/greenplum_path.sh
gpssh -f /home/gpadmin/conf/hostlist
=> cd /usr/local/greenplum
=> tar -xvf gp6.tar
=> ln -s greenplum-db-* greenplum-db
3.3 环境配置
3.3.1 创建数据存储空间
以上安装的是程序,接下来要创建数据存储空间 。
• Master
Master 不存储 user data,仅有 system catalog tables 和 system metadata ,这里没有 Standby Master。所以,只在 Master 创建一个目录即可。
mkdir -p /home/gpadmin/data/master
• Segment
数据存储在Segment 中,并且需要 primary segments 和 mirror segments,其余3台segment 用 gpssh分别创建2个目录。
source /usr/local/greenplum-db/greenplum_path.sh
gpssh -f /home/gpadmin/conf/seg_hosts -e 'mkdir -p /home/gpadmin/data/primary'
gpssh -f /home/gpadmin/conf/seg_hosts -e 'mkdir -p /home/gpadmin/data/mirror'
3.3.2 配置 .bash_profile 环境变量(4台,先在master中做完后推送)
修改/usr/local/greenplum/greenplum-db/greenplum_path.sh
在图中位置加入:
GPHOME=/usr/local/greenplum/greenplum-db
vi /home/gpadmin/.bash_profile
source /usr/local/greenplum/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/home/gpadmin/data/master/gpseg-1
export PGPORT=5432
export PGUSER=gpadmin
• 使之生效
source /home/gpadmin/.bash_profile
推送
gpscp -f /home/gpadmin/conf/seg_hosts /usr/local/greenplum/greenplum-db/greenplum_path.sh gpadmin@=:/usr/local/greenplum/greenplum-db/greenplum_path.sh
gpscp -f /home/gpadmin/conf/seg_hosts /home/gpadmin/.bash_profile gpadmin@=:/home/gpadmin/.bash_profile
3.3.3 初始化配置文件
• configuration file
模板在:$GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config,拷贝过来。
mkdir /home/gpadmin/gpconfigs
cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpconfigs/gpinitsystem_config
vi /home/gpadmin/gpconfigs/gpinitsystem_config
#数据库代号
ARRAY_NAME="Greenplum"
#segment前缀
SEG_PREFIX=gpseg
#primary segment 起始的端口号
PORT_BASE=33000
#指定primary segment的数据目录,网上写的是多个相同目录,多个目录表示一台机器有多个segment
declare -a DATA_DIRECTORY=(/home/gpadmin/data/primary)
#master所在机器的host name
MASTER_HOSTNAME=mdw
#master的数据目录
MASTER_DIRECTORY=/home/gpadmin/data/master
#master的端口
MASTER_PORT=5432
#指定bash的版本
TRUSTED_SHELL=/usr/bin/ssh
#将日志写入磁盘的间隔,每个段文件通常 =16MB < 2 * CHECK_POINT_SEGMENTS + 1
CHECK_POINT_SEGMENTS=8
#字符集
ENCODING=UNICODE
#mirror segment 起始的端口号
MIRROR_PORT_BASE=44000
# mirror的数据目录,和主数据一样,一个对一个,多个对多个
declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/data/mirror)
• host file
vi gpconfigs/hostfile_gpinitsystem
sdw1
sdw2
sdw3
3.3.4 初始化数据库
安装
cd ~
gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/hostfile_gpinitsystem
期间会提示,是否继续,输入y即可
初始化失败处理
rm -rf /home/gpadmin/data/master/gpseg-1
gpssh -f /home/gpadmin/conf/seg_hosts
=> rm -rf /home/gpadmin/data/primary/*