修改redis.conf配置文件
vi redis.conf
在編輯模式下 輸入 /slaveof 來搜索
將slaveof啟用 即 將#刪除
依次配置所有 slave 並將進程 kill 掉 重啟
查看主從信息
redis 集群主從同步的簡單原理
Redis的復制功能是基於內存快照的持久化策略基礎上的,也就是說無論你的持久化策略選擇的是什么,只要用到了Redis的復制功能,就一定會有內存快照發生。
當Slave啟動並連接到Master之后,它將主動發送一個SYNC命令( 首先Master會啟動一個后台進程,將數據快照保存到文件中[rdb文件] Master 會給Slave 發送一個
Ping命令來判斷Slave的存活狀態 當存活時 Master會將數據文件發送給Slave 並將所有寫命令發送到Slave )。
Slave首先會將數據文件保存到本地 之后再將 數據 加載到內存中。
當第一次鏈接 或者是 故障后 重新連接 都會先判斷Slave的存活狀態 在做全部數據的同步 , 之后只會同步Master的寫操作(將命令發送給Slave)
問題:
當 Master 同步數據時 若數據量較大 而Master本身只會啟用一個后台進程 來對多個Slave進行同步 , 這樣Master就會壓力過大 , 而且Slave 恢復的時間也會很慢!
redis 主從復制的優點:
(1)在一個Redis集群中,master負責寫請求,slave負責讀請求,這么做一方面通過將讀請求分散到其他機器從而大大減少了master服務器的壓力,另一方面slave專注於提供
讀服務從而提高了響應和讀取速度。
(2)在一個Redis集群中,如果master宕機,slave可以介入並取代master的位置,因此對於整個Redis服務來說不至於提供不了服務,這樣使得整個Redis服務足夠安全。
(3)水平增加Slave機器可以提高性能
Slave 默認是只讀的更改:
Master 可以 讀寫(Write and Read) 而 Slave只可以讀(read only默認情況)也可以更改 {但是開啟后Slave數據不會向上同步}
redis 主從同步兩種架構方式:
1》:主從架構
2》:主從從架構
備注:
因為Slave斷連,重連后仍然會全部同步數據,所以redis2.8版本后,增加了增量復制來解決宕機后重新鏈接仍然會全部同步!
Master會維護一個環形隊列:
隊列內存儲:1》:slave連接master的id值 2》:slave上一次同步的最后一個命令
這樣當斷開重連后就不會全部同步,而只會在最后一個命令同步數據!
寫這篇博客是為了加深理解並將自己了解到的知識記錄下來 , 同時在寫本博客的過程中,借鑒了許多優秀的博客,來完善 , 希望廣大博友批評指正。共同進步!
2016/12/4