前言

GP数据升级与迁移,重点与难点在于保证数据的完整性,而非数据库升级本身。
本次升级的思路为:现役正式库正常运行,新建用户安装新版本GP实例,配置不同的端口,安装成功后新建用户,角色,权限,而后从现役正式库导出数据并导入新实例,快速检查数据库的数据情况后,停止现役库,修改新实例的端口,从而完成实例切换,服务器真正停机时间约为10分钟左右。

一、准备工作

当前数据库版本为greenplum5.12.0,准备升级到最新版本6.8.1。
1,在官方网站下载对应版本gp的RPM:
https://network.pivotal.io/pr...

2,准备安装RPM所需依赖并安装GP的RPM:

yum install -y apr apr-util bzip2 e2fsprogs e2fsprogs-libs ed keyutils-libs-devel krb5-devel krb5-libs libcom_err libcom_err-devel libevent libkadm5 libselinux libselinux-devel libselinux-python libselinux-utils libsepol-devel libss libverto-devel libyaml pcre-devel rsync zip

注:如果是离线环境可以使用downloadonly在本机下载好上传安装依赖。

3,检查现有环境的Linux系统设置与域名解析配置是否正确,具体参数检查参照GP安装。

二、运行GP安装文件

1,运行GP安装文件:

rpm -ivh greenplum-db-6.8.1-rhel7-x86_64.rpm

缺省安装目录为/usr/local/greenplum-db-6.8.1。

2,创建hostfile_exkeys文件,包含GP系统所有主机名:

greenplum-01
greenplum-02
greenplum-03
greenplum-04
greenplum-05
greenplum-06

注:这里主机名需与hosts文件一致。

3,以root身份登录所有机器创建操作系统用户组和用户:

groupadd greenplum   
useradd greenplum -g greenplum
passwd greenplum  #修改greenplum用户的密码

4,所有节点创建目录:
主节点与主备节点(greenplum-01,greenplum-02):

mkdir -p /data1/master
mkdir -p /data1/p1
mkdir -p /data1/p2
mkdir -p /data1/m1
mkdir -p /data1/m2

数据节点(greenplum-03到greenplum-06):

mkdir -p /data1/p1
mkdir -p /data1/p2
mkdir -p /data1/m1
mkdir -p /data1/m2

给目录赋权:

chown -R greenplum:greenplum /data1
chown -R greenplum:greenplum /usr/local/greenplum-db-6.8.1

5,所有机器做免秘钥登录:
生成秘钥

ssh-keygen -t rsa

分发秘钥:

ssh-copy-id -i id_rsa.pub -p port hostname

6,分发GP文件到每个节点:

scp -r /usr/local/greenplum-db-6.8.1 root@greenplum-02:/usr/local

gpseginstall -f hostfile_exkeys -u greenplum -p greenplum

三,检查节点系统:

检查OS配置:
1,以greenplum登录master主机,并生效greenplum_path.sh文件:

source /usr/local/greenplum-db-6.8.1/greenplum_path.sh

2,执行检查命令:

gpcheck -f hostfile-check

检查磁盘读写与网络情况:

gpcheckperf -f hostfile-check -d /data1

四,初始化GPDB系统:

1,以greenplum用户登录master,拷贝初始化脚本:

cp /usr/local/greenplum-db-6.8.1/docs/cli_help/gpconfigs/gpinitsystem_config ./

2,修改初始化参数:

PORT_BASE=40000    #segment之间的通信端口,会根据segment数自动加
declare -a DATA_DIRECTORY=(/data/primary /data1/primary)  #数据文件路径
MASTER_HOSTNAME=greenplum-01    #主节点的hostname
MASTER_DIRECTORY=/data/master
MASTER_PORT=5432
DATABASE_NAME=greenplumdb_sit

3,执行初始化命令:

/usr/local/greenplum-db-6.8.1/bin/gpinitsystem -c gpinitsystem_config -h hostfile_exkeys

五,配置GP实例环境变量:

1,以greenplum用户登录master机器,修改bashrc与bash_profile并分发到所有节点:

source /usr/local/greenplum-db-6.8.1/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/data1/master/gpseg-1
alias ssh ="ssh -p 9092"    #这里是因为此次集群环境修改了默认ssh端口为9092,一般不需要此配置
export PGPORT=5433          #bashrc添加就行,这里正式实例是5432,后续会修改端口

使配置生效

source ~/.bashrc
source ~/.bash_profile

注:数据节点不需要配置MASTER_DATA_DIRECTORY

2,修改GP配置文件:
远程访问及权限

vi /data/master1/gpseg-1/pg_hba.conf 
host     all      all      0.0.0.0/0     md5     #添加
vi /data/master/gpseg-1/postgresql.conf
listen_address='*'             #解注释
search_path='"$user",public'   #修改默认访问的schema

使改动生效

gpstop -u

风行无极
4 声望1 粉丝

菜鸡数据一枚~~~~