目录

一、基础环境

二、集群安装

三、问题记录


本文主要记录基于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

java实现greenplum文本装载 greenplum部署_database

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 等命令查看。

java实现greenplum文本装载 greenplum部署_元数据_02

也可以通过sql :

gp_sydb=# SELECT * from gp_segment_configuration ;

java实现greenplum文本装载 greenplum部署_python_03

4.1 创建mirror 数据目录

在所有需要添加mirror 的主机上,创建存放mirror 的数据目录(之前有创建过)。

4.2 生成addmirror文件

在master 节点上执行gpaddmirrors命令,键入存放mirror节点的日志,生成配置文件。

# gpaddmirrors -o ./addmirror #输入的目录和之前创建的目录对应上。

java实现greenplum文本装载 greenplum部署_database_04

文件内容

java实现greenplum文本装载 greenplum部署_初始化_05

4.3 添加mirror

#gpaddmirrors –i addmirror

没有报错则说明成功。

4.4 查看集群状态

#gpstate –m    #受测试环境资源限制,我测试的时候只成功了一半。

java实现greenplum文本装载 greenplum部署_初始化_06

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

java实现greenplum文本装载 greenplum部署_java实现greenplum文本装载_07

3、集群验证

3.1 集群状态验证

master节点查看standby 状态

#gpstate –f

java实现greenplum文本装载 greenplum部署_python_08

3.2 master standby 节点切换

3.2.1、查看集群状态

#gpstate -f

java实现greenplum文本装载 greenplum部署_database_09

3.2.2、模拟master1 down

# pg_ctl stop -s -m fast -D /opt/greenplum/data/master/gpseg-1

java实现greenplum文本装载 greenplum部署_java实现greenplum文本装载_10

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 密码

java实现greenplum文本装载 greenplum部署_java实现greenplum文本装载_11

3.2.5 验证

#gpstate –f  # 可以看到集群状态正常,但是没有standby节点

java实现greenplum文本装载 greenplum部署_python_12

连接数据库验证

java实现greenplum文本装载 greenplum部署_database_13

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 之间的认证。

java实现greenplum文本装载 greenplum部署_初始化_14

第三部分 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数据账户,并手动添加密码

注:这里执行完后,正常情况,其他节点也会被安装

 

java实现greenplum文本装载 greenplum部署_元数据_15

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进程是失败的。

java实现greenplum文本装载 greenplum部署_元数据_16

java实现greenplum文本装载 greenplum部署_初始化_17

三、问题记录

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 命令。