写在前面:本集群安装包含master启用高可用、单机多segment、segment 备份节点(mirror)启用。Greenplum数据库版本,建议选择5.x,目前6.x版本未进入正式版本,暂不建议进入生产环境。目前已测试版本为greenplum-5.16。
1. 软件下载
greenplum官方下载地址:https://network.pivotal.io/products/pivotal-gpdb/
进入该页面后选择你所需要的数据库版本,然后选择Greenplum Database Server文件夹,选择相应的操作系统版本下载即可。
2.系统环境准备(所有主机都要执行以下步骤)
2.1 关闭selinux和firewall
查看selinux状态,命令如下:
# sestatus
SELinux status: disabled
关闭selinux
# vim /etc/selinux/config
SELINUX=disable
查看防火墙命令
# systemctl status firewalld
关闭防火墙命令
# systemctl stop firewalld.service
# systemctl disable firewalld.service
2.2 修改系统内核参数
# vim /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 76724600
# 可选:kernel.core_pattern = /data01/corefiles/core_%e_%u_%t_%s.%p
# /data01/corefiles 事先建好,权限777,如果是软链接,对应的目录修改为777
kernel.sem = 4096 2147483647 2147483646 512000
# 信号量, ipcs -l 或 -u 查看,每16个进程一组,每组信号量需要17个信号量。
kernel.shmall = 107374182
# 所有共享内存段相加大小限制 (建议内存的80%),单位为页。
kernel.shmmax = 274877906944
# -大单个共享内存段大小 (建议为内存一半), >9.2的版本已大幅降低共享内存的使用,单位为字节。
kernel.shmmni = 819200
# 一共能生成多少共享内存段,每个PG数据库集群至少2个共享内存段
net.core.netdev_max_backlog = 10000
net.core.rmem_default = 262144
# The default setting of the socket receive buffer in bytes.
net.core.rmem_max = 4194304
# The maximum receive socket buffer size in bytes
net.core.wmem_default = 262144
# The default setting (in bytes) of the socket send buffer.
net.core.wmem_max = 4194304
# The maximum send socket buffer size in bytes.
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_keepalive_intvl = 20
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_mem = 8388608 12582912 16777216
net.ipv4.tcp_fin_timeout = 5
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syncookies = 1
# 开启SYN Cookies。当出现SYN等待队列溢出时,启用cookie来处理,可防范少量的SYN攻击
net.ipv4.tcp_timestamps = 1
# 减少time_wait
net.ipv4.tcp_tw_recycle = 0
# 如果=1则开启TCP连接中TIME-WAIT套接字的快速回收,但是NAT环境可能导致连接失败,建议服务端关闭它
net.ipv4.tcp_tw_reuse = 1
# 开启重用。允许将TIME-WAIT套接字重新用于新的TCP连接
net.ipv4.tcp_max_tw_buckets = 262144
net.ipv4.tcp_rmem = 8192 87380 16777216
net.ipv4.tcp_wmem = 8192 65536 16777216
net.nf_conntrack_max = 1200000
net.netfilter.nf_conntrack_max = 1200000
vm.dirty_background_bytes = 409600000
# 系统脏页到达这个值,系统后台刷脏页调度进程 pdflush(或其他) 自动将(dirty_expire_centisecs/100)秒前的脏页刷到磁盘
# 默认为10%,大内存机器建议调整为直接指定多少字节
vm.dirty_expire_centisecs = 3000
# 比这个值老的脏页,将被刷到磁盘。3000表示30秒。
vm.dirty_ratio = 95
# 如果系统进程刷脏页太慢,使得系统脏页超过内存 95 % 时,则用户进程如果有写磁盘的操作(如fsync, fdatasync等调用),则需要主动把系统脏页刷出。
# 有效防止用户进程刷脏页,在单机多实例,并且使用CGROUP限制单实例IOPS的情况下非常有效。
vm.dirty_writeback_centisecs = 100
# pdflush(或其他)后台刷脏页进程的唤醒间隔, 100表示1秒。
vm.swappiness = 0
# 不使用交换分区
vm.mmap_min_addr = 65536
vm.overcommit_memory = 0
# 在分配内存时,允许少量over malloc, 如果设置为 1, 则认为总是有足够的内存,内存较少的测试环境可以使用 1 .
vm.overcommit_ratio = 90
# 当overcommit_memory = 2 时,用于参与计算允许指派的内存大小。
vm.zone_reclaim_mode = 0
# 禁用 numa, 或者在vmlinux中禁止.
net.ipv4.ip_local_port_range = 40000 65535
# 本地自动分配的TCP, UDP端口号范围
fs.nr_open=20480000
# 单个进程允许打开的文件句柄上限
# 以下参数请注意
# vm.extra_free_kbytes = 4096000
# vm.min_free_kbytes = 2097152 # vm.min_free_kbytes 建议每32G内存分配1G vm.min_free_kbytes
# 如果是小内存机器,以上两个值不建议设置
# vm.nr_hugepages = 66536
# 建议shared buffer设置超过64GB时 使用大页,页大小 /proc/meminfo Hugepagesize
# vm.lowmem_reserve_ratio = 1 1 1
# 对于内存大于64G时,建议设置,否则建议默认值 256 256 32
重新加载修改文件
# sysctl -p
2.3 修改资源限制
# vim /etc/security/limits.conf
# nofile超过1048576的话,一定要先将sysctl的fs.nr_open设置为更大的值,并生效后才能继续设置nofile. * soft nofile 1024000
* hard nofile 1024000
* soft nproc unlimited
* hard nproc unlimited
* soft core unlimited
* hard core unlimited
* soft memlock unlimited
* hard memlock unlimited
2.4 配置每台主机的hosts文件
# vim /etc/hosts
192.168.1.2 master
192.168.1.3 sdw1
192.168.1.4 sdw2
2.5 配置集群主机之间免密登录
hostfile内容如下
master
sdw1
sdw2
利用gpssh-exkeys配置免密
# gpssh-exkeys -f ./hostfile
3.Greenplum集群安装(所有节点都要执行)
以三台机器进行安装,各个机器安装角色分配如下,规划如下:
3.1 创建greenplum管理员用户
# 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
3.2 创建安装目录
# mkdir -p /soft/gp
3.3 在所有主机上安装greenplum
二进制包安装
规划好greenplum安装目录,并将下载的二进制包放在安装目录下。
解压安装包
# unzip greenplum-db-<version>-<platform>.zip
执行安装文件
# chomod u+x greenplum-db-<version>-<platform>.bin
# /bin/bash greenplum-db-<version>-<platform>.bin
注意:按照提示进行安装,注意选择安装目录,这里安装目录为:/soft/gp,可使用gpadmin用户进行安装,需要确保安装目录有读写权限。
如果使用root用户进行安装,需要修改权限,如下:
# chown -R gpadmin /soft/gp/greenplum*
# chgrp -R gpadmin /soft/gp/greenplum*
3.4 greenplum目录介绍
greenplum_path.sh:Greenplum数据库环境变量文件
bin:管理工具、客户端程序及服务程序
docs:帮助文档
etc:OpenSSL的配置示例
ext:一些GP工具使用的捆绑程序
inlcude:C头文件
lib:库文件
pxf:pxf插件
sbin:支持的或者内部的脚本和程序
share:共享文件
3.5 设置gpadmin用户环境变量
# vim ~/.bashrc
# source /soft/gp/greenplum-db/greenplum_path.sh
4. Greenplum集群初始化
4.1 在master节点上切换到gpadmin用户
# su - gpadmin
4.2 创建集群所有主机文件gp_hostlist
master
sdw1
sdw2
4.3 创建集群segment主机文件segment_hosts
sdw1
sdw2
4.4 批量创建数据存储目录
# gpssh -f /home/gpadmin/gp_hostlist
//在所有主机上创建以下3个目录
=> mkdir -p /soft/gp/data/master # 用于存放master数据
=> mkdir -p /soft/gp/data/primary # 用于存放segment primary数据
=> mkdir -p /soft/gp/data/mirror # 用于存放segment mirror数据
4.5 配置集群初始化文件
# cp /soft/gp/greenplum-db/docs/cli_help/gpconfigs/gpinitsystem_config ~
# vim gpinitsystem_config
ARRAY_NAME="greenplum cluster"
CLUSTER_NAME="greenplum cluster"
# 所有segment主机列表
MACHINE_LIST_FILE=segment_hosts
SEG_PREFIX=gpseg
PORT_BASE=28000
# master 节点端口
MASTER_PORT=5432
# segment primary数据存储目录 配置2个目录表示每个主机安装2个segment
declare -a DATA_DIRECTORY=(/soft/gp/data/primary /soft/gp/data/primary)
# master节点主机名或IP
MASTER_HOSTNAME=master
#master数据存储目录
MASTER_DIRECTORY=/soft/gp/data/master
TRUSTED_SHELL=ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE
# 默认连接数
DEFAULT_QD_MAX_CONNECT=1000
######### 以下是segment mirror节点配置(可选:看你是否需要配置高可用)######
MIRROR_PORT_BASE=29000
REPLICATION_PORT_BASE=30000
MIRROR_REPLICATION_PORT_BASE=31000
# segment mirror数据存储目录,注意mirror个数要和primary保持一致
declare -a MIRROR_DATA_DIRECTORY=(/soft/gp/data/mirror /soft/gp/data/mirror)
4.6 利用gpinitsystem初始化集群
# gpinitsystem -c ~/gpinitsystem_config -s standby_master_hostname -P standby_mster_port --standby-datadir standby_master_datadir
注意上面的初始化命令启用了master节点的高可用节点standby,若你不需要启用高可用,执行如下命令
# gpinitsystem -c ~/gpinitsystem_config
当你看到如下信息表示greenplum集群安装成功
=> Greenplum Database instance successfully created.
4.7 修改greenplum环境变量
# vim greenplum_path.sh
# 追加如下内容
export MASTER_DATA_DIRECTORY=/soft/gp/data/master/gpseg-1
export PGDATA=$MASTER_DATA_DIRECTORY
export PGHOST=127.0.0.1
export PGPORT=5432
export PGUSER=gpadmin
export PGPASSWORD=123456
export PGDATABASE=postgres
4.8 集群优化参数配置
使用gpconfig进行统一配置
gpconfig -c max_connections -v 5000 -m 1000
gpconfig -c shared_buffers -v '1GB'
gpconfig -c max_prepared_transactions -v '1500'
gpconfig -c max_stack_depth -v '4MB'
gpconfig -c vacuum_cost_delay -v '0'
gpconfig -c synchronous_commit -v 'off'
gpconfig -c wal_buffers -v '16MB'
gpconfig -c wal_writer_delay -v '10ms'
gpconfig -c checkpoint_segments -v '128' --skipvalidation
gpconfig -c random_page_cost -v '1.3'
gpconfig -c log_statement -v 'ddl'
gpconfig -c vacuum_freeze_table_age -v '1200000000'
gpconfig -c autovacuum_freeze_max_age -v '1300000000' --skipvalidation
gpconfig -c autovacuum_vacuum_cost_delay -v '0' --skipvalidation
gpconfig -c autovacuum -v 'on' --skipvalidation
4.9 重启集群,使配置生效
# gpstop -r -M fast -a
附录1 greenplum集群监控Greenplum Command Center安装:https://blog.csdn.net/u011563666/article/details/97804497
本文来源:https://blog.csdn.net/u011563666/article/details/97784037