主從複製,讀寫分離
主機數據跟新後根據配置和策略自動同步到備機的master/slaver 機制。Master 以寫爲主,Slaver以讀爲主。
使用方法:
- 配置從庫不配置主庫
- 命令:slaver 主庫IP 主庫端口
- 配置文件細節
進行復制的模式
主從複製:從Reids 執行 命令知乎會複製master 在Slaver 執行命令的時間節點前的所有數據,然後以添加的方式複製時間節點之後的所有數據。
-
一主多僕:一個master ,被多個slaver連接 主機死之後從機的原地待命,並且主機再次啓動之後可已經主從關係續接上。
從機死之後,再次開啓,主從關係不再能復接。只要從機和master斷開,都需要重新連接,除非你配置進了redis.cof 文件中。 -
前赴後繼連接方式:多個Redis 像鏈表一樣主從主從的連接起來
第一個Redis 是Master 之後的Redis 雖然在邏輯上也是後一個Redis 的Master 但是在計算機中也是一個Slaver,只是他作爲一個Slaver還連接了Slaver。 -
反客爲主連接方式:在一主多僕的模式下
主機掛掉,讓連接他的Slaver變爲Master。Master拉掉之後,Slaver執行SLAVEOF no one
這個Slaver就會凡客爲主,變成Master。此時原本連接掛掉的Master的Redis 就有兩種選擇:一是:變爲新的Master的Slaver;二是:保持原地不動等待掛掉的Redis 復活。
進行復制的原理:
Slaver 啓動成功連接到Master 後會發送一條synchrosized 命令,Master接收到指令之後,會啓動存盤進程,同時收集用於數據修改的所有指令,在後臺的存盤進程執行完畢之後,Master 會將整個數據文件傳送給Slaver,這樣就完成了一次完全同步
全量複製:在每一個Slaver 成功連接之後進行一次完全同步
增量複製:在連接之後的,完成全量複製之後,Master會繼續收集收集修改數據的命令依次傳遞給Slaver完成同步
哨兵模式:sentinel ★★
反客爲主的自動版,在反客爲主的模式下,需要我們手動的將Slaver變爲Master SLAVEOF no one
,哨兵模式是他的自動版。能夠後臺監控主機是否故障,如果故障了就從Slaver Redis 中選一個從庫變爲主庫,當之前的Master再次啓動的時候他會變成反客爲主的現在的Master的Slaver。
要使用哨兵模式:要在redis/ 創建一個sentinel.conf 文件(千萬不能寫錯)
文件中配置哨兵模式
sentinel monitor 被監控Redis的名字(自己隨便起)被監控Redis的ip 地址 1(數字1 表示採用投票的方式選出下一個Master)
#例如:
sentinel monitor host 127.0.0.1 6379 1
在ip 爲127.0.0.1 6379 掛掉之後,系統會自動選出Master ;並且當127.0.0.1 6379 重新啓動之後也會變成選出的Master的Slaver。
不會做這些工作但是要懂
一組Sentinel可以監控多個Master
主從複製的缺點:
複製的延時,複製是從Master複製到Slaver,會有複製的延遲,在系統本來工作負擔就比較大的時候問題會更加嚴重。