安装
安装前准备
准备安装包
https://github.com/greenplum-db/gpdb/releases
开源版本可以在以上地址根据需要选择版本及对应的安装包进行下载
操作系统 (本次以RHEL7为例)
Greenplum Database 6支持以下操作系统平台:
Red Hat Enterprise Linux 64-bit 8.x (as of Greenplum Database version 6.20)
Red Hat Enterprise Linux 64-bit 7.x (See the following Note.)
Red Hat Enterprise Linux 64-bit 6.x
CentOS 64-bit 7.x
CentOS 64-bit 6.x
Ubuntu 18.04 LTS
Oracle Linux 64-bit 7, using the Red Hat Compatible Kernel (RHCK)
注意:请勿在Greenplum 数据库主机上安装杀毒软件,因为该软件可能会造成额外的CPU和IO负载,干扰数据库的操作。
文件系统
XFS是Greenplum数据库数据目录的最佳实践文件系统,XFS应该用下列选项挂载:
例:/etc/fstab 下添加如下挂载
[root@gpmaster ~]# cat >>/etc/fstab
/dev/sdb /data xfs rw,nodev,noatime,nobarrier,inode64 0 0
I/O配置
在含有数据目录的设备上,设置blockdev预读尺寸为16384。 下列命令设置/dev/sdb的预读值大小
[root@gpmaster ~]# /sbin/blockdev --setra 16384 /dev/sdb
应该为所有数据目录设备设置deadline IO调度器。
[root@gpmaster ~] # echo "deadline" >/sys/block/sdb/queue/scheduler
[root@gpmaster ~] # cat /sys/block/sdb/queue/scheduler
noop anticipatory [deadline] cfq
在/etc/security/limits.conf文件中增加OS文件和进程的最大数量
[root@gpmaster ~] # cat >>/etc/security/limits.conf
* soft nofile 524288
* hard nofile 524288
* soft nproc 131072
* hard nproc 131072
依赖软件(需先配置yum源)
readline readline-devel libxmal-devel python-devel perl perl-devel krb5 krb5-devel apr apr-devel libcurl libcurl-devel
libxml2 libyaml zlib zlib-devel openssl openssl-devel openssl-libs bzip2 bzip2-devel postgresql-devel ntp
防火墙设置
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld
SELinux设置
cp /etc/sysconfig/selinux /etc/sysconfig/selinux_bak
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
内核参数设置
shmall=`echo $(expr $(getconf _PHYS_PAGES) / 2)`
shmmax=`echo $(expr $(getconf _PHYS_PAGES) / 2 \* $(getconf PAGE_SIZE))`
min_free_kbytes=`awk 'BEGIN {OFMT = "%.0f";} /MemTotal/ {print "vm.min_free_kbytes =",$2 * .03;}' /proc/meminfo`
vim /etc/sysctl.conf
kernel.shmall = $shmall
kernel.shmmax = $shmmax
kernel.shmmni = 4096
vm.overcommit_memory = 2
vm.overcommit_ratio = 95
net.ipv4.ip_local_port_range = 1025 65535
net.ipv4.ip_local_reserved_ports=65330
kernel.sem = 500 2048000 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_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
net.core.somaxconn = 32768
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
vm.vfs_cache_pressure = 1024
echo "${min_free_kbytes}" >>/etc/sysctl.conf
透明大页设置
cp /etc/default/grub /etc/default/grub_bak
sed -i 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="elevator=deadline transparent_hugepage=never /' /etc/default/grub
sed -i 's/#RemoveIPC/RemoveIPC/' /etc/systemd/logind.conf
主机名及/etc/hosts文件设置,例如
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.126.201 master mdw GPFHOST
192.168.126.202 host1 sdw
192.168.126.203 host2 seg01
创建用户gpadmin,设置密码(所有节点,密码自定义)
useradd gpadmin
passwd gpadmin
创建数据目录
mkdir /data/master --(只有主节点,其他为所有节点)
mkdir /data/primary
mkdir /data/mirror
chown -R gpadmin:gpadmin /data
安装软件(所有节点)
rpm -ivh open-source-greenplum-db-6.13.0-rhel7-x86_64.rpm
--可以安装到默认安装目录(/usr/local/greenplum-db-6.13.0),也可以自定义(需先创建)
rpm -ivh open-source-greenplum-db-6.13.0-rhel7-x86_64.rpm --prefix=/opt/gpdb
并将安装目录赋权给gpadmin用户
chown -R gpadmin:gpadmin /opt/gpdb
以上步骤使用root用户执行,可以将以上步骤整理到脚本,更方便快捷安装。
以下步骤用gpadmin用户执行
配置环境变量(根据具体情况设置)
su - gpadmin
vim .bashrc
export GPHOME=/opt/gpdb
export MASTER_DATA_DIRECTORY=/data/master/gpseg-1
export PGDATABASE=postgres
export PGPORT=5432
source ${GPHOME}/greenplum_path.sh
gpadmin用户配置免密(master 节点执行)
ssh-keygen -t rsa
ssh-copy-id host1
ssh-copy-id host2
cat >host.list
master
host1
host2
gpssh-exkeys -f host.list
检查网络(例子为测试环境,如果是万兆网络,应该在1000MB/sec以上)
gpcheckperf -f host.list -r n -d /tmp >net_test.out
cat net_test.out
/opt/gp4/bin/gpcheckperf -f host.list -r n -d /tmp
-------------------
-- NETPERF TEST
-------------------
====================
== RESULT
====================
Netperf bisection bandwidth test
master -> host1 = 324.970000
host1-> master = 379.360000
host2 -> master = 389.390000
master -> host2 = 397.100000
Summary:
sum = 1490.82 MB/sec
min = 324.97 MB/sec
max = 397.10 MB/sec
avg = 372.71 MB/sec
median = 389.39 MB/sec
[Warning] connection between gp-master and gp-host1 is no good
检查I/O(例子为测试环境,不同磁盘不同读写速度)
gpcheckperf -f host.list -r ds -D -d /data -v 2048000000 >io.out
cat io.out
[Info] sh -c 'cat /proc/meminfo | grep MemTotal'
MemTotal: 3861364 kB
/opt/gpdb/greenplum-db-6.13.0/bin/gpcheckperf -f host.list -r ds -D -d /data -v 2048000000
--------------------
SETUP 2022-08-06T20:41:26.505312
--------------------
[Info] verify python interpreter exists
[Info] /opt/gpdb/greenplum-db-6.13.0/bin/gpssh -f host.list 'python -c print'
[Info] making gpcheckperf directory on all hosts ...
[Info] /opt/gpdb/greenplum-db-6.13.0/bin/gpssh -f host.list 'rm -rf /data/gpcheckperf_$USER ; mkdir -p /data/gpcheckperf_$USER'
[Info] copy local /opt/gpdb/greenplum-db-6.13.0/bin/lib/multidd to remote /data/gpcheckperf_$USER/multidd
[Info] /opt/gpdb/greenplum-db-6.13.0/bin/gpscp -f host.list /opt/gpdb/greenplum-db-6.13.0/bin/lib/multidd =:/data/gpcheckperf_$USER/multidd
[Info] /opt/gpdb/greenplum-db-6.13.0/bin/gpssh -f host.list 'chmod a+rx /data/gpcheckperf_$USER/multidd'
--------------------
-- DISK WRITE TEST
--------------------
[Info] /opt/gpdb/greenplum-db-6.13.0/bin/gpssh -f host.list 'time -p /data/gpcheckperf_$USER/multidd -i /dev/zero -o /data/gpcheckperf_$USER/ddfile -B 32768'
--------------------
-- DISK READ TEST
--------------------
[Info] /opt/gpdb/greenplum-db-6.13.0/bin/gpssh -f host.list 'time -p /data/gpcheckperf_$USER/multidd -o /dev/null -i /data/gpcheckperf_$USER/ddfile -B 32768'
--------------------
-- STREAM TEST
--------------------
[Info] copy local /opt/gpdb/greenplum-db-6.13.0/bin/lib/stream to remote /data/gpcheckperf_$USER/stream
[Info] /opt/gpdb/greenplum-db-6.13.0/bin/gpscp -f host.list /opt/gpdb/greenplum-db-6.13.0/bin/lib/stream =:/data/gpcheckperf_$USER/stream
[Info] /opt/gpdb/greenplum-db-6.13.0/bin/gpssh -f host.list 'chmod a+rx /data/gpcheckperf_$USER/stream'
[Info] /opt/gpdb/greenplum-db-6.13.0/bin/gpssh -f host.list /data/gpcheckperf_$USER/stream
--------------------
TEARDOWN
--------------------
[Info] /opt/gpdb/greenplum-db-6.13.0/bin/gpssh -f host.list 'rm -rf /data/gpcheckperf_$USER'