redis 叢集如何手動切換主從
阿新 • • 發佈:2018-12-23
之前的結構是這樣的:
主:192.168.10.13:30001 從: 192.168.10.14:30004
主:192.168.10.14:30003 從: 192.168.10.15:30006
主:192.168.10.15:30005 從: 192.168.10.13:30002
即,每臺伺服器既是一個分片的主,又是另一個分片的從,如此一來可以實現高可用。配置了sentinel(哨兵)以後,可以實現自動故障轉移了。
現在我關閉了13這臺伺服器,sentinel探測結果如下:
19786:X 27 Mar 10:12:17.154 # +sdown master zhuyun3 192.168.10.13 30001 19786:X 27 Mar 10:12:17.220 # +odown master zhuyun3 192.168.10.13 30001 #quorum 2/2 19786:X 27 Mar 10:12:17.220 # +new-epoch 1 19786:X 27 Mar 10:12:17.220 # +try-failover master zhuyun3 192.168.10.13 30001 19786:X 27 Mar 10:12:17.277 # +vote-for-leader 7ab18d8c3a3bb85b7ba52e31e79b51a0a8570fa4 1 19786:X 27 Mar 10:12:17.284 # 5b5a466048a5c12c1de40e1e5de93482faa89f63 voted for 5b5a466048a5c12c1de40e1e5de93482faa89f63 1 19786:X 27 Mar 10:12:17.371 # 08eb3d779e7160d1ea54774dab59a6ad20eeaad2 voted for 7ab18d8c3a3bb85b7ba52e31e79b51a0a8570fa4 1 19786:X 27 Mar 10:12:17.431 # +elected-leader master zhuyun3 192.168.10.13 30001 19786:X 27 Mar 10:12:17.431 # +failover-state-select-slave master zhuyun3 192.168.10.13 30001 19786:X 27 Mar 10:12:17.521 # +selected-slave slave 192.168.10.15:30006 192.168.10.15 30006 @ zhuyun3 192.168.10.13 30001 19786:X 27 Mar 10:12:17.521 * +failover-state-send-slaveof-noone slave 192.168.10.15:30006 192.168.10.15 30006 @ zhuyun3 192.168.10.13 30001 19786:X 27 Mar 10:12:17.597 * +failover-state-wait-promotion slave 192.168.10.15:30006 192.168.10.15 30006 @ zhuyun3 192.168.10.13 30001 19786:X 27 Mar 10:12:18.443 # +promoted-slave slave 192.168.10.15:30006 192.168.10.15 30006 @ zhuyun3 192.168.10.13 30001 19786:X 27 Mar 10:12:18.443 # +failover-state-reconf-slaves master zhuyun3 192.168.10.13 30001 19786:X 27 Mar 10:12:18.453 # +failover-end master zhuyun3 192.168.10.13 30001 19786:X 27 Mar 10:12:18.453 # +switch-master zhuyun3 192.168.10.13 30001 192.168.10.15 30006
檢測到13掛掉以後,該分片的主自動轉移到了15伺服器上,在15上用CLUSTER NODES顯示結果如下:
cd9890519295f9d14b26e4335a3d720a7c73b70a 192.168.10.15:30005 master - 0 1490580783613 3 connected 10923-16383 4110f5d0a0e602e1fcac12d258bc9973653f9903 192.168.10.13:30002 slave,fail 66c08446d97616757f8ff481007fb68d06a01bc8 1490580720262 1490580718358 4 disconnected 66c08446d97616757f8ff481007fb68d06a01bc8 192.168.10.14:30003 myself,master - 0 0 2 connected 5461-10922 57763c3779240b13cb3ac0c0ac3907851dc942d2 192.168.10.14:30004 slave cd9890519295f9d14b26e4335a3d720a7c73b70a 0 1490580784620 5 connected 7457a755b443ddad613fc593d6b68482388cbece 192.168.10.15:30006 master - 0 1490580785626 6 connected 0-5460 1607487c467862b22ede849ff4abc28dbe2c601c 192.168.10.13:30001 master,fail - 1490580707118 1490580704311 1 disconnected
結果顯示,13的主和從都是fail狀態,現在15上有兩個主
現在,我在將13的主和從啟動,結果顯示如下:
cd9890519295f9d14b26e4335a3d720a7c73b70a 192.168.10.15:30005 master - 0 1490580924089 3 connected 10923-16383 4110f5d0a0e602e1fcac12d258bc9973653f9903 192.168.10.13:30002 slave 66c08446d97616757f8ff481007fb68d06a01bc8 0 1490580925092 4 connected 66c08446d97616757f8ff481007fb68d06a01bc8 192.168.10.14:30003 myself,master - 0 0 2 connected 5461-10922 57763c3779240b13cb3ac0c0ac3907851dc942d2 192.168.10.14:30004 slave cd9890519295f9d14b26e4335a3d720a7c73b70a 0 1490580921078 5 connected 7457a755b443ddad613fc593d6b68482388cbece 192.168.10.15:30006 master - 0 1490580920075 6 connected 0-5460 1607487c467862b22ede849ff4abc28dbe2c601c 192.168.10.13:30001 slave 7457a755b443ddad613fc593d6b68482388cbece 0 1490580922081 6 connected
現在的問題就來了,15伺服器上面始終有兩個主,而13上面始終是兩個從,如此一來,假如15伺服器掛掉了,那資料庫有2/3的資料就無法訪問了。目前需要做的事情,就是如何將15的其中一個主轉移到13上面來,具體如何實現還在探索中。