Greenplum 6 安装配置详解

Posted wzy0623

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Greenplum 6 安装配置详解相关的知识,希望对你有一定的参考价值。

目录

一、主机规划

二、平台需求

三、操作系统配置

1. 禁用SELinux和防火墙

2. 系统配置

3. 同步系统时钟

4. 创建gpadmin账户

5. 安装Java(可选)

四、安装Greenplum数据库软件

1. 安装Greenplum数据库

2. 配置免密SSH

3. 确认软件安装

五、创建数据存储区

1. 在master和standby master主机创建数据存储区

2. 在segment主机创建数据存储区

六、验证系统

1. 验证网络性能

2. 验证磁盘I/O和内存带宽性能

七、初始化Greenplum数据库系统

1. 初始化Greenplum数据库

2. 设置Greenplum环境变量

3. 允许客户端连接

4. 修改参数

八、后续

参考:


一、主机规划

114.112.77.199    master、segment
210.73.209.103    standby master、segment
140.210.73.67    segment


二、平台需求

1. 操作系统
CentOS 64-bit 7.3及其以上版本,将swap设置为和内存一样大。

2. 依赖软件包
apr apr-util bash bzip2 curl krb5 libcurl libevent libxml2 libyaml zlib openldap openssh openssl openssl-libs perl readline rsync R sed tar zip

3. Java
Open JDK 8 or Open JDK 11

4. 硬件和网络
(1)最小物理内存16G
(2)集群中所有主机在同一局域网内(连接万兆交换机),每台主机建议至少两块万兆网卡,做bonding mode4。
(3)数据分区使用XFS文件系统。master、standby master主机只需要一个数据分区/data,segment主机需要两个数据分区/data1、/data2,用作primary和mirror。

官方文档:http://docs.greenplum.org/6-12/install_guide/platform-requirements.html

5. 用户数据空间计算
磁盘空间 * 0.7 = 可用空间 = (2 * 用户数据空间) + 用户数据空间/3
其中:
2 * 用户数据空间 为 primary + mirror 所需空间。
用户数据空间/3 为工作区(work space)所需空间。

举例:
磁盘空间=2T,则用户数据可用空间=2T*0.7*3/7=600G。

官方文档:http://docs.greenplum.org/6-12/install_guide/capacity_planning.html


三、操作系统配置

1. 禁用SELinux和防火墙

在所有主机用root用户执行以下步骤。

(1)检查SELinux状态

sestatus

(2)如果SELinux状态不是disabled,编辑/etc/selinux/config文件修改SELINUX参数值为disabled。
SELINUX=disabled

# 禁用SELinux

setenforce 0

(3)检查防火墙状态
systemctl status firewalld
如果已禁用则输出如下:
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

(4)如果需要,禁用防火墙服务

systemctl stop firewalld.service
systemctl disable firewalld.service

2. 系统配置

在所有主机用root用户执行以下步骤。

(1)设置主机名
编辑/etc/hosts文件,添加Greenplum中的所有IP、主机名、别名。master别名为mdw,standby master别名为smdw,segment别名为sdw1、sdw2 ...。

(2)设置系统参数
编辑/etc/sysctl.conf文件,添加如下参数设置:

kernel.shmall = 197951838        # 设置为echo $(expr $(getconf _PHYS_PAGES) / 2)的值
kernel.shmmax = 810810728448    # 设置为echo $(expr $(getconf _PHYS_PAGES) / 2 \\* $(getconf PAGE_SIZE))的值
kernel.shmmni = 4096
vm.overcommit_memory = 2
vm.overcommit_ratio = 95

net.ipv4.ip_local_port_range = 10000 65535
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
vm.zone_reclaim_mode = 0
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100

# 大于64G内存推荐
vm.dirty_background_ratio = 0 # See System Memory
vm.dirty_ratio = 0
vm.dirty_background_bytes = 1610612736 # 1.5GB
vm.dirty_bytes = 4294967296 # 4GB

配置vm.min_free_kbytes

awk 'BEGIN {OFMT = "%.0f";} /MemTotal/ {print "vm.min_free_kbytes =", $2 * .03;}' /proc/meminfo >> /etc/sysctl.conf

使配置生效:

sysctl -p

(3)设置资源限制
编辑/etc/security/limits.d/20-nproc.conf文件,添加(或修改)如下参数设置:

* soft nofile 524288
* hard nofile 524288
* soft nproc 131072
* hard nproc 131072

# 查看

ulimit -a

(4)设置XFS文件系统mount选项
编辑/etc/fstab文件,添加XFS文件系统mount选项为rw,nodev,noatime,nobarrier,inode64,例如:

/dev/data /data xfs rw,nodev,noatime,nobarrier,inode64 0 0
/dev/data1 /data1 xfs rw,nodev,noatime,nobarrier,inode64 0 0
/dev/data2 /data2 xfs rw,nodev,noatime,nobarrier,inode64 0 0

使配置生效,例如:

mount -o remount /data
mount -o remount /data1
mount -o remount /data2

# 查看

mount

(5)设置预读值为16384

# 获取值,例如:
/sbin/blockdev --getra /dev/sdb1
# 设置值,例如:
/sbin/blockdev --setra 16384 /dev/sdb1

将设置命令添加到/etc/rc.d/rc.local文件,并将该文件设置为可执行,使得系统重启自动执行。

chmod +x /etc/rc.d/rc.local

(6)设置磁盘IO调度策略
例如:

echo deadline > /sys/block/sdb/queue/scheduler
echo mq-deadline > /sys/block/nvme0n1/queue/scheduler
echo mq-deadline > /sys/block/nvme1n1/queue/scheduler

将设置命令添加到/etc/rc.d/rc.local文件,使得系统重启自动执行。

# 以下方法重启后无效
grubby --update-kernel=ALL --args="elevator=mq-deadline"
grubby --info=ALL

(7)禁用透明大页面(THP)

# 查看当前配置
cat /sys/kernel/mm/transparent_hugepage/enabled

# 设置
echo never > /sys/kernel/mm/transparent_hugepage/enabled

使得系统重启自动生效:

grubby --update-kernel=ALL --args="transparent_hugepage=never"
grubby --info=ALL

(8)禁止IPC对象删除
编辑/etc/systemd/logind.conf文件,设置RemoveIPC参数:

RemoveIPC=no

重启服务使配置生效:

service systemd-logind restart

(9)设置SSH连接数阈值
编辑/etc/ssh/sshd_config文件,设置以下参数:

MaxStartups 10:30:200
MaxSessions 200

重启服务使配置生效:

systemctl reload sshd.service

(10)确认或配置时区
date命令的输出应该为东八区,例如:Thu Feb 25 08:13:00 CST 2021
如果在安装操作系统时设置的时区有误,可以执行tzselect命令更改时区,依次选择 Asia -> China -> Beijing Time -> YES 即可。一定要在安装Greenplum前确保时区设置正确,因为在Greenplum系统初始化后,LC_COLLATE、LC_CTYPE的值不能再更改。

3. 同步系统时钟

(1)在master主机的/etc/ntp.conf文件中添加NTP服务器
server 101.251.209.250
(2)在standby master主机的/etc/ntp.conf文件中添加NTP服务器
server mdw prefer
server 101.251.209.250
(3)在所有segment主机的/etc/ntp.conf文件中添加NTP服务器
server mdw prefer
server smdw
(4)在所有主机启动ntpd服务并查看时间同步状态

systemctl disable chronyd
systemctl enable ntpd
systemctl start ntpd
ntpstat 

4. 创建gpadmin账户

(1)建立组和用户

groupadd -r -g 1001 gpadmin
useradd gpadmin -r -m -g gpadmin -u 1001
passwd gpadmin

chown -R gpadmin:gpadmin /data
chown -R gpadmin:gpadmin /data1
chown -R gpadmin:gpadmin /data2

(2)生成SSH密钥对

su gpadmin
ssh-keygen -t rsa -b 4096

(3)授予gpadmin用户sudo访问权限

visudo


去掉下行的注释:
# %wheel        ALL=(ALL)       NOPASSWD: ALL

将gpadmin用户添加到wheel组:

usermod -aG wheel gpadmin

5. 安装Java(可选)

# 查找yum资源库中的java包
yum search java | grep -i --color JDK
# 安装Java 1.8
yum install -y java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64 
# 验证安装
java -version

重启主机使所有配置生效。

官方文档:http://docs.greenplum.org/6-12/install_guide/prep_os.html


四、安装Greenplum数据库软件

1. 安装Greenplum数据库

在所有主机用root用户执行以下步骤。
(1)下载安装包

wegt https://github.com/greenplum-db/gpdb/releases/download/6.14.1/open-source-greenplum-db-6.14.1-rhel7-x86_64.rpm

(2)安装

yum -y install ./open-source-greenplum-db-6.14.1-rhel7-x86_64.rpm

(3)修改安装目录的属主和组

chown -R gpadmin:gpadmin /usr/local/greenplum*
chgrp -R gpadmin /usr/local/greenplum*

2. 配置免密SSH

在master主机用gpadmin用户执行以下步骤。
(1)设置Greenplum环境

source /usr/local/greenplum-db/greenplum_path.sh

(2)启用1-n SSH免密

# 将当前用户的公钥拷贝到集群中其它主机的authorized_hosts文件中
ssh-copy-id mdw
ssh-copy-id smdw
ssh-copy-id sdw1
ssh-copy-id sdw2
ssh-copy-id sdw3
...

(3)在gpadmin用户主目录创建名为all_host的文件,内容为所有Greenplum主机名,例如:

mdw
smdw
sdw3

(4)启用n-n SSH免密

gpssh-exkeys -f all_host

3. 确认软件安装

在master主机用gpadmin用户执行以下步骤。

gpssh -f all_host -e 'ls -l /usr/local/greenplum-db-<version>'

如果Greenplum安装成功,应该能够在没有密码提示的情况下登录到所有主机。

官方文档:http://docs.greenplum.org/6-12/install_guide/install_gpdb.html


五、创建数据存储区

1. 在master和standby master主机创建数据存储区

在master主机用gpadmin用户执行以下命令。

mkdir -p /data/master
chown gpadmin:gpadmin /data/master
source /usr/local/greenplum-db/greenplum_path.sh 
gpssh -h smdw -e 'mkdir -p /data/master'
gpssh -h smdw -e 'chown gpadmin:gpadmin /data/master'

2. 在segment主机创建数据存储区

在master主机用gpadmin用户执行以下步骤。
(1)创建名为seg_host的文件,内容为所有segment主机名,例如:

sdw1
sdw2
sdw3
sdw4

(2)一次在所有segment主机上创建主和镜像数据目录位置

source /usr/local/greenplum-db/greenplum_path.sh 
gpssh -f seg_host -e 'mkdir -p /data1/primary'
gpssh -f seg_host -e 'mkdir -p /data1/mirror'
gpssh -f seg_host -e 'mkdir -p /data2/primary'
gpssh -f seg_host -e 'mkdir -p /data2/mirror'
gpssh -f seg_host -e 'chown -R gpadmin /data1/*'
gpssh -f seg_host -e 'chown -R gpadmin /data2/*'

官方文档:http://docs.greenplum.org/6-12/install_guide/create_data_dirs.html

六、验证系统

1. 验证网络性能

在master主机用gpadmin用户执行以下步骤。
(1)设置Greenplum环境

source /usr/local/greenplum-db/greenplum_path.sh

(2)检查点对点网络传输速度:

# 双向同时发包,适合偶数个网口的情况
gpcheckperf -f all_host -r N -d /tmp > subnet.out
# 单向顺序发包,适合奇数或偶数个网口的情况
gpcheckperf -f all_host -r n -d /tmp > subnet.out

(3)检查全矩阵多对多网络传输速度:

gpcheckperf -f all_host -r M -d /tmp > subnet.out

结果应该大于100MB/s。

2. 验证磁盘I/O和内存带宽性能

在master主机用gpadmin用户执行以下步骤。
(1)设置Greenplum环境

source /usr/local/greenplum-db/greenplum_path.sh

(2)检查磁盘I/O(dd)和内存带宽(stream)性能

gpcheckperf -f seg_host -r ds -D -d /data1/primary -d /data2/primary -d /data1/mirror -d /data2/mirror > io.out

官方文档:http://docs.greenplum.org/6-12/install_guide/validate.html

七、初始化Greenplum数据库系统

1. 初始化Greenplum数据库

在master主机用gpadmin用户执行以下步骤。

(1)设置Greenplum环境

source /usr/local/greenplum-db/greenplum_path.sh

(2)创建Greenplum数据库配置文件

# 复制Greenplum数据库配置文件
cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpinitsystem_config
# 编辑/home/gpadmin/gpinitsystem_config文件内容如下
ARRAY_NAME="Greenplum Data Platform"
SEG_PREFIX=gpseg
PORT_BASE=6000
declare -a DATA_DIRECTORY=(/data1/primary /data1/primary /data1/primary /data2/primary /data2/primary /data2/primary)
MASTER_HOSTNAME=mdw
MASTER_DIRECTORY=/data/master
MASTER_PORT=5432
TRUSTED_SHELL=ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE
MIRROR_PORT_BASE=7000
declare -a MIRROR_DATA_DIRECTORY=(/data1/mirror /data1/mirror /data1/mirror /data2/mirror /data2/mirror /data2/mirror)

(3)执行初始化

cd ~
gpinitsystem -c gpinitsystem_config -h seg_host -s smdw -S /data/master/ -O config_template

gpinitsystem应用程序将验证系统配置,确保可以连接到每个主机并访问配置中指定的数据目录。如果所有检查都成功,程序将提示确认配置,例如:
=> Continue with Greenplum creation? Yy/Nn

键入y开始执行初始化。安装成功结束时,程序将启动Greenplum数据库系统,应该看到:
=> Greenplum Database instance successfully created.

20210308:13:18:39:082622 gpinitstandby:vvml-z2-greenplum:gpadmin-[INFO]:-Validating environment and parameters for standby initialization...
20210308:13:18:39:082622 gpinitstandby:vvml-z2-greenplum:gpadmin-[ERROR]:-Parent directory  does not exist on host smdw
20210308:13:18:39:082622 gpinitstandby:vvml-z2-greenplum:gpadmin-[ERROR]:-This directory must be created before running gpactivatestandby
20210308:13:18:39:082622 gpinitstandby:vvml-z2-greenplum:gpadmin-[ERROR]:-Failed to create standby
20210308:13:18:39:082622 gpinitstandby:vvml-z2-greenplum:gpadmin-[ERROR]:-Error initializing standby master: Parent directory  does not exist

gpinitstandby -s smdw

(4)排错
如果初始化过程中遇到任何错误,整个过程将失败,并且可能留下一个部分创建的系统。此时应查看错误消息和日志,以确定故障原因以及故障发生的位置。日志文件在~/gpAdminLogs中创建。

根据发生错误的时间,可能需要进行清理,然后重试gpinitsystem程序。例如,如果创建了一些段实例,但有些失败,则可能需要停止postgres进程,并从数据存储区域中删除任何由gpinitsystem创建的数据目录。如果需要,将创建一个backout脚本来帮助清理。

如果gpinitsystem程序失败,并且系统处于部分安装状态,将会创建以下备份脚本:
~/gpAdminLogs/backout_gpinitsystem_<user>_<timestamp>

可以使用此脚本清理部分创建的Greenplum数据库系统。此回退脚本将删除任何gpinitsystem创建的数据目录、postgres进程和日志文件。
sh backout_gpinitsystem_gpadmin_20071031_121053

更正导致gpinitsystem失败的错误并运行backout脚本后,重新初始化Greenplum数据库。

2. 设置Greenplum环境变量

在master主机用gpadmin用户执行以下步骤。

(1)编辑资源文件~/.bashrc,在文件中添加如下环境变量

source /usr/local/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/data/master/gpseg-1
export PGPORT=5432
export PGUSER=gpadmin
export PGDATABASE=postgres
export LD_PRELOAD=/lib64/libz.so.1 ps

(2)使配置生效

source ~/.bashrc

(3)将环境文件复制到standby master

cd ~
scp .bashrc smdw:`pwd`

3. 允许客户端连接

(1)编辑/data/master/gpseg-1/pg_hba.conf文件,添加如下客户端ip或网段,允许任意地址访问。

host   all   all    0.0.0.0/0    md5

pg_hba.conf中的条目会按顺序进行匹配。通用原则是越靠前的条目匹配条件越严格,但认证方法越弱;越靠后的条目匹配条件越松散,但认证方法越强。本地socket连接使用ident认证方式。

4. 修改参数

根据具体硬件配置,postgresql.conf中的属性值可参考https://pgtune.leopard.in.ua/#/。
(1)检查状态

gpstate
gpstate -e
gpstate -f

(2)设置参数

gpconfig -c max_connections -v 2500 -m 500
gpconfig -c max_prepared_transactions -v 500
gpconfig -c shared_buffers -v 5GB -m 32GB
gpconfig -c effective_cache_size -v 16GB -m 96GB
gpconfig -c maintenance_work_mem -v 1280MB -m 2GB
gpconfig -c checkpoint_completion_target -v 0.9
gpconfig -c wal_buffers -v 16MB -m 16MB
# gpconfig -c checkpoint_segments -v 32 --skipvalidation
gpconfig -c effective_io_concurrency -v 200
gpconfig -c default_statistics_target -v 100
gpconfig -c random_page_cost -v 1.1
gpconfig -c log_statement -v none
gpconfig -c gp_enable_global_deadlock_detector -v on
gpconfig -c gp_workfile_compression -v on
gpconfig -c gp_max_partition_level -v 1
# 物理内存 * 0.9 / (primary+mirror数量),单位MB。例如,256G内存,6个primary,6个mirror,设置为19660。
gpconfig -c gp_vmem_protect_limit -v 19660
# 专用master、standby主机上设置为CPU核数,segment主机上设置为CPU核数/(primary+mirror数量)。例如64核,6 primary 6 mirror,设置如下:
gpconfig -c gp_resqueue_priority_cpucores_per_segment -v 5.3 -m 64

(3)执行检查点

psql -c "CHECKPOINT"

(4)重启greenplum

gpstop -r

官方文档:http://docs.greenplum.org/6-12/install_guide/init_gpdb.html

八、后续

1. 创建临时表空间
create tablespace tmptbs location '/data/tmptbs'; 
alter role all set temp_tablespaces='tmptbs';  

2. 创建用户
create role dwtest with password '123456' login createdb;
3. 测试登录
psql -U dwtest -h mdw

参考:

1. 官方文档
http://docs.greenplum.org/6-12/install_guide/install_guide.html

2. greenplum安装详细过程
[原]greenplum安装详细过程 - 勇哥的部落格 - 博客园

3.《greenplum服务器安装-20201123.docx》

4. Greenplum安装部署参考手册
Greenplum安装部署参考手册 - 百度文库
 

以上是关于Greenplum 6 安装配置详解的主要内容,如果未能解决你的问题,请参考以下文章

greenplum安装方法详解

greenplum 6.0 下gpbackup的编译与使用

从[Greenplum 6.0] 1分钟安装尝鲜开始

greenplum 集群安装配置(生产环境)

Greenplum 实时数据仓库实践——Greenplum安装部署

Greenplum 实时数据仓库实践——Greenplum安装部署