阿里雲Polardb國產資料庫補丁升級 實踐

jaymarco發表於2020-10-28

一、背景介紹

為了解決當前polardb-O資料庫存在的一個BUG,阿里雲官方提供了修復補丁,需要將當前版本2.1.2.4升級到2.1.2.5。本次主題透過此次升級來詳細介紹一下阿里雲Polardb-O資料庫叢集補丁整體升級操作過程。

二、Polardb-O資料庫資訊

2.1 資料庫裝置資訊

Polardb-o資料庫叢集部署採用1+1+1模式,使用3臺主機分別搭建各自服務,下面是polardb-o詳細的叢集配置資訊

PolarDB 資料庫

實際地址IP

資料庫架構

說明

PolarDB叢集

192.168.58.130

1主1從架構

192.168.58.131

   192.168.58.132

CM

叢集管控節點

VIP:192.168.58.129

VIP由CM控制連線主庫

2.2 Polardb-O部署架構


三、Polardb補丁升級

3.1 升級流程

3.2 環境檢查

1、檢查資料庫叢集狀態
CM 叢集管控節點執行下面命令來檢查資料叢集狀態

curl -H "Content-Type:application/json"

經檢查master和standby都是處理running狀態,VIP "endpoint"在主節點上,當前主庫處於正常狀態

2檢查主備庫執行狀態

使用PolarDB 使用者分別在主備兩個節點檢查資料庫執行狀態:

ps -ef |grep  polar-postgres|grep -v grep |wc -l


經過檢查 polardb資料庫程式存在,資料庫執行正常。

3、  檢查主備同步複製狀態

由於配置了同步複製,健康檢查配置只能在主庫檢查,備庫是無法查詢到同步複製狀態資訊,所以使用下面指令在主庫上面檢查同步複製狀態。

select * from pg_stat_replication ;

經檢查polardb主備庫的同步複製關係正常,複製狀態“streaming”,同步狀態為sync強同步。說明同步複製狀態正常。

4、  檢視當前資料庫版本

3.3           資料庫備份

1、   資料庫物理全備

物理備份使用polardb-O 軟體自帶備份工具polar_basebackup ,它是以物理檔案形式將本地檔案與PFS 資料檔案進行全量備份。本次備份使用主庫來備份,先登入主庫後執行下面命令來進行資料全量備份,並將檔案備份到備份路徑/home/polardb/backups/20201017/

polar_basebackup -D /home/polardb/backups/20201017/base -X stream --progress -v

從上圖可以看到,備份日誌中輸出“ base backup completed ”關鍵字說明物理全備成功。

2  資料庫邏輯全備

   邏輯備份使用 polardb-O 軟體自帶備份工具 pg_dumpall ,它是以 sql 形式進行全庫備份,同樣也是在主庫進行資料備份,並將檔案備份到備份路徑 /home/polardb/backups/20201017/

pg_dumpall>/home/polardb/backups/20201017/polar_data_all_20201017.sql

從上圖可以看到,全庫備份檔案 polar_data_all_20201017.sql 在增長,代表邏輯全備正常。
3.4     升級備庫

Polardb-O使用CM叢集管控來控制主備之間切換,軟體補丁升級時如果優先主庫,會導致CM觸發主庫切換,導致資料庫不穩定,勢必會影響業務系統正常使用。因此結合當前叢集架構考慮優先升級備庫,備庫停止不會觸發CM管控進行主備切換。接下來會詳細介紹備庫升級全過程。

1、 停止Polardb備庫程式

首先用polardb 使用者,登入polardb 備庫伺服器,使用下面命令停止polardb 程式。

pg_ctl stop


檢查備庫polardb 程式是否成功停止


經檢查備庫polardb 程式已經被成功停掉,業務暫時無影響,主庫可以提供讀寫服務。

2 備份polardb-o軟體

/usr/local 目錄下將polardb 舊軟體包備份出來,為了防止後面升級過程失敗,可以進行備份回退。

sudo cp -r  polardb_o_20200914 polardb_o_20200914.20201017

3 解除安裝polardb-o軟體

在polardb使用者下使用sudo方式將polardb安裝的rpm包解除安裝。 

sudo rpm -e PolarDB-O-0200-2.0.0-20200914083756.alios7.x86_64

4、 安裝polardb-o軟體包

在polardb使用者下使用sudo rpm -i命令安裝polardb軟體包。

sudo unzip PolarDB-O-0200-2.0.0-20201009151903.alios7.x86_64.rpm.zip

sudo rpm -ivh  PolarDB-O-0200-2.0.0-20201009151903.alios7.x86_64.rpm

5、 啟動polardb-o備庫服務

由於polardb軟體升級後,生成的軟體目錄版本號發生了變化,對應的PGHOME目錄也要更新,需要修改 polardb使用者環境變數

.bash_profile 檔案中的

export PGHOME=/usr/local/polardb_o_20200914   修改成export PGHOME=/usr/local/polardb_o_20201009

source ~/.bash_profile

啟動資料庫服務

pg_ctl start

從上圖可以看出資料庫啟動成功。

6 檢查升級後版本

7、 檢查polardb-o備庫執行狀態

CM 叢集管控節點執行下面命令檢視資料叢集狀態:

curl -H "Content-Type:application/json"

經檢查polardb的主備執行狀態”running”,VIP "endpoint"在主節點上,當前主庫處於正常狀態

在主庫執行下面命令檢查資料庫同步複製狀態

select * from pg_stat_replication ;

經檢查polardb主備庫的同步複製關係正常,複製狀態“streaming”,同步狀態為sync強同步。說明同步複製狀態正常。

3.5    主備切換
1、   將主庫切換成備庫
在CM 叢集管控伺服器上執行切換指令進行主備之間切換操作,這裡是將主庫切換到polar-node2 節點上面,老主庫正常會切換成新備庫。
curl -H "Content-Type:application/json" -X POST --data "{\"from\":\"192.168.58.130:5432\",\"to\":\"192.168.58.131:5432\"}"
2、   檢查主備是否成功切換
主備切換成功,檢查同步複製關係正常。


3、   檢查叢集狀態

備庫成功切換成新主庫,原來的老主庫也正常切換回成備庫。

4、   polardb 程式檢查

polardb 主備庫程式啟動正常。

3.6      升級老主庫

1. 停止Polardb-O備庫程式

登入polardb 老主庫伺服器,使用polardb 使用者執行停止命令

pg_ctl stop


檢查老主庫polardb 程式是否成功停止

polardb 程式已經被成功停掉,業務暫時無影響,主庫可以提供讀寫服務。

2. 備份polardb-o軟體

/usr/local 目錄下將polardb 舊軟體包備份出來。

sudo cp  -r polardb_o_20200914 polardb_o_20200914.20201017

3. 解除安裝polardb-o軟體

sudo rpm -e PolarDB-O-0200-2.0.0-20200914083756.alios7.x86_64

4. 安裝polardb-o軟體包

sudo unzip PolarDB-O-0200-2.0.0-20201009151903.alios7.x86_64.rpm.zip

sudo rpm -ivh  PolarDB-O-0200-2.0.0-20201009151903.alios7.x86_64.rpm

5. 啟動polardb-o備庫服務

由於polardb軟體升級後,生成的軟體目錄版本號發生了變化,對應的PGHOME目錄也要更新,需要修改 polardb使用者環境變數

.bash_profile 檔案中的

export PGHOME=/usr/local/polardb_o_20200914   修改成export PGHOME=/usr/local/polardb_o_20201009

source ~/.bash_profile

啟動資料庫服務

pg_ctl start

看到以上狀態,說明備庫 polardb 已經成功正常啟動。

6. 檢查升級後版本

7. 檢查polardb-o老備庫執行狀態

在CM叢集管控節點執行下面命令檢視資料叢集狀態:

curl -H "Content-Type:application/json"

檢查結果:master和standby都是running狀態,VIP "endpoint"在主節點上,當前主庫處於正常狀態

在主庫執行如下命令檢查同步複製狀態

select * from pg_stat_replication ;

檢查結果:同步複製狀態“streaming”,同步狀態為sync強同步。以上資訊代表同步複製狀態正常。

3.7    回切主庫

主備庫的polardb軟體庫軟體已經升級成功,接下來模擬資料庫回切到老主庫,在CM管控伺服器上面手動切換主備,完成主備切換測試。將192.168.58.131上面的主庫切回192.168.58.130。

1、    將主庫切換成備庫

[polardb@polar-cm ~]$ curl -H "Content-Type:application/json" -X POST --data "{\"from\":\"192.168.58.131:5432\",\"to\":\"192.168.58.130:5432\"}"

 2、   檢查主備是否成功切換

主備切換成功後,同步複製關係正常,沒有丟失。

3、   檢查叢集狀態

備庫成功切換成新主庫,原來的老主庫也正常切換回成備庫。

4、   檢查 polardb 程式 狀態

檢視polardb 資料庫程式正常存在。


四、總結

經過此次 Polardb-O 資料庫補丁升級實踐, Polardb-O 資料庫補丁升級過程要比 Oracle 補丁升級簡單很多。如按先升備庫,讓主庫提供服務,備庫升完,然後將備庫切換成主庫,再繼續提供服務,整體資料庫補丁升級過程中不會中斷業務。

有需要的朋友可以關注我的公眾號,文章每日一更

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28833846/viewspace-2730716/,如需轉載,請註明出處,否則將追究法律責任。

相關文章