VastBase——VPatch版本控制

2024-09-02 05:28

本文主要是介绍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

 

这篇关于VastBase——VPatch版本控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129114

相关文章

集中式版本控制与分布式版本控制——Git 学习笔记01

什么是版本控制 如果你用 Microsoft Word 写过东西,那你八成会有这样的经历: 想删除一段文字,又怕将来这段文字有用,怎么办呢?有一个办法,先把当前文件“另存为”一个文件,然后继续改,改到某个程度,再“另存为”一个文件。就这样改着、存着……最后你的 Word 文档变成了这样: 过了几天,你想找回被删除的文字,但是已经记不清保存在哪个文件了,只能挨个去找。真麻烦,眼睛都花了。看

eclipse安装subversion(SVN)版本控制插件

陈科肇 查看插件更新站点 网址:http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA 网站截图: 根据自己的eclipse版本,选择需要的更新站点. 使用eclipse集成subservion插件 Help > Install New Software…> 等待下载安装插件…

Python知识点:Python开发中,如何使用Git进行版本控制

在 Python 开发中,使用 Git 进行版本控制是非常常见且重要的操作。Git 能帮助你跟踪代码变化、协作开发以及管理项目的不同版本。以下是使用 Git 进行版本控制的基本步骤和流程: 1. 初始化 Git 仓库 在项目文件夹中初始化一个 Git 仓库。 git init 这会创建一个隐藏的 .git 文件夹,用于跟踪版本历史。 2. 配置 Git 在开始使用 Git 前,建议配

版本控制——SVNGit

版本控制,相信不管你是做开发,还是学习。在我们程序猿的道路上都是至关重要的。 为什么重要,应用场景在哪? 手残不小心删除了自己项目的源代码或者文档不敢修改自己的源码文件,不确定自己修改后会不会影响以前的功能。(如果不用版本控制,那你只能拷贝了把)协同开发把项目传递给别人。或者分享自己的项目(如果不用版本控制,那就只能邮件,QQ,U盘) 总而言之,版本控制在开发中的地位是屹立不倒的。无论你是独

Java,版本控制:算法详解与实现

Spring Boot微服务架构技术及其版本号比较优化 随着云技术和分布式系统的快速发展,微服务架构已经成为现代软件开发不可或缺的一部分。 Spring Boot,作为一款广受欢迎的Java开发框架,其简洁的配置和快速启动的特性深受开发者青睐。 配合Spring Cloud,Spring Boot能够帮助开发者构建出既具有高度可伸缩性又具备弹性的微服务架构。 Spring Boot

使用 Versions for mac 进行版本控制

刚开始折腾 xcode 5.1 自己的svn版本控制,应该很好用,但是用不好,搞了半天也没法把工程传到svn服务器上去. 在 xcode 5.1 Soure Control 中弄 点击 Check Out... 下一步(注意选Subversion) 之后 CheckOut 出来即可 但是,这个得先需要你的服务器上有你的代码才行......,找了半天也没

如何使用Git进行C/C++项目的版本控制与协作

如何使用Git进行C/C++项目的版本控制与协作 引言 在现代软件开发中,版本控制系统(VCS)是管理代码变更、协作开发和版本发布的关键工具。Git是最流行的分布式版本控制系统之一,特别适用于C/C++项目的版本控制与协作。本文将详细介绍如何使用Git进行C/C++项目的版本控制,包括Git的基本概念、命令使用、工作流、分支管理、协作技巧以及最佳实践。 1. Git概述 1.1 Git的基

MySQL数据备份的版本控制:策略、实践与自动化

在数据库管理中,数据备份是确保数据安全性和可恢复性的关键步骤。随着数据量的不断增长,如何有效地管理这些备份,特别是实现数据备份的版本控制,成为了一个重要议题。MySQL作为广泛使用的数据库管理系统,提供了多种工具和策略来实现数据备份的版本控制。本文将深入探讨如何在MySQL中实现数据备份的版本控制,包括策略、实践和自动化方法。 1. 数据备份的版本控制概述 数据备份的版本控制是指对数据库备份进

git 版本控制安装

第一:首先注册github 账号,按照提示进行操作即可 第二:本机客户端操作,安装git客户端 第三:进行ssh 免秘钥访问拉取分支 1、打开命令行执行 ssh-keygen -t rsa -C "xxxx23269@sina.com" 2、进入目录 cd .ssh/ 3、生成目录文件 id_rsa与id_rsa.pub文件,秘钥 查看id_rsa,pub里的信息 拷贝 到github 配置中 配

在VScode中使用Git将本地已有文件夹提交到Github仓库以便于使用版本控制进行项目开发

前置软件         VScode、Git。         Linux系统中安装Git工具请自行百度。可以通过git --version查看对应Git版本号。 Github创建空白仓库         一定要注意创建空白仓库,不要包含任何文件,包括Readme.md文件也不能有。           上面的仓库名(Repository name)一定要和本地即将上传到Github