天天看點

redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)

       此文是我看尚矽谷教學視訊後的個人的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檔案

redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)

       ② 修改複制了的三個配置檔案

redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)

       6380和6381以此改。

9.3.4 常用3招

9.3.4.1 一主二仆

       1.Init

       開啟三台用戶端

redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)

       最初時三個用戶端的角色都是一樣的,都是master

redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)

       2.一個Master兩個Slave

redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)

       3.日志檢視

       ① 主機日志

redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)

       ② 備機日志

       跟主機操作一樣

       ③ info replication

       檢視主機從機的資訊

       4.主從問題示範

       ① 問題一:當主機設定了值後從機是否可以對同一個key設值?

redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)

       ② 問題二:當主機關機後,從機的角色是什麼?

redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)

       當主機關機後,從機是原地待命的。

       ③ 問題三:當主機啟動後,再存值,從機可以取到嗎?

redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)

       ④ 問題四:當從機關機後,再開機,是什麼角色?時候還可以取到以前主機的值?

redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)

       每次與master斷開之後,都需要重新連接配接,除非你配置進redis.conf檔案;

redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)

9.3.4.2 薪火相傳

       ① 上一個Slave可以是下一個slave的Master,Slave同樣可以接收其他,slaves的連接配接和同步請求,那麼該slave作為了鍊條中下一個的master,可以有效減輕master的寫壓力;

       ② 中途變更轉向:會清除之前的資料,重建立立拷貝最新的slaveof 新主庫IP 新主庫端口;

redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)
redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)

9.3.4.3 反客為主

       SLAVEOF no one:使目前資料庫停止與其他資料庫的同步,轉成主資料庫

       ① 第一步

redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)

       ② 第二步

redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)

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檔案,名字絕不能錯

redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)

      ③ 配置哨兵,填寫内容

redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)

      sentinel monitor 被監控資料庫名字(自己起名字) 127.0.0.1 6379 1

      上面最後一個數字1,表示主機挂掉後salve投票看讓誰接替成為主機,得票數多少後成為主機。

      ④ 啟動哨兵

      redis-sentinel /myredis/sentinel.conf,上述目錄依照各自的實際情況配置,可能目錄不同

redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)

      ⑤ 正常主從示範

      ⑥ 原有的master挂了

      ⑦ 投票新選

      ⑧ 重新主從繼續開工,info replication查檢視

redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)

      ⑨ 問題:如果之前的master重新開機回來,會不會雙master沖突?

redis個人學習筆記 七:Redis的複制(Master/Slave)9 Redis的複制(Master/Slave)

9.5.3 一組sentinel能同時監控多個Master

9.6 複制的缺點

      複制延時

繼續閱讀