PostgreSQL(三)pgpool管理PostgreSQL集群下主机宕机后的主从切换
在前兩篇文章的基礎上
PostgreSQL(一)PostgreSQL一主二從集群部署
PostgreSQL(二)PostgreSQL一主二從集群之上部署雙節點pgpool-II
本文介紹了,當故障發生時的處理辦法。?
對于status中數字的含義:1:節點啟動,還沒有被連接?2:節點啟動,已經被連接?3:節點down掉了
?1模擬主節點服務故障
在主機上執行,停止postgreql的命令,模擬PostgreSQL進程出現故障。而pgpool的服務未受影響。
| systemctl stop postgresql |
再次查詢,結果如圖所示。節點0 的role被切換為standby節點1的role被切換為primary。再看狀態,節點0狀態down掉了。
2.手動將節點2加入集群中
在實際應用過程中,節點0掛掉之后主節點自動切換到節點1,此時只有節點1正常工作,用戶對此并無感知,通過配置的VIP連接數據庫,此時仍在繼續讀寫數據。
節點2在雖然在pgpool中的顯示是連接狀態,但是,它卻并不在集群當中。
在節點1中寫數據,自然無法同步。
此時人工操作,將節點2加入集群中。
第一步、將數據同步過來。并做好配置。
| -bash-4.2$ rm -rf /var/lib/pgsql/data/* -bash-4.2$ pg_basebackup -h 192.168.149.237 -U repl -D /var/lib/pgsql/data -X stream -P -bash-4.2$vi /var/lib/pgsql/data/recovery.conf standby_mode = on primary_conninfo = 'host=192.168.149.237 port=5432 user=repl password=fanxiaoguang@0' recovery_target_timeline = 'latest' trigger_file = '/tmp/trigger_file0' |
第二步、重啟,之后發現,從節點已經生效了。
數據庫的內容已經同步進來。
如果節點2狀態出現down的情況。那么可以手動改變一下狀態。
在node238節點執行命令
| pcp_attach_node?? 10 localhost 9898 postgres postgres 2 |
其中參數10表示一個時間,不重要。localhost就是要手動加入的節點,postgres postgres分別代表用戶名和密碼,2代表節點ID。
重新登陸后,節點狀態發生改變。
3手動將節點0加入集群中
假設節點0的故障已經修好了。此時,應只是將節點0當作一個普通standby庫來看待。配置方法與節點2配置方法相同。
在節點0上將自身加入集群中,重連后,整個集群恢復如初。執行命令
| pcp_attach_node?? 10 localhost 9898 postgres postgres 0 |
而此時,節點0不再是主節點了,是一個只讀的數據庫了。
?
總結
以上是生活随笔為你收集整理的PostgreSQL(三)pgpool管理PostgreSQL集群下主机宕机后的主从切换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天翼云从业认证(3.4)云数据库
- 下一篇: 天翼云从业认证课后习题(3.2天翼云存储