Greenplum数据库升级实务(上)

任何系统的升级都有个量变到质变的过渡:版本相差小的时候,通常很简单,版本相差大的时候,就是一场噩梦。不过版本相差小的时候,大伙儿往往安于现状。本文实际记录从GP4.2.7.2到4.3.5.0的升级过程,从版本号看相差不大,但是GP的版本命名中,第二位的变化就已经是大升级了。另需说明的是,本文升级的GP数据库规模不小,用户较多,管理混沌,在加上GP实在是有点儿脆弱(相比oracle等),所以遇到了较多元数据问题(请参加前4篇)。

起点

  • 数据库版本:Greenplum Database 4.2.7.2 build 1(PostgreSQL 8.2.15)
  • 自定义函数:$GPHOME/lib有使用uuid-1.6.2.tar.gz编译的oracle自定义函数
  • 没有append-only tables
  • ETL里有使用external tables
  • 没有使用extensions,但安装了pljava和plr,没有安装madlib
  • 图形管理界面版本:Greenplum Command Center 1.2.0.1 build 2
  • 有standby master,有mirror

目标

  • 数据库版本:Greenplum Database 4.3.5.0 build 1(PostgreSQL 8.2.15)
  • 图形管理界面版本:Greenplum Command Center 1.3.0.0 build 91

准备

介质

时间估计

登录master节点,上传并解压estimate_42_to_43_migrate_time.zip,得到estimate_42_to_43_migrate_time.sql,切换到gpadmin用户

$ psql -d databasename -f estimate_42_to_43_migrate_time.sql
$ psql -d databasename -c "select estimate_42_to_43_migrate_time();"
WARNING:  "work_mem": setting is deprecated, and may be removed in a future release.
                                                                   estimate_42_to_43_migrate_time                            

-----------------------------------------------------------------------------------------------------------------------------
---------------------------------------
 estimate_42_to_43_migrate_time() version: 0.3 run at 2015-05-07 13:52:48
 GPDB version: PostgreSQL 8.2.15 (Greenplum Database 4.2.7.2 build 1) on x86_64-unknown-linux-gnu, compiled by GCC gcc (GCC) 
4.4.2 compiled on Feb 25 2014 18:05:04
 Database: databasename  
 Number of primary segments: 88
 Num of AO objects: 0
 Num of heap objects: 102593
 Estimated migrate time: 01:07:14
(7 rows)

如果有多个数据库,需要针对每个数据运行上面的脚本,并加和时间。

文件备份

通知所有数据库用户备份自己copy到服务器上的文件

数据一致性检查

这一检查非常重要,虽然官方文档上写的是推荐,但是只要存在错误,基本上就不能升级了,必须想办法解决。官方文档上写的“a few weeks”之前执行这一操作的建议,非常必要,GP库到了一定量级,错误几乎是必然的,解决这些错误真的是要花费以星期计的时间。

  • 使用GP管理员用户登陆master
  • 重启数据到restricted mode
$ gpstop -M fast
$ gpstart -R
$ $GPHOME/bin/lib/gpcheckcat  -p 5432 databasename 
  • 使用GP管理员用户登陆master,执行gpstate检查seg node状态,如有failed seg,执行gprecoverseg和gprecoverseg -R修复
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值