二进制替换升级步骤

请注意需要留下足够的升级与测试时间,避免升级出现问题需要回退到老版本。另外,请在升级前做好数据的备份工作,防止出现意外。

配置YUM源

如果是联网情况,在每一个节点上,可以直接下载Oushu Database YUM源文件:

#Redhat/CentOS 7.0, 7.1, 7.2系统并且包含avx指令请配置以下YUM源:
wget -P /etc/yum.repos.d/ http://yum.oushu.io/oushurepo/oushudatabaserepo/centos7/3.0.1.0/oushu-database.repo

#Redhat/CentOS 7.0, 7.1, 7.2系统但不包含avx指令请配置以下YUM源:
wget -P /etc/yum.repos.d/ http://yum.oushu.io/oushurepo/oushudatabaserepo/centos7/3.0.1.0/oushu-database-noavx.repo

#Redhat/CentOS 7.3系统并且包含avx指令请配置以下YUM源:
wget -P /etc/yum.repos.d/ http://yum.oushu.io/oushurepo/oushudatabaserepo/centos7/3.0.1.0/oushu-database-cent73.repo

#Redhat/CentOS 7.3系统但不包含avx指令请配置以下YUM源:
wget -P /etc/yum.repos.d/ http://yum.oushu.io/oushurepo/oushudatabaserepo/centos7/3.0.1.0/oushu-database-cent73-noavx.repo

如果是非联网情况,在每一个Oushu Database节点上,下载新版安装包并配置本地源。

mkdir -p /data1/localrepo
cd /data1/localrepo
wget http://yum.oushu.io/oushurepo/tarball/release/oushu-database/centos7/3.0.1.0/oushu-database-full-3.0.1.0-rhel7-x86_64.tar.gz

tar xzf oushu-database-full-3.0.1.0-rhel7-x86_64.tar.gz
yum -y install httpd
systemctl start httpd
chown -R apache:root /data1/localrepo

/data1/localrepo/oushu-database-full-3.0.1.0/setup_repo.sh

然后我们需要关闭Selinux并且清除重建YUM缓存。

# 关闭Selinux
setenforce 0

# 清除 & 重建yum缓存
yum clean all
yum makecache

停止Oushu Database

在master节点,gpadmin用户登录:

hawq stop cluster -a
# 如果有正在运行查询,并且想立刻停止Oushu Database,可以使用
hawq stop cluster -a -M immediate

备份配置文件

在master节点:

cd /usr/local/hawq
cp -r etc /home/gpadmin

删除旧版本Oushu Database

在master节点上root登录,并执行下面命令,其中hostfile包含所有Oushu Database安装节点的机器名:

hawq ssh -f hostfile -e 'yum -y remove hawq'

安装新版本Oushu Database

master节点上root登录,并执行下面命令:

hawq ssh -f hostfile -e 'yum -y install hawq'

恢复配置文件

master节点上,gpadmin用户登录:

cd /home/gpadmin
cp -r etc/ /usr/local/hawq
hawq scp -r -f hostfile /usr/local/hawq/etc =:/usr/local/hawq

启动Oushu Database

hawq start cluster -a

升级后检查

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
 psql -d postgres

 # 检查是否已经是最新版本:
 postgres=# select version();

 # 创建表并插入数据测试

 postgres=# create table t(i int, j int);
 postgres=# insert into t values(1,2),(2,3),(3,4);
 postgres=# select * from t;