redis 主從複製實現

word發表於2022-01-09

Redis 主從複製的實現

  • 安裝redis
  • 修改redis的配置檔案 redis.conf

②開啟daemonize yes
③Pid檔名字
④指定埠
⑤Log檔名字
⑥Dump.rdb名字

  • 在複製一份配置檔案 作為從機 也要修改配置檔案
  • 啟動redis 這個作為主機
    在這裡插入圖片描述

/usr/local/redis/bin/redis-servre /root/myredis/redis6379/redis6379.conf

  • 啟動redis 這個作為從機

/usr/local/redis/bin/redis-server /root/myredis/redis6380/redis6380.conf

  • Info replication 可以檢視是否是主或從
    在這裡插入圖片描述

  • 配置6380埠的redis為從機
    命令

slaveof 主機ip 主機埠

  • 配從不配主

主機不需要做任何配置 配置從機即可

面試問題

演示問題
1 切入點問題?slave1、slave2是從頭開始複製還是從切入點開始複製?比如從k4進來,那之前的123是否也可以複製
從頭複製

2 從機是否可以寫?set可否?
從機只能讀

3 主機shutdown後情況如何?從機是上位還是原地待命
原地待命

4 主機又回來了後,主機新增記錄,從機還能否順利複製?
可以

5 其中一臺從機down後情況如何?依照原有它能跟上大部隊嗎?
不能

3.5,薪火相傳

上一個Slave可以是下一個slave的Master,Slave同樣可以接收其他 slaves的連線和同步請求,那麼該slave作為了鏈條中下一個的master, 可以有效減輕master的寫壓力
中途變更轉向:會清除之前的資料,重新建立拷貝最新的
Slaveof 新主庫IP 新主庫埠
3.6,反客為主
SLAVEOF no one
使當前資料庫停止與其他資料庫的同步,轉成主資料庫


4,複製的原理

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


5,哨兵模式

  • 5.1,什麼是哨兵模式
    反客為主的自動版,能夠後臺監控主機是否故障,如果故障了根據投票數自動將從庫轉換為主庫
  • 5.2,怎麼玩(使用步驟)

    調整結構,6379帶著80、81
    自定義的/myredis目錄下新建sentinel.conf檔案,名字絕不能錯
    配置哨兵,填寫內容
    sentinel monitor 被監控主機名字(自己起名字) 127.0.0.1 6379 1 如 sentinel monitor hos6379 127.0.0.1 6379 1
    上面最後一個數字1,表示主機掛掉後salve投票看讓誰接替成為主機,得票數多少後成為主機
    啟動哨兵 ./redis-sentinel /root/master-slaver/sentinel.conf
    正常主從演示
    原有的master掛了
    投票新選
    重新主從繼續開工,info replication查檢視
    問題:如果之前的master重啟回來,會不會雙master衝突?

  • 5.3,一組sentinel能同時監控多個Master

6,複製的缺點

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

相關文章