主從複製工做流程html
- 從服務器鏈接主服務器,發送SYNC命令。
- 主服務器接收到SYNC命令後,開始執行bgsave命令生成RDB文件並使用緩衝區記錄此後執行的全部命令
- 主服務器bgsave執行完成後,向全部服務器發送快照文件,並在發送期間繼續記錄被執行的寫命令
- 從服務器接收到快照數據後丟棄所的有舊數據,載入收到以的快照
- 主服務器快照發送完畢後開始向從服務器發送緩衝區中的寫命令
- 從服務器完成對快照的載入,開始接收命令請求,並執行來自主服務器緩衝區的寫命令(從服務器初始化完成)
- 主服務器每執行一個寫命令就會向從服務器發送相同的寫命令,從服務器接收並執行收到的寫命令(從服務器初始化完成後的操做)
主從複製優缺點:前端
優勢:redis
- 支持主從複製,主機會自動將數據同步到從機,能夠進行讀寫分離
- 爲了負載master的讀操做壓力,slave服務器能夠爲客戶端提供只讀操做的服務,寫服務仍然必須由master來完成
- slave 一樣能夠接受其它slave的鏈接和同步請求,這樣能夠有效的分載master 的同步壓力
- master是以非阻塞的方式爲slave提供服務,因此master-slave同步期間,客戶端仍然能夠提交查詢和修改請求。
- slave server一樣是以非阻塞的方式未完成數據同步,在同步期間,若是有客服端提交查詢請求,redis則返回同步以前的數據。
缺點:服務器
- redis 不具有自動容錯和恢復功能,主機和從機的宕機都會致使客戶端部分讀寫請求的失敗,須要等待機器重啓或手動切換前端的IP才能恢復
- 主機宕機,宕機前有部分數據未能同步到從機,切換IP後還會引發數據不一致的問題下降了系統的可用性。
- redis較難支持在線擴容,在集羣容量達到上限時在線擴容變得複雜。
主從複製的經常使用的幾種方式
- 一主二僕 A(B、C) 一個Master兩個Slave
- 薪火相傳(去中心化)A - B - C ,B既是主節點(C的主節點),又是從節點(A的從節點)
- 反客爲主(主節點down掉後,手動操做升級從節點爲主節點)
1)一主二僕 A(B、C) 一個Master兩個Slave
一、節點redis不須要修改配置 spa
主節點服務器IP:192.168.244.1283d
二、改從節點配置server
添加配置:slaveof 192.168.244.128 6379htm
從節點IP:192.168.244.130 192.168.244.131blog
三、分別重啓主從服務器,驗證get
主服務器info replication:
顯示有兩個從節點,主節點set值 ,從節點能夠get 獲得
從服務器info replication:
2)薪火相傳(去中心化)A - B – C
如上配置: 192.168.244.130 添加配置: slaveof 192.168.244.128 6379
192.168.244.131 添加配置: slaveof 192.168.244.130 6379
3)反客爲主(一僕二主模式)
一、關閉主節點後從節點info replication:
此時從節點仍是隻讀的
二、執行命令slaveof no one 升爲主節點:
升爲主節點後可讀可寫。