当前位置: 首页 > news >正文

VastBase——VPatch版本控制

一、准备工作

1.概述

VPatch是用于Vastbase版本控制的工具。可以实现在单机环境下的升级和回退操作,具体功能如下:

  • 升级环境检查,补丁冲突检查等。

  • PSU、PSR、OOP补丁的升级、回退、升级或回退失败时的还原。

  • 升级过程中记录相关日志和步骤文件。

  • 升级过程中管理备份文件。

  • 自vpatch V2.0.0开始,支持在检查和回退时指定--force参数,用于对特殊的可回退升级包进行升级后的强制回退。强制回退表示对修改了函数和系统表的升级过程进行回退(若不指定--force参数,则修改了函数和系统表的升级过程无法回退)。需要注意的是,强制回退可能导致数据丢失或读取错误,一般情况下不推荐使用本功能,或联系技术人员进行判断和操作。

 

  • PSU:月度补丁版本。

  • PSR:季度补丁版本。

  • OOP:One Off Patch,在单机环境下通过安装OOP升级包解决单个bug或增加小功能,OOP升级包的特点是升级包体量小,升级后版本号不会变化。

2.前提条件

使用vpatch升级需在python3.7环境下运行,即执行python3 --version,返回版本为3.7.*

在开始升级前,请检查解压的升级包patch/VPatch/script/ 目录是否存在两个脚本文件 prepare_env.sh和clean_env.sh。

  • 如果不存在上述两个文件,表示当前升级包中不包含python3.7的安装包,需要用户手动安装python3.7;

  • 如果存在上述两个文件,表示当前升级包中已经包含了python3.7的安装包,此时使用root用户运行这两个脚本即可为当前用户安装卸载python3.7。

执行以下命令安装python3.7:

source prepare_env.sh

 检查是否安装成功,返回版本为3.7.*时表示成功:

python3 --version

执行以下命令卸载python3.7:

sh clean_env.sh

 卸载后当前连接窗口因为已经配置了python3的环境变量,执行python3 -V命令仍然返回 3.7.*,开启新的连接窗口后恢复安装前情况。

 

注意事项

  • 仅支持Vastbase G100 V2.2 Build 10及以上版本的升级。

  • 对于集群的升级,需还原为单机模式进行,完成升级后重新部署集群。

  • 强制回退可能导致数据丢失或读取错误,一般情况下不推荐使用本功能,或联系技术人员进行判断和操作。

  • 在升级或回退前应关闭数据库服务。

  • 升级时指定的端口号应避开日常使用的服务端口号,防止升级过程被外部干扰。

  • 不支持修改用户数据升级的场景。用户数据指使用vb_initdb命令初始化后并未包含的、由用户操作产生的表。

  • 仅支持未修改系统表且允许回退的补丁进行rollbackrollback to回退操作。不支持修改过数据字典的场景进行rollbackrollback to回退操作。

  • 不支持多实例场景。多实例场景即为单一产品对应多个数据库集簇的场景。

  • 修改系统表的情况下不支持OOP,考虑进行PSU升级;

  • 修改三方库的情况下不支持OOP,考虑进行PSU升级;

  • 如有删除文件和新增文件的情况,目前OOP仅支持升级,无法回退,这种情况建议使用PSU升级。

  • 一次升级的目标文件数建议为1~5个,在这个范围内升级是比较安全的。由于OOP体量小,在需要频繁打补丁的情况下,一次升级的目标文件数据越多,下一次升级补丁与前面的补丁出现冲突的可能会大幅增加,因此如果需要升级的目标文件超过10个,建议使用PSU升级,或者分批次升级。

  • 升级过程中,检查和安装准备阶段会向数据库初始化用户的环境配置文件中写入环境变量,所以切换用户时若使用了不同的终端,为避免出现环境变量缺失的问题,需执行以下语句设置环境变量:

source .bashrc

3.数据库参数检查

升级前请检查以下数据库参数是否配置正确,避免影响数据库升级。

logging_collector=onenable_global_syscache=on
uppercase_attribute_name=off
enable_prevent_job_task_startup =on
vb_exclude_reserved_words = ''

对于集群拆分成单节点升级的场景,需要在postgresql.conf中添加pgxc_node_name的值。

4.字符集检查

升级前检查环境变量中的字符集设置,确保LC_ALL的字符集设置与LANG一致,如果不一致,修改LC_ALL,避免影响数据库升级。

echo $LANG
echo $LC_ALL

使用英文字符集升级回退

检查环境变量,如下图所示:

 若只有LANG,则在数据库安装用户的bashrc中设置:

vim ~/.bashrc
export LANG=en_US.UTF-8

二、执行升级

升级前请检查以下数据库参数是否配置正确,避免影响数据库升级。

logging_collector=on
enable_global_syscache=on
uppercase_attribute_name=off
enable_prevent_job_task_startup =on
vb_exclude_reserved_words = ''

关闭数据库

vb_ctl stop

备份数据库目录

cp -a /home/vastbase/local/vastbase_9104 /home/vastbase/local/vastbase_9104_bak

切换到数据库安装用户,把补丁包解压放入/home/数据库安装用户/目录,进入patch文件夹下解压升级包。

su - vastbase
cd /home/vastbase
tar xf PSU_9104_9662_centos-7_x86-64-01-20221109.tar.gz
cd patch
tar xf 2-2.2-10-92-702-9104-centos-7-x86-64-01.tar.gz

创建配置文件

/vastbase/a-Oracle/vastbase/vpatch.ini[vpatch]
userName=vastbase
userGroup=vastbase
appPath=/vastbase/a-Oracle/vastbase
dataPath=/vastbase/a-Oracle/data
port=5432
tmpPath=/vastbase/a-Oracle/omTmp/tmp

使用root用户指定配置文件

cd /vastbase/a-Oracle/vastbase/patch/2-2.2-15-92-815-17408-centos-7-x86-64-2.0.0-02/VPatch/script./vpatch --setparam -f  /vastbase/a-Oracle/vastbase/vpatch.ini

返回结果如下表示成功:

使用root用户执行命令进行升级环境检查

./vpatch -C

 返回结果如下表示成功

 使用root用户执行命令进行用户权限检查

./vpatch -P

返回结果如下表示成功

切换数据库初始化用户进行升级

su - vastbase
cd /vastbase/a-Oracle/vastbase/patch/2-2.2-15-92-815-17408-centos-7-x86-64-2.0.0-02/VPatch/script./vpatch --upgrade

升级完成后进行信息检查

./vpatch -U -s

查看数据库升级日志。显示升级过程信息,包含停止服务、启动服务操作、执行的每个脚本文件、操作数据库的相关命令、变更的设置参数等内容。

当升级失败时,可查看vpatch日志获取错误信息。

cat $GAUSSHOME/.update/updateLog/jq_vpatch_two/gs_upgradectlxxx.log

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Mysql基础练习题 1084.销售分析3 (力扣)
  • SQL慢查询优化方式
  • 深入理解指针(7)--计算机模拟实现
  • 安科瑞ACR10R网络电力仪表 CE认证 带外置互感器
  • ESP32-IDF http请求崩溃问题分析与解决
  • Ubuntu22.04安装 docker和docker-compose环境
  • c# fromlayout 布局中间空隙问题
  • 无人机培训机构必备运营合格证及驾驶员训练机构合格证详解
  • 告别AI痕迹:如何让Midjourney创作更自然
  • 2024百元蓝牙耳机推荐有哪些?四款百元王炸机型2024推荐
  • 如何理解 Linux 命令 和 Shell 命令 之间的关系
  • Spring Security 原理、源码解析及进阶
  • 如何使用 Qt C++ 基于 FFmpeg 开发本地视频播放器
  • Docker 系列文章导航
  • AI大模型编写多线程并发框架(六十五):发布和应用
  • Angular4 模板式表单用法以及验证
  • avalon2.2的VM生成过程
  • bootstrap创建登录注册页面
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • css属性的继承、初识值、计算值、当前值、应用值
  • ES6之路之模块详解
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • js如何打印object对象
  • Mithril.js 入门介绍
  • MYSQL 的 IF 函数
  • SpringCloud集成分布式事务LCN (一)
  • use Google search engine
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • ​卜东波研究员:高观点下的少儿计算思维
  • "无招胜有招"nbsp;史上最全的互…
  • $jQuery 重写Alert样式方法
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (4) PIVOT 和 UPIVOT 的使用
  • (52)只出现一次的数字III
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (算法二)滑动窗口
  • (转)shell中括号的特殊用法 linux if多条件判断
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .chm格式文件如何阅读
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET 反射 Reflect
  • .NET学习全景图
  • .Net中ListT 泛型转成DataTable、DataSet
  • /3GB和/USERVA开关
  • @selector(..)警告提示
  • @拔赤:Web前端开发十日谈
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [001-03-007].第07节:Redis中的事务
  • [240607] Jina AI 发布多模态嵌入模型 | PHP 曝新漏洞 | TypeScript 5.5 RC 发布公告
  • [240812] X-CMD 发布 v0.4.5:更新 gtb、cd、chat、hashdir 模块功能
  • [AIGC] 解题神器:Python中常用的高级数据结构
  • [android] 天气app布局练习