1. 程式人生 > >redis 叢集如何手動切換主從

redis 叢集如何手動切換主從

之前的結構是這樣的:

主: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上面來,具體如何實現還在探索中。