1、机器分布
IP | 主机名 | 软件 | 服务 |
192.168.153.159 | master01 | GP-6.18.2 | master |
192.168.153.160 | master02(standby) | GP-6.18.2 | master |
192.168.153.161 | segment01 | GP-6.18.2 | segment |
192.168.153.162 | segment02 | GP-6.18.2 | segment |
系统内核版本 | CPU/内存 | 磁盘 |
3.10.0-1160.6.1.el7.x86_64 | 8C*16G | 300GB高效云盘 |
3.10.0-1160.6.1.el7.x86_64 | 8C*16G | 300GB高效云盘 |
3.10.0-1160.6.1.el7.x86_64 | 20C*88G | 8*7300GB本地盘 |
3.10.0-1160.6.1.el7.x86_64 | 20C*88G | 8*7300GB本地盘 |
3、基础环境
#系统初始化配置
#vim /etc/sysctl.conf(将内容清空,粘贴下列配置)
kernel.shmall = 11322042
kernel.shmmax = 46375084032
#kernel.shmall = 1966483
#kernel.shmmax = 8054714368
kernel.shmmni = 4096
vm.overcommit_memory = 2
vm.overcommit_ratio = 95
net.ipv4.ip_local_port_range = 10000 65535
kernel.sysrq = 1
kernel.sem = 50100 128256000 50100 2560
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 = 3
vm.dirty_ratio = 10
vm.min_free_kbytes = 471956
#修改文件句柄数
#vim /etc/security/limits.conf(将内容清空,粘贴下列配置)
* soft nofile 524288
* hard nofile 524288
* soft nproc 131072
* hard nproc 131072
#关闭SEliunx
#vim /etc/selinux/config
SELINUX=disabled
4、安装依赖
#yum install zlib libevent bzip2 krb5-devel libyaml rsync zip ntp* ed apr-util -y
5、创建账户
#创建gpadmin用户
#groupadd gpadmin
#赋予用户组
#useradd -g gpadmin -m -d /home/gpadmin -s /bin/bash gpadmin
#设置gpadmin用户密码
#password gpadmin
6、免密配置
#配置hosts文件
#vim /etc/hosts (并拷贝至集群所有节点)
192.168.153.159 master01
192.168.153.160 master02
192.168.153.161 segment01
192.168.153.161 segment02
#配置密钥(root用户及gpadmin用户都需要进行免密配置)
ssh-keygen –t rsa –b 2048 (一路回车键)
#分发master01节点秘钥至其他节点
ssh-copy –I .ssh/id_rsa hostname
7、下载软件
#greenplum-db-6.18.2-rhel7-x86_64.rpm
8、分区格式化
LVM 分区格式化
没有特殊要求的情况下,对数据盘进行分区使用lvm的方式。
#yum install lvm2-lvmetad && systemctl enable lvm2-lvmetad.service && systemctl start lvm2-lvmetad.service // 安装并使用lvm
#fdisk -l //查看磁盘
#fdisk /dev/vdb //使用这种方式单分区最大2T。
#pvcreate /dev/vdb1 // 创建PV,即物理卷
#vgcreate vgdata /dev/vdb1 //创建VG,即卷组
#lvcreate -l 100%FREE -n lvdata vgdata // 指定PE 的大小用于分区格式化
#mkfs.ext4 /dev/vgdata/lvdata //格式化为ext4文件系统
挂载磁盘
#mkdir /mnt/data/ && mount /dev/vgdata/lvdata /mnt/data
#echo /dev/vgdata/lvdata /mnt/data ext4 defaults 0 0 >> /etc/fstab
RAID10方式(这里指软raid)
生产环境使用的数据盘相对较大,为防止数据丢失,需要对磁盘做RAID 处理。这里使用mdadm 做软Raid10。
# yum install mdadm -y // 安装mdadm
将每4块盘组成一个raid0
#mdadm --create /dev/md1 -v --raid-devices=4 --level=raid10 /dev/vd{b..e}
#mdadm --create /dev/md2 -v --raid-devices=4 --level=raid10 /dev/vd{f..i}
格式化文件系统,使用xfs 文件系统(>4T)
#mkfs.xfs /dev/md1 && mkfs.xfs /dev/md2
挂载磁盘
#mkdir /mnt/data_{1..2}
#mount /dev/md1 /mnt/data_1 && mount /dev/md2 /mnt/data_2
#echo UUID=$(blkid /dev/md1 | awk 'BEGIN { FS="\"" } {print $2}') /mnt/data_1 xfs rw,nodev,noatime,nobarrier,inode64 0 0 >> /etc/fstab
#echo UUID=$(blkid /dev/md2 | awk 'BEGIN { FS="\"" } {print $2}') /mnt/data_2 xfs rw,nodev,noatime,nobarrier,inode64 0 0 >> /etc/fstab
附,删除raid10
#umount /mnt/md1
#mdadm -S /dev/md1
1、master 安装配置
1.1 安装greenplume RPM包
#rpm -ivh open-source-greenplum-db-6.18.0-rhel7-x86_64.rpm
默认安装目录/usr/local
1.2 赋权
#chown –R gpadmin.gpadmin /usr/local/greenplum-db-6.18
以下操作切换到 gpadmin用户操作
1.3 创建集群hostlist
#mkdir /home/gpadmin/ gpconfigs
编写GP的hosts配置文件
#cat gphosts_all
master01
master02
segment01
segment02
#cat gpseghosts_all
segment01
segment02
1.4 测试GP节点之间是否免密
#source /usr/local/greenplum-db/greenplum_path.sh
#gpssh –f /home/gpadmin/conf/gphosts_all
=>pwd
1.5 创建资源目录
在Master节点创建master配文件目录
#mkdir –p /mnt/data_1/master
授权用户及用户组
#chown –R gpadmin:gpadmin /mnt/data
在所有节点创建primary及mirror文件夹并授权(在master操作)
#gpssh –f /home/gpadmin/conf/gpseghosts_all
=>mkdir –p /mnt/data_1/{primary,mirror}
=>mkdir –p /mnt/data_2/{primary,mirror}
=>chown –R gpadmin:gpadmin /mnt/data_1
=>chown –R gpadmin:gpadmin /mnt/data_2
1.6 修改环境变量
# /home/gpadmin/.bash_profile
增加
source /usr/local/greenplum-db-6.18.2/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/mnt/data_1/master/gpseg-1
2、segment 配置
2.1 安装greenplum
将master的greenplum拷贝到segment节点上,并作软连接
拷贝文件至segment所有节点
scp -r /usr/local/greenplum-db-6.18.2 root@hostname:/usr/local/
赋权segment节点文件
chown -R gpadmin:gpadmin /usr/local/greenplum-db-6.18.2
在segment节点创建软连接
ln -s /usr/local/greenplum-db-6.18.2 /usr/local/greenplum-db
2.2 配置环境变量
将master的/home/gpadmin/.bash_profile 拷贝到所有segment节点
scp -r /home/gpadmin/.bash_profile root@hostname:/home/gpadmin/.bash_profile
使配置文件生效
source /home/gpadmin/.bash_profile
3、初始化数据库
3.1 检查节点之间连通性
Master节点执行
#gpcheckperf -f /home/gpadmin/conf/hostlist -r N -d /tmp
3.2 执行初始化
gpinitsystem_config是初始化primary及mirror文件
cd /home/gpadmin/gpconfigs/
vim gpinitsystem_config
修改内容如下:
# FILE NAME: gpinitsystem_config
# Configuration file needed by the gpinitsystem
################################################
#### REQUIRED PARAMETERS
################################################
#### Name of this Greenplum system enclosed in quotes.
ARRAY_NAME="Greenplum Data Platform"
#### Naming convention for utility-generated data directories.
SEG_PREFIX=gpseg
#### Base number by which primary segment port numbers
#### are calculated.
PORT_BASE=6000
#### File system location(s) where primary segment data directories
#### will be created. The number of locations in the list dictate
#### the number of primary segments that will get created per
#### physical host (if multiple addresses for a host are listed in
#### the hostfile, the number of segments will be spread evenly across
#### the specified interface addresses).
declare -a DATA_DIRECTORY=(/mnt/data_1/primary /mnt/data_1/primary /mnt/data_2/primary /mnt/data_2/primary)
#### OS-configured hostname or IP address of the master host.
MASTER_HOSTNAME=master01
#### File system location where the master data directory
#### will be created.
MASTER_DIRECTORY=/mnt/data/master
#### Port number for the master instance.
MASTER_PORT=5432
#### Shell utility used to connect to remote hosts.
TRUSTED_SHELL=ssh
#### Maximum log file segments between automatic WAL checkpoints.
CHECK_POINT_SEGMENTS=8
#### Default server-side character set encoding.
ENCODING=UTF8
################################################
#### OPTIONAL MIRROR PARAMETERS
################################################
#### Base number by which mirror segment port numbers
#### are calculated.
MIRROR_PORT_BASE=7000
#### File system location(s) where mirror segment data directories
#### will be created. The number of mirror locations must equal the
#### number of primary locations as specified in the
#### DATA_DIRECTORY parameter.
declare -a MIRROR_DATA_DIRECTORY=(/mnt/data_1/mirror /mnt/data_1/mirror /mnt/data_2/mirror /mnt/data_2/mirror)
################################################
#### OTHER OPTIONAL PARAMETERS
################################################
#### Create a database of this name after initialization.
#DATABASE_NAME=name_of_database
#### Specify the location of the host address file here instead of
#### with the -h option of gpinitsystem.
#MACHINE_LIST_FILE=/home/gpadmin/gpconfigs/hostfile_gpinitsystem
初始化命令
#gpinitsystem -c gpinitsystem_config -h gpseghosts_all -O config_template
如果没有报错,则执行成功;如果有报错,则需要根据错误修复问题,并将创建的数据目录清理,重建后在执行该初始化命令
初始化数据库
#gpinitsystem -c gpinitsystem_config -h gpseghosts_all -S -O config_template
5、基础命令
5.1、数据库操作命令
gpstart # 启动数据库
gpstop –r # 重启
gpstop –u # 重新加载配置文件,不重启数据库
gpstop # 停止数据库
psql –d dbname # 连接数据库
5.2、集群检查命令
gpstate -e #查看mirror的状态
gpstate -f #查看standby master的状态
gpstate -s #查看整个GP群集的状态
gpstate -i #查看GP的版本
gpstate –m #查看集群mirror 配置和同步状态
gpstate –p #查看primary mirror 的安装目录和端口
gpstate --help #帮助文档,可以查看gpstate更多用法
1、基础安装
系统参数配置、依赖、软件、数据目录、免密登陆等 和master 保持一致。另外所有节点的hosts文件均需增加master2的ip地址映射。具体如下:
1:新建gpadmin用户,用户id与集群节点保持一直;
2:新建数据目录,chown gpadmin.gpadmin $DIR;
3:集群所有主机(Master节点和所有Segment节点)的hosts文件均需要添加Standby主机的信息。
4:完成系统初始化(关闭防火墙,selinux ,sysctl.conf ,limits.conf ...),具体参考greenplum 集群安装初始化安装步骤;
5:直接打通master节点 ssh 免密登陆新添加standby ;
6:standby节点 ssh 免密登陆集群其它节点,通过gpssh工具测试;
7:安装greenplum 软件包
8:检查新添加standby 节点安装目录权限,chown gpadmin.gpadmin $DIR
9:设置standby 节点gpadmin账户的环境变量,使之生效;
2、添加standby 节点
在确定上述基础安装没问题后,在master 节点执行添加standby 节点命令。
#source /usr/local/greenplum-db/greenplum_path.sh
#gpinitstandby –s master2
3、集群验证
3.1 集群状态验证
master节点查看standby 状态
#gpstate –f
3.2 master standby 节点切换
3.2.1、查看集群状态
#gpstate -f
3.2.2、模拟master1 down
# pg_ctl stop -s -m fast -D /opt/greenplum/data/master/gpseg-1
3.2.3、Standby 节点修改配置文件
#cat .bash_profile
export PGPORT=5432
3.2.4 激活standby (master2)节点为master 节点
#source /usr/local/greenplum-db/greenplum_path.sh
#source /home/gpadmin/.bash_profile
#gpactivatestandby -d $MASTER_DATA_DIRECTORY
输入gpadmin 密码
3.2.5 验证
#gpstate –f
连接数据库验证
3.2.6 将master1 修改为standby 节点
Master1 将gpseg-1 目录移除
#/opt/greenplum/data/master/ && mv gpseg-1 gpseg-1.bak
Master2 上添加master1 为 standby 节点
# source /usr/local/greenplum-db/greenplum_path.sh
# gpinitstandby -s master1
执行gpstate –s 查看
这里需要输入密码,因为之前没有做 master2 和master1 之间的认证。
1、GPCC 介绍
GPCC全称Greenplum Command Center,是Greenplum自带的一个监控工具,可以查看Greenplum服务器的CPU,磁盘,网络等信息,还可以查看执行的SQL语句,非常方便。
安装GPCC一定要与自己的Greenplum版本对应,否则不会正常工作。下面是一下安装需要用的一些链接地址:
VMware Tanzu Greenplum Command Center 安装文档
VMware Tanzu Greenplum Command Center 对应关系
https://network.pivotal.io/products/gpdb-command-center#/releases/895715 下载地址
2、GPCC 安装
2.1创建目录
#gpssh –f /home/gpadmin/conf/hostlist
=>mkdir –p /usr/local/greenplum-cc-6.5.0
=>chown –R gpadmin.gpadmin /usr/local/greenplum-cc-6.5.0
=>ln –s /usr/local/greenplum-cc-6.5.0 /usr/local/greenplum-cc
2.2 安装软件
解压后执行
#cd greenplum-cc-web-6.5.0-gp6-rhel7-x86_64
# gpccinstall-6.5.0 –W #-w 创建gpmon数据账户,并手动添加密码
安装完后,会看到在其他节点上也被安装。
2.3 配置认证
master pg_hba.conf
添加:
local all gpmon md5
2.4 重载gp 配置文件
#gpstop –u
2.5 启动gpcc
# gpcc start –W 注意:如果存在 standby 节点,gpcc 可以在standby 启动(官方建议),
添加.pgpass
*:5432:gpperfmon:gpmon:xxxx
使用浏览器输入GPCC服务器地址,端口号28080登录WEB控制台,用户名密码默认为gpmon/123456