前言
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系统所有主机名:
znhcy-edcmpp-01
znhcy-edcmpp-02
znhcy-edcmpp-03
znhcy-edcmpp-04
znhcy-edcmpp-05
znhcy-edcmpp-06
注:这里主机名需与hosts文件一致。
3,以root身份登录所有机器创建操作系统用户组和用户:
groupadd zhengpadmin
useradd zhengpadmin -g zhengpadmin
passwd zhengpadmin #修改zhengpadmin用户的密码
4,所有节点创建目录:
主节点与主备节点(znhcy-edcmpp-01,znhcy-edcmpp-02):
mkdir -p /data1/master
mkdir -p /data1/p1
mkdir -p /data1/p2
mkdir -p /data1/m1
mkdir -p /data1/m2
数据节点(znhcy-edcmpp-03到znhcy-edcmpp-06):
mkdir -p /data1/p1
mkdir -p /data1/p2
mkdir -p /data1/m1
mkdir -p /data1/m2
给目录赋权:
chown -R zhengpadmin:zhengpadmin /data1
chown -R zhengpadmin:zhengpadmin /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@znhcy-edcmpp-02:/usr/local
或
gpseginstall -f hostfile_exkeys -u zhengpadmin -p zhengpadmin
三,检查节点系统:
检查OS配置:
1,以zhengpadmin登录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,以zhengpadmin用户登录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=znhcy-edcmpp-01 #主节点的hostname
MASTER_DIRECTORY=/data/master
MASTER_PORT=5432
DATABASE_NAME=znedb_sit
3,执行初始化命令:
/usr/local/greenplum-db-6.8.1/bin/gpinitsystem -c gpinitsystem_config -h hostfile_exkeys
五,配置GP实例环境变量:
1,以zngpadmin用户登录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