
01—董小姐 | 實戰(zhàn)派DBA · 國產數據庫先行者 認證矩陣Oracle 11g OCM / KCM / OBCP 4.0 / PGCE / 行業(yè)榮譽墨天輪技術專家 2024年度優(yōu)秀作者 | ITpub技術專家 | IFClub智庫星系成員| 金倉KVA 寫作成績2024金倉征文大賽一等獎 | 2025金倉征文大賽三等獎?? 技術棧Oracle、MySQL、PG 及 金倉/達夢/openGauss 等國產庫的 部署、故障診斷與性能調優(yōu)拒絕紙上談兵用實戰(zhàn)說話。關注我獲取一線實戰(zhàn)經驗。需求描述V008R030C011PSI024升級到V008R030C011PSI026該版本不支持滾動升級但是業(yè)務又不能停。和大佬們溝通得知集群直接通過物理復制槽同步數據和版本沒關系那就意味著主備節(jié)點可以版本不一致但是未找到實踐案例經驗證后可行。準備工作集群信息收集核實應用側JDBC自動尋主配置確認應用側配置有JDBC連接串自動尋主參數ip、port、database更換為實際地址base.urljdbc:kingbase8://172.22.232.137:25432,172.22.232.92:25432,172.22.232.91:25432/database?targetServerTypemasterstringtypeunspecifiedKFS鏈路是否存在如果KES是KFS鏈路的源端存在邏輯復制槽的情況下源端數據庫停不掉需要先停止KFS鏈路再啟停節(jié)點。select * from sys_replication_slot;同步是否有延遲select usesysid, usename, sys_wal_lsn_diff(sys_current_wal_flush_lsn(), replay_lsn) as lsn_lag from sys_stat_replication;所有節(jié)點執(zhí)行檢查點checkpoint;實現過程不要按照 AI 給的辦法 直接sys_ctl stop -D 數據目錄停止數據庫服務、重啟主機會出現重啟主機前數據庫服務就已經被自動拉起的情況。所有節(jié)點執(zhí)行checkpoint--所有節(jié)點執(zhí)行checkpoint checkpoint;查看集群狀態(tài)--運行正常的節(jié)點 repmgr cluster show repmgr service status暫停同步要擴容的備節(jié)點操作確保節(jié)點狀態(tài)正常repmgr service pause 后集群才不會切換 repmgr service status Paused?值為yes關閉要升級的備節(jié)點sys_monitor.sh stoplocal repmgr cluster show repmgr service status su - root systemctl stop securecmdd systemctl status securecmdd備份備節(jié)點安裝目錄備節(jié)點備份bin、lib、share、include目錄建議備份數據的目錄與原data目錄處于不同目錄中。--新建存儲備份的目錄 mkdir -p /home/kingbase/data_bak20251208 --備份安裝目錄下bin、lib、share、include cd /kdb/kingbase/cluster/kingbase_v8r2c10/install/kingbase cp -r bin lib share include /home/kingbase/data_bak20251208/ 或 cp -r bin bin_bak_$(date %Y%m%d) cp -r lib lib_bak_$(date %Y%m%d) cp -r share share_bak_$(date %Y%m%d) cp -r include include_bak_$(date %Y%m%d)替換新版本安裝包替換主節(jié)點和所有備節(jié)點版本包假定壓縮包為server.tar將解壓后的文件直接覆蓋原數據庫安裝目錄。# 在安裝目錄下解壓縮覆蓋原程序的lib、bin、share、include目錄cd /kdb/kingbase/cluster/kingbase_v8r2c10/install/kingbase tar -xf /home/kingbase/kingbase-server-V008R020C010PS019-linux-x86_64.tar -C ./拷貝備份的license.dat到bin目錄下cp /home/kingbase/data_bak20251208/bin/license.dat /kdb/kingbase/cluster/kingbase_v8r2c10/install/kingbase/bin啟動備節(jié)點securecmdd服務必須先啟動不然啟動備節(jié)點失敗su - root systemctl start securecmdd systemctl status securecmdd su - kingbase sys_monitor.sh startlocal repmgr cluster show repmgr service status取消暫停同步repmgr service unpause Paused?值為no查看集群狀態(tài)--運行正常的節(jié)點 repmgr cluster show repmgr service status主備切換主備切換 要升主的備節(jié)點操作一主兩備${install_dir}/bin/repmgr standby switchover --force-rewind --siblings-follow 補充一主一備${install_dir}/bin/repmgr standby switchover --force-rewind重復執(zhí)行以上操作步驟在原主節(jié)點操作即可完成滾動升級恢復原主節(jié)點(可選)恢復舊主為primary角色再次主備切換 要升主的備節(jié)點操作 該步驟可選 如果不存在運維考慮可以不切回一主兩備${install_dir}/bin/repmgr standby switchover --force-rewind --siblings-follow 補充一主一備${install_dir}/bin/repmgr standby switchover --force-rewind查版本ksql -V kingbase -V ksql test system -c select version(); ksql test system -c select build_version;補充repmgr service pause/unpause適用于停止集群自動故障切換和自動故障恢復的場景。如用戶不希望集群因維護操作而發(fā)生自動主備切換可以先將集群功能置于 pause 狀態(tài)待維護操作完成后最后再將集群功能置于unpause狀態(tài)。