上次安裝了集羣后,一段時間沒有時間寫個測試文章,今天有空就寫了篇初級測試的文章,如果大家還想知道不同情況下postgres集羣的處理方法,可以留言給我!!!
本文來自:http://blog.csdn.net/lengzijian/article/details/7729380
先來模擬下主從庫關閉,看看數據的同步情況:
1. 重啓主節點:
方式①:./pg_ctl stop -D ../data/ |
waiting for server to shut down............................................................... failed pg_ctl: server does not shut down HINT: The "-m fast" option immediately disconnects sessions rather than waiting for session-initiated disconnection. 雖然顯示關閉失敗,但是連接數據庫操作已經不可用,並且顯示錯誤!!! |
方式②./pg_ctl stop -D ../data/ -m fast |
直接關閉數據庫,連接數據庫時,顯示沒有服務。 重啓主節點後,對集羣功能沒有影響 |
方式③:kill -9 8581 8582 8584 8585 8586 8587 8589 8597 8669 |
向其中一臺從節點插入一條數據; (這裏理論上是可讀,但是爲了方便展示還是插入一條) insert failed:ERROR: cannot execute INSERT in a read-only transaction 啓動主節點,插入一條數據,並驗證集羣功能:
集羣功能完好! |
2. 關閉從節點
關閉方式①:./pg_ctl stop -D ../data_bac/ -m fast |
插入主節點一條數據,再打開從節點,查看數據是否同步。
數據同步成功。 |
關閉方式②:kill -9 19971 19972 19973 19974 19975 19976 |
插入二條數據後;正常啓動子節點,查看數據是否同步:
可以看到自己點意外死亡情況,重啓後會同步數據。 |
3. 在插入過程中殺死主節點
關閉方式①:./pg_ctl stop -D ../data_bac/ -m fast |
用單線程方式,插入100000數據,並在中途按方式①,關閉主節點;重啓後查看主庫和從庫數據是否一致: 1. 當斷開後,查看兩個從庫的數據量都爲5719
2. 重啓主數據庫,查看數據量:
發現數據沒有丟失,爲了驗證正確性,我們驗證10個線程每個線程100000併發時,沒有丟數據情況發生。 |
關閉方式②:kill -9 19971 19972 19973 19974 19975 19976 |
查看從庫數據量:
啓動主庫,查看主庫數據量:
可以發現主庫和從庫數據量不等,有人可能會說丟數據,先別下太早的結論,我們再來看下從庫數據量是否有變化:
我們可以認爲,當主節點意外死亡時,主庫wal日誌還沒有發送到從庫主機,使得主從庫數據不同步,但是重啓主庫後,主庫會把沒有傳遞的wal日誌重發,再次同步數據。 |
上面是我模擬的一些集羣會遇到的情況,目前只能想到這麼多,如果有建議可以留言。