Redis 主從複制是主機資料更新後根據配置和政策,自動同步到備份的master/slaver機制,master寫為主,slaver以讀為主,能夠做到讀寫分離,容災恢複。
主從複制的準備工作
a、拷貝多個redis.conf檔案,
b、開啟daemonize yes,
c、Pid檔案名字,
d、指定端口,
e、log檔案名字,
f、dump.rdb檔案名
一、一主二從
兩個從庫使用指令:slaveof 主庫ip 主庫端口 配置跟随的主庫,配置完後可以使用info replication指令檢視資訊;
注:從機連接配接後恢複主機所有記錄;主寫從機存在記錄,從機無法寫;主機死了,從機原地待命,不會變成主機,主機再次啟動,關系不變;
從機死了,再啟動從機則變成master,需要再次連接配接,除非配置到redis.conf;(slaveof 127.0.0.1 6381)
二、薪火相傳
兩個從庫使用指令:slaveof 主庫ip 主庫端口 配置跟随的主庫,配置成a 是b的master,b是c的master,則a,b角色都是slave,在a中set記錄,b,c都會有記錄
三、反客為主
在一主二仆情況下,當主機挂了,從機可以使用slaveof no one成為新的主機,另一個從機還是原來狀态,不會改變主機的對象
四、哨兵模式
反客為主的自動版,能夠背景監控主機是否故障,如果故障了然後通過投票數将從庫轉成主庫
1、3個redis先配合成一主二從的狀态
2、建立sentinel.conf檔案,并進行配置
#sentinel端口
port 26379
#工作路徑,注意路徑不要和主重複
dir "/usr/local/redis-6379"
# 守護程序模式
daemonize yes
#關閉保護模式
protected-mode no
# 指明日志檔案名
logfile "./sentinel.log"
#哨兵監控的master,主從配置一樣,這裡隻用輸入redis主節點的ip/port和法定人數。
#sentinel monitor 被監控的主機名字(自己取名)127.0.0.1 6379 1
#最後一個1,表示主機挂了salve投票看讓誰的票多于1票以上接替成為主機,得票數多為主機
sentinel monitor mymaster 192.168.125.128 6379 1
# master或slave多長時間(預設30秒)不能使用後标記為s_down狀态。
sentinel down-after-milliseconds mymaster 5000
#若sentinel在該配置值内未能完成failover操作(即故障時master/slave自動切換),則認為本次failover失敗。
sentinel failover-timeout mymaster 18000
#設定master和slaves驗證密碼,可以不設
sentinel auth-pass mymaster 123456
3、哨兵模式的啟動
在redis的彬目錄: ./redis-setinel /home/ubuntu/myredis/sentinel.conf (根據自己的目錄)
4.java的調用:可以看我之前的部落格,這邊附上連結
https://blog.csdn.net/qq_25011427/article/details/80787303
https://blog.csdn.net/qq_25011427/article/details/80787212