原 Greenplum版本升级概述及小版本升级示例
升级简介
greenplum 升级分两种:
- 大版本升级:跨越主版本的升级,比如 4.3 or 5 to 6,6升级到7
- 小版本升级:主版本内的升级,比如6.x to 6.newer
大版本升级
- Greenplum 从5.28版本开始可以直接使用
gpupgrade
工具升级到6.9及以后的版本,工具开源:https://github.com/greenplum-db/gpupgrade。gpupgrade 是一个用于 Greenplum 数据库版本升级的工具,它提供了一种简单的方法来将 Greenplum 数据库集群从一个主要版本升级到另一个主要版本。 - 对于GP4.3版本的数据库,如果升级到6,需要通过备份恢复的方式,可以使用gpbackup、gprestore或gpcopy 工具来实现,这种方式同样适用于GP5 to GP6
以gpcopy命令,以4.3 升级到 6 为例,升级流程如下:
- 对原集群做好备份,并保证备份可用,如果升级失败需要原集群继续提供服务
- 准备GP6集群,保证集群状态可用
- 确保有足够的磁盘空间可以保留备份文件,建议数据库的5倍大小
- 如果磁盘不够,使用gpcopy(4.3.26及以上版本 or 5.9及以上版本)命令,不建议使用–truncate-source-after参数
- 对于GP6不兼容的扩展模块,需要在备份之前或者在restore的时候需要排除相关的表
- GP6 的系统表、系统视图及函数变化比较大,留好操作日志,便于修复
gpupgrade 的升级流程大致如下:
- 确认环境:在开始升级之前,需要确认源和目标 Greenplum 数据库版本的兼容性,并确保升级环境满足一些先决条件,如空间和内存等资源。
- 预升级检查:运行 gpupgrade 工具的
pre-upgrade
子命令,它会检查是否满足升级所需的各种条件,例如必备软件版本、配置文件设置、备份等。 - 备份源数据库:在升级之前,需要对源数据库进行完整备份,以便在升级过程中发生意外情况时进行还原。
- 执行升级:运行 gpupgrade 工具的
upgrade
子命令,它会执行升级过程,包括关闭源数据库、备份源数据库、替换二进制文件、启动目标数据库等。 - 后升级检查:在升级完成后,运行 gpupgrade 工具的
post-upgrade
子命令,它会检查目标数据库是否成功启动,升级是否完成,并验证新版本的 Greenplum 数据库是否工作正常。 - 完成升级:在确认升级成功后,删除源数据库备份,清理 gpupgrade 工具的工作目录以及其他不必要的文件。
需要注意的是,gpupgrade 可以进行滚动升级,即升级过程不需要在整个集群中同时执行,而是逐个段进行升级。此外,如果在升级过程中出现任何问题,请参阅 gpupgrade 文档中提供的解决方案,或者向 Greenplum 社区寻求支持。
小版本升级步骤
小版本升级步骤很简单,如下:
1、对原集群做好备份,并保证备份可用,如果升级失败需要原集群继续提供服务
2、各个主机下载最新版本的安装包
3、master执行gpcheckcat -A
检查所有库(可忽略)
4、移除gpcc的库文件:gpconfig -r shared_preload_libraries
5、停止gpcc:gpcc stop
,master停库gpstop -a -M fast
6、每个节点直接安装新版本软件包:rpm -U greenplum-db-XXXXXX-rhel7-x86_64.rpm --nodeps
7、检查环境变量是否正确启库gpstart -a
8、检查:gpstate -i
和gpstate -e
9、重新配置gpcc,请参考:https://www.xmmup.com/greenplumguanfangjiankonggongjugpcc-6deanzhuanghexiezai.html
10、检查gp和gpcc是否正常
升级命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | -- 检查库(之前检查出小问题,没解决,升级也成功) gpcheckcat -B 24 -A -- 移除gpcc的库文件(否则升级完成后不能启动) gpconfig -r shared_preload_libraries -- 停止gp和gpcc gpstop -a -M fast gpcc stop -- 所有节点安装新软件包 sudo rpm -U greenplum-db-XXX-el7-x86_64.rpm --nodeps sudo chown -R gpadmin.gpadmin /usr/local/greenplum-db* ll /usr/local/ -- 检查环境变量是否正确 -- 所有节点 echo ". /usr/local/greenplum-db/greenplum_path.sh" >> /home/gpadmin/.bashrc -- 启库 gpstart -a -- 检查 gpstate -i gpstate -e -- 升级配置gpcc sudo rm -rf /usr/local/greenplum-cc* sudo mkdir -p /usr/local/greenplum-cc-6.11.0 sudo ln -sf /usr/local/greenplum-cc-6.11.0 /usr/local/greenplum-cc sudo chown -R gpadmin:gpadmin /usr/local/greenplum-cc* ./gpccinstall-6.11.0 ll $GPHOME/lib/postgresql/metrics_collector.so ll $GPHOME/share/postgresql/extension/metrics_collector* ll $GPHOME/share/postgresql/extension/gp_wlm* >------------------------------------- 1. cd /usr/local/greenplum-cc/gppkg 2. Stop GPCC: gpcc stop 3. Drop extension: psql gpperfmon -c 'drop extension metrics_collector' 4. List the packages installed: After GPDB 7: gppkg query Before GPDB 7: gppkg -q --all 5. Remove the old version of the metrics_collector: After GPDB 7: gppkg remove MetricsCollector" Before GPDB 7: gppkg -r MetricsCollector-<version>" 6. Install the new version: After GPDB 7: gppkg install MetricsCollector-6.10.0_gp_6.25.2-<OS>-<ARCH>.gppkg (NOTE: If "gppkg query" does not show any installed MetricsCollector packages, you may need to use "gppkg instll -f" instead.) Before GPDB 7: gppkg -i MetricsCollector-6.10.0_gp_6.25.2-<OS>-<ARCH>.gppkg 7. Restart GPDB 8. Restart GPCC: gpcc start gpstop -M fast -ar gpcc start ; gpcc status -- 若gpdb大于6.27,则可以配置pg_cron gpconfig -c shared_preload_libraries -v 'metrics_collector,pg_cron' gpconfig -c gp_enable_query_metrics -v on gpconfig -c track_activities -v on gpconfig -c track_activity_query_size -v 102400 -m 102400 gpconfig -c gpcc.enable_save_full_query_text -v on gpstop -M fast -ra gpcc stop ; gpcc start ; gpcc status gpconfig -s shared_preload_libraries gpconfig -s gp_enable_query_metrics gpconfig -s track_activities gpconfig -s track_activity_query_size gpconfig -s gpcc.enable_save_full_query_text |
小版本升级回退方案
1、直接回退软件
1 2 3 4 5 6 7 8 9 | gpstop -a -M fast rm -rf /usr/local/greenplum-db ln -sf /usr/local/greenplum-db-6.13.0 /usr/local/greenplum-db chown -R gpadmin:gpadmin /usr/local/greenplum-db chown -R gpadmin:gpadmin /usr/local/greenplum-db-6.25.1 chown -R gpadmin:gpadmin /usr/local/greenplum-db-6.13.0 |
2、使用备份恢复
以防万一,回退若出现问题,我们可以使用gpbackup和gprestore来恢复。
1 2 3 4 5 | -- 备份 gpbackup --dbname=db1 --backup-dir=/home/gpadmin/bk/ --jobs=8 -- 恢复 gprestore --backup-dir=/home/gpadmin/bk/ --timestamp=20230303132236 --jobs 8 --create-db --redirect-db db1 |
请参考:https://www.xmmup.com/greenplumbeifenhuifugongjuzhigpbackuphegprestore.html