redis5集群如何主動手工切換主從節(jié)點命令
redis5集群主動手工切換主從節(jié)點命令
以集群模式登錄到待切換的從節(jié)點,然后執(zhí)行CLUSTER FAILOVER命令,執(zhí)行成功則顯示OK,即完成主從切換
示例:
9003是切換之前的從節(jié)點:
redis-cli -p 9003 -c 127.0.0.1:9003> CLUSTER FAILOVER OK
如果不小心登錄到了主節(jié)點,也沒有關(guān)系
節(jié)點會提示如下錯誤:
redis-cli -p 9007 -c
127.0.0.1:9007> CLUSTER FAILOVER
(error) ERR You should send CLUSTER FAILOVER to a replica
如果執(zhí)行報錯或者master連接不上,還可以嘗試在命令后追加FORCE和TAKEOVER參數(shù)用于強制切換,F(xiàn)ORCE需要多數(shù)masters同意,TAKEOVER則不需要多數(shù)masters同意。
詳見官方《CLUSTER FAILOVER [FORCE|TAKEOVER]》
redis集群主從復制不生效的問題
集群信息
Redis版本:5.0
集群規(guī)模:三主三從
基本情況
在項目中為了達到高可用的目的,使用了Redis集群,搭建過程同Redis Cluster集群原理+三主三從交叉復制實戰(zhàn)+故障切換。
但是在實際使用中發(fā)現(xiàn),集群方式比單點模式故障率還要高,集群高可用配置似乎未生效。
在開發(fā)環(huán)境模擬單節(jié)點故障時,發(fā)現(xiàn)集群不具備單節(jié)點故障自動恢復功能,手動恢復故障節(jié)點后,節(jié)點最新信息未同步,必須將所有節(jié)點殺掉重新搭建才能恢復正常。
在分析的過程中確認了以下問題:
1.搭建后的集群通過cluster info/nodes指令查看,均顯示集群信息正常;
2.單個主節(jié)點故障后,對應的從節(jié)點未切換,集群不可用;
3.從節(jié)點數(shù)據(jù)量為0,在主節(jié)點的任何操作,均未同步至從節(jié)點,主從節(jié)點復制未實現(xiàn)。
4.各節(jié)點服務器防火墻均關(guān)閉,各節(jié)點端口間通信正常。
5.在從節(jié)點使用指令info replication查看時發(fā)現(xiàn),其與主節(jié)點間連接狀態(tài)為“down”,在對應的主節(jié)點查看發(fā)現(xiàn)主節(jié)點連接的從節(jié)點數(shù)量為0。說明集群的主從關(guān)系并未建立成功。
問題分析
查看從節(jié)點日志發(fā)現(xiàn),在從節(jié)點與主節(jié)點建立連接的過程中,身份認證未通過。
但是該Redis集群中所有節(jié)點的配置中均通過requirepass字段設(shè)置了相同的密碼,這個錯誤出現(xiàn)的似乎沒有道理。
MASTER aborted replication with an error: NOAUTH Authentication required
參考以上內(nèi)容發(fā)現(xiàn)需要在從節(jié)點中配置“masterauth”字段。
問題解決
在所有從、主(主節(jié)點故障后可能成為從節(jié)點)節(jié)點的配置文件即redis.conf中配置“masterauth”字段,內(nèi)容與各節(jié)點的requirepass字段(各節(jié)點requirepass字段內(nèi)容一致)一致。
配置完成后,重啟從節(jié)點,查看從節(jié)點日志,主從復制正常。
再次在從節(jié)點執(zhí)行info replication發(fā)現(xiàn),從節(jié)點與主節(jié)點通信正常,集群狀態(tài)正常。
集群實現(xiàn)主從復制。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Redis和springboot 整合redisUtil類的示例代碼
這篇文章主要介紹了Redis和springboot 整合redisUtil類的示例代碼,本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12redis cluster支持pipeline的實現(xiàn)思路
本文給大家介紹redis cluster支持pipeline的實現(xiàn)思路,在 cluster 上執(zhí)行 pipeline 可能會由于 redis 節(jié)點擴縮容 中途 redirection 切換連接導致結(jié)果丟失,具體細節(jié)問題請參考下本文2021-06-06