4. Redis-主從複製+哨兵
4.1 主從複製
- master可以擁有多個 slave
- 多個 slave 可以連線同一個 master 外,還可以連線到其他的 slave
- 主從複製不會阻塞 master 在同步資料時,master可以繼續處理client請求
- 提供系統的伸縮性
4.2 主從複製過程
- slave 與 master 建立連線,傳送 sync 同步命令。
- master 會開啟一個後臺程序,將資料庫快照儲存到檔案中,同事 master 主程序會開始收集新的寫命令並快取
- 後臺完成儲存後,就將檔案傳送給 slave
- slave 將此檔案儲存到本地上
4.3 主從複製配置
主從複製方案
角色 | ip | 埠 |
master | 192.168.136.175 | 6379 |
slave | 192.168.136.176 | 6379 |
slave | 192.168.136.178 | 6379 |
1. 安裝redis
2. 配置 redis.conf 檔案,master 不要修改配置,只需要修改 slave 的。slaveof 192.168.136.175 6379
3. 重啟三臺伺服器,在 master 進入redis-cli,輸入 info 命令,看到以下資訊,證明配置成功。
4.4 哨兵
有了主從複製的實現以後,我們如果想對主從伺服器進行監控,那麼在 redis2.6 之後提供了,一個哨兵的機制,在2.6版本中為哨兵1.0版本。在2.8之後哨兵功能,穩定起來。
哨兵的含義就是監控 redis 的執行情況,其主要功能有兩點:
- 監控主資料庫和從資料庫是否正常執行。
- 主資料庫出現故障時,可以自動將從資料庫轉為主資料庫,實現自動切換。
4.4.1 哨兵實現步驟:
在任意一臺從伺服器(slave)啟動 sentinel.conf (其實應該在第四臺機器上啟動)
1. 複製 sentinel.conf 檔案到 /opt/redis/etc 中。sentinel.conf 檔案在redis的原始碼包下
2. 修改 sentinel.conf 檔案
sentinel monitor mymaster 192.168.136.175 6379 1
sentinel down-after-milliseconds mymaster 10000
sentinel parallel-syncs mymaster 2
sentinel failover-timeout mymaster 30000
3. 啟動三臺 redis 伺服器
4. 啟動哨兵 ./redis-server /opt/redis/etc/sentinel.conf --sentinel &
配置完成!!!
檢視哨兵監控的資訊,在任意一臺機器都可以檢視。 ./redis-cli -h 192.168.136.176 -p 26379 info Sentinel
關閉 主節點伺服器 (192.168.136.175),配置了哨兵的伺服器上自動打印出提示。
重新開啟 175,但是節點不會把主節點切回175上。
關閉 176,主節點切回 175