目录
一、基础环境
二、集群安装
三、问题记录
本文主要记录基于centos7 64位的gp-6.18安装部署,包括集群安装、集群切换测试、监控安装。
一、基础环境
1、机器分布
IP | 主机名 | 软件 | 服务 |
192.168.153.159 | Master1 | GP-6.18,GPCC-6.5.0 | gp、gpcc |
192.168.153.160 | Segment1 | GP-6.18,GPCC-6.5.0 | gp、gpcc |
192.168.153.161 | Segment2 | GP-6.18,GPCC-6.5.0 | gp、gpcc |
192.168.153.162 | Master2(Standby) | GP-6.18,GPCC-6.5.0 | gp、gpcc |
注:
A、集群部署方式
第一部分 单master 多segment 集群。
第二部分 双master多segment 集群。
第三部分 GPCC 监控安装
B、master 镜像standby、segment 镜像 mirror。
为Master节点搭建Standby的过程中,GreenPlum会自动关闭数据库,并以utility模式打开Master节点,然后修改gp_segment_configuration字典中增加Standby的信息,然后再关闭Master节点,将Master的数据拷贝到Standby节点,最后启动数据库,所以,在为Master节点添加Standby时,需要在空闲时段进行,否则会影响业务。
2、基础环境
系统初始化配置
#cat /etc/sysctl.conf
kernel.shmmax = 500000000
kernel.shmmni = 4096
kernel.shmall = 4000000000
kernel.sem = 500 2048000 200 4096
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
fs.file-max = 800000
fs.aio-max-nr = 196608
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_forward = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.conf.all.arp_filter = 1
net.ipv4.ip_local_port_range = 10000 65535
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
vm.overcommit_memory = 2
vm.overcommit_ratio = 95
vm.swappiness = 0
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.max_map_count = 1966080
net.ipv4.neigh.default.gc_stale_time = 120
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.r
#cat /etc/security/limits.conf
* soft nofile 800000
* hard nofile 800000
* soft nproc 131072
* hard nproc 131072
#cat /etc/sysconfig/selinux
SELINUX=disabled
#setenforce 0
#getenforce 查看Permissive
3、安装依赖
#yum install zlib libevent bzip2 krb5-devel libyaml rsync zip ntp* ed apr-util -y
4、免密配置
#cat /etc/hosts
192.168.153.159 master1
192.168.153.162 master2
192.168.153.160 segment1
192.168.153.161 segment2
配置密钥(我测试的时候 root、gpadmin 都做了免密)
#ssh-keygen –t rsa –b 2048
#ssh-copy –i .ssh/id_rsa master1 segment1 segment2
5、创建账户
#groupadd gpadmin
#useradd -g gpadmin -m -d /home/gpadmin -s /bin/bash gpadmin
#password gpadmin
6、下载软件
#wget https://github-releases.githubusercontent.com/44781140/55b87bd3-6b35-4ebe-9de4-96aa218076eb?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20211014%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20211014T032006Z&X-Amz-Expires=300&X-Amz-Signature=fa4cf20435c47e4d4f73bf6438148c0c9e684e4f1c443019e2d62750d4f9da79&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=44781140&response-content-disposition=attachment%3B%20filename%3Dopen-source-greenplum-db-6.18.0-rhel7-x86_64.rpm&response-content-type=application%2Foctet-stream
7、Ntp 服务
#cat /etc/ntp.conf 最后增加一行
server master1 perfer
#systemctl restart ntpd
二、集群安装
第一部分单master集群安装部署
1、master 安装配置
1.1 安装greenplume
#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
1.3 创建集群host
切换到 gpadmin
#mkdir /home/gpadmin/conf
#cat hostlist
master1
master2
segment1
segment2
#cat seg_hosts
segment1
segment2
1.4 配置免密
#source /usr/local/greenplum-db/greenplum_path.sh
#gpssh-exkeys -f /home/gpadmin/conf/hostlist
测试免密
#gpssh –f /home/gpadmin/conf/hostlist
=>pwd
1.5 创建资源目录
#gpssh –f /home/gpadmin/conf/hostlist
=>mkdir –p /opt/greenplum/data/{master,primary,mirror}
=>mkdir –p /opt/greenplum/data2/{primary,mirror}
=>chown –R gpadmin.gpadmin /opt/greenplum
1.6 修改环境变量
#cat /home/gpadmin/.bash_profile
增加
#source /usr/local/greenplum-db/greenplum_path.sh #这里注释掉是为了解决master 安装完后,默认的python 环境被替换问题。
export MASTER_DATA_DIRECTORY=/opt/greenplum/data/master/gpseg-1
export GPPORT=5432
export PGDATABASE=gp_sydb
2、segment 配置
2.1 安装greenplum
将master 的greenplum 拷贝到segment 节点上,并作软连接。
2.2 配置环境变量
将master 的/home/gpadmin/.bash_profile 拷贝到segment
3、初始化数据库
3.1 检查节点之间连通性
Master节点执行
#gpcheckperf -f /home/gpadmin/conf/hostlist -r N -d /tmp
3.2 执行初始化
初始化 Greenplum 配置文件模板都在/usr/local/greenplum-db/docs/cli_help/gpconfigs目录下,gpinitsystem_config是初始化 Greenplum 的模板,此模板中 Mirror Segment的配置都被注释;创建一个副本,对其以下配置进行修改:
#cp gpinitsystem_config initgp_config
#cat initgp_config
ARRAY_NAME="gp_sydb"
SEG_PREFIX=gpseg
PORT_BASE=6000
declare -a DATA_DIRECTORY=(/opt/greenplum/data/primary /opt/greenplum/data/primary /opt/greenplum/data/primary /opt/greenplum/data2/primary /opt/greenplum/data2/primary /opt/greenplum/data2/primary)
MASTER_HOSTNAME=master1
MASTER_DIRECTORY=/opt/greenplum/data/master
MASTER_DATA_DIRECTORY=/opt/greenplum/data/master/gpseg-1
MASTER_PORT=5432
TRUSTED_SHELL=ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE
declare -a MIRROR_DATA_DIRECTORY=(/opt/greenplum/data/mirror /opt/greenplum/data/mirror /opt/greenplum/data/mirror /opt/greenplum/data2/mirror /opt/greenplum/data2/mirror /opt/greenplum/data2/mirror)
DATABASE_NAME=gp_sydb
MACHINE_LIST_FILE=/home/gpadmin/conf/seg_hosts
执行初始化命令
#gpinitsystem -c initgp_config –D
如果没有报错,则执行成功;如果有报错,则需要根据错误修复问题,并将创建的数据目录清理,重建后在执行该初始化命令。
4、添加mirror
新建的集群只有primary 节点,没有mirror 节点。当然也可以通过初始化创建mirror 。在3.2 配置文件中新增 MIRROR_PORT_BASE=7000。这里是在已经存在的GP集群中增加mirror。
可以通过gpstate –e / gpstate –m 等命令查看。
也可以通过sql :
gp_sydb=# SELECT * from gp_segment_configuration ;
4.1 创建mirror 数据目录
在所有需要添加mirror 的主机上,创建存放mirror 的数据目录(之前有创建过)。
4.2 生成addmirror文件
在master 节点上执行gpaddmirrors命令,键入存放mirror节点的日志,生成配置文件。
# gpaddmirrors -o ./addmirror #输入的目录和之前创建的目录对应上。
文件内容
4.3 添加mirror
#gpaddmirrors –i addmirror
没有报错则说明成功。
4.4 查看集群状态
#gpstate –m #受测试环境资源限制,我测试的时候只成功了一半。
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更多用法
第二部分 master standby 安装配置
参考https://blog.51cto.com/michaelkang/2317753
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 # 可以看到集群状态正常,但是没有standby节点
连接数据库验证
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 之间的认证。
第三部分 GPCC监控安装
1、GPCC 介绍
GPCC全称Greenplum Command Center,是Greenplum自带的一个监控工具,可以查看Greenplum服务器的CPU,磁盘,网络等信息,还可以查看执行的SQL语句,非常方便。
安装GPCC一定要与自己的Greenplum版本对应,否则不会正常工作。下面是一下安装需要用的一些链接地址:
Installing Pivotal Greenplum Command Center | Tanzu™ Greenplum GPCC Docs 安装文档
Pivotal Greenplum Command Center Supported Platforms | Tanzu™ Greenplum GPCC Docs 对应关系
Download VMware Tanzu™ Greenplum® Command Center — VMware Tanzu Network 下载地址
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
使用浏览器输入GPCC服务器地址,端口号28080登录WEB控制台,用户名密码为gpmon/123456 (安装的时候配置的密码)我的测试环境资源有限,会看到有些mirror进程是失败的。
三、问题记录
1、python 环境修复
master 安装完后发现本地的yum 命令无法使用,提示没有yum 模块,经查yum 命令使用的python 环境被修改。通过which python 命令发现python 路径变成/usr/local/greenplum-db-6.18.0/ext/python/bin/python
修复方式:
将/home/gpadmin/.bash_profile 增加的一行注释掉,后续使用greenplum 相关的命令时使用绝对路径或者手动执行该命令。
#source /usr/local/greenplum-db/greenplum_path.sh
2、初始化报错
执行初始化命令时gpinitsystem -c initgp_config –D, 一直报:
Total processes marked as failed
检查 selinux , limits ,均正常。 网上搜索缺少ed依赖报,安装后解决。原因暂时未知。
3、Greenplum 端口修改后,执行psql 错误
执行psql –p 端口
4、操作元数据报错
ERROR: permission denied: "gp_segment_configuration" is a system catalog
大量的信息保存在元数据中,所有的元数据都是内部维护的,例如建表、建索引、删表等操作,自动维护元数据。如果需要直接对元数据进行修改,则需要打开元数据修改开关。
# show allow_system_table_mods; #默认是关闭
# set allow_system_table_mods=’on’;
5、删除mirror
打开元数据修改
# set allow_system_table_mods='on';
查询元数据
# select * from gp_segment_configuration;
删除mirror
# delete from gp_segment_configuration where dbid between 15 and 26;
删除数据文件
#rm –fr /opt/greenplum/data/mirror/*
#rm –fr /opt/greenplum/data2/mirror/*
然后在重新执行创建mirros 命令。