Polardb資料庫掛庫後,如何恢復主備關係

jaymarco發表於2020-11-11

一、前言

Polardb-O 主從高可用模式會出現主庫節點主機或是網路卡故障等問題,只要主從發生切換,備庫節點切換成新主庫,而老主庫主機重啟恢復後,無法自動切換成新備庫,甚至影響較大出現主備這間流複製關係失效。因此出現備庫恢復失敗問題,需要全量重建備庫和流複製建立。

二、環境資訊

2.1 主機資訊

Polardb-O 資料庫

實際地址IP

資料庫架構

是否開啟readonly(Y/N)

說明

Polardb-O 叢集

192.168.58.130

Y

一主一備架構

192.168.58.131

N


192.168.58.129

VIP

/


叢集管理軟體

192.168.58.132

/

/

Polardb 叢集管理軟體、

2.2 架構圖

三、備庫恢復過程

當主庫因主機或是網路卡其中某中原因要對主庫進行重啟恢復,此時CM 會自動觸發主從切換,自然備庫被切換成新主庫,而老主庫重啟後需要恢復成新備庫,但測試驗證後,發現老主庫主機重啟恢復後,無法恢復成備庫。只能通過手工重建方式來恢復備庫。

3.1、新備庫恢復過程

1、   清除新備庫環境

# 刪除本地配置目錄

sudo rm -rf $PGDATA

# 清理 PFS 檔案系統中資料

sudo pfs -C disk rm   -r /sdb/pgdata

# 建立資料目錄

pfs -C disk mkdir   /sdb/polar_data

2、   主庫同步資料到備庫

使用主庫資料目錄和PFS 初始化備庫資料目錄(在新備庫使用polardb 登入)

polar_basebackup -h   192.168.58.130  -p5432 -U replicator -D   $PGDATA --polardata=$PFSDIR --polar_storage_cluster_name=disk   --polar_disk_name=$PFSDISK --polar_host_id=2 -X stream --progress   --write-recovery-conf -v

注意主備庫的host_id 不能一致。

 3、   啟動和檢查備庫節點

啟動與檢查備節點可驗證資料庫是否連線成功。具體操作如下:

pg_ctl -c start -D $PGDATA

psql -h$PGDATA   -p$PGPORT

如果能連通,則證明資料庫安裝成功,並且啟動成功。

 3.2、 CM 管理軟體

為了保障主從能正常切換,在CM 中刪除異常備庫節點

curl -H "Content-Type:application/json" -X POST --data   "{\"user\":\"polardb\",\"dataPath\":\"/app/polardb_ data\",\"ip\":\" 192.168.58.131 \",\"port\":\"5432\",\"type\":\"Standby\",\"storage_type\":\"local_ssd\",\"sync\":\"SYNC\"}"   http://127.0.0.1:5000/v1/remove_ins

 

恢復回來的備庫配置需要新增到CM 管理軟體中。

curl -H " Content-Type:application/json"   -X POST --data   "{\"user\":\"polardb\",\"dataPath\":\"/app/polardb_data\",\"ip\":\" 192.168.58.131 \",\"port\":\"5432\",\"type\":\"Standby\",\"storage_type\":\"local_ssd\",\"sync\":\"SYNC\"}"   http://127.0.0.1:5000/v1/add_ins

3.3、   主備庫流複製狀態

1 、叢集環境檢查

curl -H ""Content-Type:application/json""   http://127.0.0.1:5000/v1/status?type=visual                      

 2 、檢查主庫流複製程式

ps -ef   |grep wal # 主庫 – walwriter

ps -ef |grep wal # 備庫 – walreceiver

 3 、檢查主備庫讀寫模式

show   transaction_read_only;

主庫狀態:off, 備庫:on

  4 、主庫檢視複製狀態

select *   from pg_stat_replication;

5、   測試資料同步是否正常

在主庫建立一個表,看備庫是否存在 , 如果存在說明資料同步正常。

 


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

相關文章