此文是我看尚矽谷教學視訊後的個人的redis學習筆記,每一張截圖都是我親自敲後截圖放在筆記中的,粘貼在部落格上可能會有點點模糊,若有錯誤或不足,還望各位大神多多指正!
9 Redis的複制(Master/Slave)
9.1 是什麼
行話:也就是我們所說的主從複制(讀寫分離),主機資料更新後根據配置和政策,自動同步到備機的master/slaver機制,Master以寫為主,Slave以讀為主
9.2 能幹嘛
① 讀寫分離
② 容災恢複
9.3 怎麼玩
9.3.1 配庫
配從(庫)不配主(庫)
9.3.2 從庫配置
① 指令:slaveof 主庫IP 主庫端口;
② 每次與master斷開之後,都需要重新連接配接,除非你配置進redis.conf檔案;
③ info replication
9.3.3 修改配置檔案細節操作
本次示例用三個用戶端測試。
① 拷貝多個redis.conf檔案

② 修改複制了的三個配置檔案
6380和6381以此改。
9.3.4 常用3招
9.3.4.1 一主二仆
1.Init
開啟三台用戶端
最初時三個用戶端的角色都是一樣的,都是master
2.一個Master兩個Slave
3.日志檢視
① 主機日志
② 備機日志
跟主機操作一樣
③ info replication
檢視主機從機的資訊
4.主從問題示範
① 問題一:當主機設定了值後從機是否可以對同一個key設值?
② 問題二:當主機關機後,從機的角色是什麼?
當主機關機後,從機是原地待命的。
③ 問題三:當主機啟動後,再存值,從機可以取到嗎?
④ 問題四:當從機關機後,再開機,是什麼角色?時候還可以取到以前主機的值?
每次與master斷開之後,都需要重新連接配接,除非你配置進redis.conf檔案;
9.3.4.2 薪火相傳
① 上一個Slave可以是下一個slave的Master,Slave同樣可以接收其他,slaves的連接配接和同步請求,那麼該slave作為了鍊條中下一個的master,可以有效減輕master的寫壓力;
② 中途變更轉向:會清除之前的資料,重建立立拷貝最新的slaveof 新主庫IP 新主庫端口;
9.3.4.3 反客為主
SLAVEOF no one:使目前資料庫停止與其他資料庫的同步,轉成主資料庫
① 第一步
② 第二步
9.4 複制原理
slave啟動成功連接配接到master後會發送一個sync指令,Master接到指令啟動背景的存盤程序,同時收集所有接收到的用于修改資料集指令,在背景程序執行完畢之後,master将傳送整個資料檔案到slave,以完成一次完全同步
全量複制:slave服務在接收到資料庫檔案資料後,将其存盤并加載到記憶體中。
增量複制:Master繼續将新的所有收集到的修改指令依次傳給slave,完成同步,但是隻要是重新連接配接master,一次完全同步(全量複制)将被自動執行即,首次是全量複制,之後的是增量複制,隻要是重連了一次主機,就是全量複制。
9.5 哨兵模式(sentinel)
9.5.1 是什麼
反客為主的自動版,能夠背景監控主機是否故障,如果故障了根據投票數自動将從庫轉換為主庫
9.5.2 怎麼玩(使用步驟)
① 調整結構,6379帶着6380、6381,6379作為主機,80和81作為從機
② 自定義的/root/Myredis目錄(我自己是這個目錄)下建立sentinel.conf檔案,名字絕不能錯
③ 配置哨兵,填寫内容
sentinel monitor 被監控資料庫名字(自己起名字) 127.0.0.1 6379 1
上面最後一個數字1,表示主機挂掉後salve投票看讓誰接替成為主機,得票數多少後成為主機。
④ 啟動哨兵
redis-sentinel /myredis/sentinel.conf,上述目錄依照各自的實際情況配置,可能目錄不同
⑤ 正常主從示範
⑥ 原有的master挂了
⑦ 投票新選
⑧ 重新主從繼續開工,info replication查檢視
⑨ 問題:如果之前的master重新開機回來,會不會雙master沖突?
9.5.3 一組sentinel能同時監控多個Master
9.6 複制的缺點
複制延時