前言
如前文所述,我們的小demo項目起初安裝了openGauss的2.1.0版本,由于2.1.0不是長期維護(LTS)版本,所以要升級到5.0.0LTS。考慮到雖然是DEMO項目,但也有些體驗用戶,所以為了保障業務連續性,決定還是按照升級的方式,而不采取卸載重裝的方式。本篇從2.1.0經停3.0.0再到5.0.0版本升級過程的簡要總結,供朋友們參考和指導。
升級路徑:
官網對于從2.1.0到5.0.0的升級路徑是不保證成功的,但是對于2.0.0的升級路徑是支持的,可以從2.0.0到3.0.0,也可以從2.0.0直接到5.0.0,當然3.0.0也可以到5.0.0,如下圖所示:
?
參考:https://docs-opengauss.osinfra.cn/zh/docs/5.0.0/docs/DatabaseOMGuide/%E5%8D%87%E7%BA%A7%E5%89%8D%E5%BF%85%E8%AF%BB.html?
下面開始升級的操作過程:
1.?查看數據庫版本和狀態信息
gs_om -t status --detail
gsql -p 26000 -d postgres -U omm
gaussdb –V
2.?檢查OS
gs_checkos -i A (該命令需在root用戶下執行,可選執行)
3.?檢查數據庫和表信息
?創建了一個demo項目用的數據庫,以及用到的表,表里面有部分測試數據。
?
select count(1) from device;
4.?備份數據(商用環境務必執行,內部調測環境建議執行)
因升級如果失敗,存在數據庫不能啟動且不能回退的風險,因此強烈建議備份數據,具體備份策略可根據實際業務情況確定。
5.?創建3.0.0版本升級目錄,目錄命名可自行確定,建議見名知意
偷懶起見,我把5.0.0的升級目錄也直接創建了,放在software目錄下,可根據個人情況自行制定。
mkdir gaussdb_upgrade3.0.0
6.?下載3.0.0版本軟件包
???進入創建好的3.0.0的目錄:?通過wget下載3.0.0的軟件包,注意查看操作系統及版本,制式正確。
wget:https://opengauss.obs.cn-south-1.myhuaweicloud.com/5.0.0/x86_openEuler/openGauss-3.0.0-openEuler-64bit-all.tar.gz?
注意:盡管3.0.5是3.0.x最新的包,但是由于3.0.5版本發布日期比5.0.0更晚,因此不支持3.0.5到5.0.0的升級路徑。我剛開始用了這個包走了好多彎路,在HW朋友們的幫助和提醒下,才后知后覺的了解到這點。
7.?解壓
(這部分和安裝類似,就不做詳細展開)
tar zxvf openGauss-3.0.0-openEuler-64bit-all.tar.gz
tar zxvf openGauss-3.0.0-openEuler-64bit-om.tar.gz
8.?執行preinstall
(這部分和安裝類似,就不做詳細展開)
進入script目錄,執行preinstall命令,注意要用root用戶執行:
./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/5.0.1/script/clustcfg/clust_config.xml
執行過程會詢問是否創建omm用戶,回復yes。
?
9.?修改目錄權限
如不修改會提示文件無訪問權限。
chmod 755 -R /opt/software/gaussdb_upgrade3.0.0/
10.?執行升級過程
關于openGauss就地升級和灰度升級的區別,主要在于灰度升級的時候業務不中斷。切換至omm用戶,執行升級命令,注意確認路徑在3.0.0。?
?
gs_upgradectl -t auto-upgrade -X /opt/software/openGauss/5.0.1/script/clustcfg/clust_config.xml --grey
升級成功。
11.?檢查升級效果
檢查數據庫版本:
?檢查數據庫和表存在:
?
12.??提交升級
若經過3.0.0升級至5.0.0,則一定要提交升級,否則在升級5.0的時候會報錯。另外需注意,提交升級之后就不能再回退至升級前的版本了。
gs_upgradectl -t commit-upgrade -X /opt/software/openGauss/5.0.1/script/clustcfg/clust_config.xml
?
13.?再次查看數據庫版本和狀態信息
gs_om -t status –detail
---至此,版本已成功升級至3.0.0
14.?創建5.0.0版本升級目錄
(過程上需要記錄,但我們偷懶在前面已經一并創建了)
mkdir gaussdb_upgrade5.0.0
?
15.?下載5.0.0版本軟件包
wget:https://opengauss.obs.cn-south-1.myhuaweicloud.com/5.0.0/x86_openEuler/openGauss-5.0.0-openEuler-64bit-all.tar.gz
仍然要確認好操作系統和版本以及制式。
16.?解壓5.0.0軟件包
tar zxvf openGauss-3.0.0-openEuler-64bit-all.tar.gz
tar zxvf openGauss-3.0.0-openEuler-64bit-om.tar.gz
17.?執行5.0.0?preinstall
(這部分和安裝類似,就不做詳細展開)
進入5.0.0的script目錄,執行5.0.0的preinstall,注意要用root用戶執行。
18.?修改目錄權限
chmod 755 -R /opt/software/gaussdb_upgrade5.0.0/
19.?執行升級過程
(推薦灰度升級方式)
切換至omm用戶,執行升級過程,確認目錄:
gs_upgradectl -t auto-upgrade -X /opt/software/openGauss/5.0.1/script/clustcfg/clust_config.xml –grey
說明:命令格式和3.0.0的升級一樣。?
20.?檢查升級效果
檢查數據庫版本
?
?檢查數據庫和表數據
?
21.?檢查無誤后提交升級
gs_upgradectl -t commit-upgrade -X /opt/software/openGauss/5.0.1/script/clustcfg/clust_config.xml
22.?再次查看數據庫版本和狀態信息?
至此,數據庫已經成功從2.1.0升級至5.0.0了,由于官網的不保證,升級之前還是很忐忑的,事實證明了openGauss實際是支持的,這是一種低調的實力。
說明:
-
請大家忽略xml文件路徑中5.0.1的干擾,整個過程和5.0.1沒有關系,只是前面安裝5.0.1版本時把xml文件放置在這個目錄下,升級時懶得改了就沒動。
-
從2.1.0也可以越過3.0.0直接升級至5.0.0,按照文中的操作步驟略作調整也可實現,考慮篇幅所限不單獨羅列了。
本文內容來自于數據庫領域資深技術專家趙鋒老師,希望我們的文章正好能解決你的問題。