1. 程式人生 > 資料庫 >redis-redis的主從複製

redis-redis的主從複製

1.主從複製簡介

redis主從複製是將主伺服器上寫操作通過配置和策略同步到從機上,主機主要負責寫操作,從機主要負責讀取資料。讀寫分離的操作。

2.主從複製的作用 

  1. 容災備份
  2. 讀寫分離

3. Redis複製如何去應用

  1. 首先準備3臺redis
  2. 配從不配主(使用命令配置)
  3. 配從(庫)不配主(庫);
  4. 從庫配置:執行命令slaveof 主庫IP 主庫埠
    每次與master斷開之後,都需要重新連線,除非你配置進redis.conf檔案;
    執行命令info replication檢視主從關係;
  5. 修改配置檔案細節操作:
    拷貝多個redis.conf檔案;
    開啟daemonize yes;
    修改pid檔名字;
    修改指定埠;
    修改log檔名字;
    修改dump.rdb名字;
  6. 常用三招
  • 一主多僕
    一個master兩個slave;
    一些問題?
    (1) 切入點問題?slave1、slave2是從頭開始複製還是從切入點開始複製?
    答:從頭開始複製;
    (2) 從機是否可以寫?set可否?
    答:從機不可以寫,也就不能set;
    (3) 主機shutdown後情況如何?從機是上位還是原地待命?
    答:原地待命;
    (4) 主機又回來了後,主機新增記錄,從機還能否順利複製?
    答:可以;
    (5) 其中一臺從機宕掉後情況如何?恢復它能跟上主機嗎?
    答:不能,需要重新建立主從關係;
  • 薪火相傳
    上一個Slave可以是下一個slave的Master,Slave同樣可以接收其他slaves的連線和同步請求,那麼該slave作為了鏈條中下一個的master,可以有效減輕master的寫壓力。
    中途變更轉向:會清除之前的資料,重新建立拷貝最新的。
  • 反客為主
    主機宕掉後,從機升級為主機:
    選擇一個從機手動執行slaveof no one命令變更為主機,其他從機與該主機建立主從關係。

4.複製的原理

master接到命令啟動後臺的存檔程序,同時收集所有接收到的用於修改資料集命令,在後臺程序執行完畢之後,master將傳送整個資料檔案到slave,以完成一次完全同步
全量複製:而slave服務在接收到資料庫檔案資料後,將其存檔並載入到記憶體中。slave第一次同步為全量複製。
增量複製:master繼續將新的所有收集到的修改命令依次傳給slave,完成同步
但是隻要是重新連線master,第一次完全同步(全量複製)將被自動執行。

5.哨兵模式(senitor)

  • 哨兵模式簡介
        當主伺服器發生宕機的時候,不需要手動的配置從機就可以自動的升級為主伺服器。選舉的方式根據投票的方式來確定下一個主伺服器是哪個。
  • 啟動哨兵模式的配置
      1.自定義的/myredis目錄下新建sentinel.conf檔案,名字絕不能錯;
      2.配置哨兵,填寫內容在sentinel.conf檔案中配置:sentinel monitor 被監控資料庫名字(自己起個名字) 127.0.0.1 6379 1上面最後一個數字1,表示主機掛掉後salve投票看讓誰接替成為主機,得票數多的成為主機;然後在從機上配置與主機同步的命令 (SLAVEOF 127.0.0.1 6379)
    3.啟動哨兵
       執行命令:redis-sentinel /etc/myconfig/sentinel/sentinel.conf (目錄依照各自的實際情況配置,可能目錄不同);
  • 問題
    如果之前的master重啟回來,會不會雙master衝突?
    不會造成雙衝突,之前的master會成為slave。

6.複製的缺點

複製延時
由於所有的寫操作都是先在Master上操作,然後同步更新到Slave上,所以從Master同步到Slave機器有一定的延遲,當系統很繁忙的時候,延遲問題會更加嚴重,Slave機器數量的增加也會使這個問題更加嚴重。