greenplum集群安装(包含greenplum集群高可用配置)

写在前面:本集群安装包含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集群安装(所有节点都要执行)

以三台机器进行安装,各个机器安装角色分配如下,规划如下:

主机名masterstandby masterprimarymirror
master
sdw1
sdw2

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

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值