redis-redis的主從複製
阿新 • • 發佈:2020-12-25
1.主從複製簡介
redis主從複製是將主伺服器上寫操作通過配置和策略同步到從機上,主機主要負責寫操作,從機主要負責讀取資料。讀寫分離的操作。
2.主從複製的作用
- 容災備份
- 讀寫分離
3. Redis複製如何去應用
- 首先準備3臺redis
- 配從不配主(使用命令配置)
- 配從(庫)不配主(庫);
- 從庫配置:執行命令
slaveof 主庫IP 主庫埠
:
每次與master斷開之後,都需要重新連線,除非你配置進redis.conf檔案;
執行命令info replication
檢視主從關係;- 修改配置檔案細節操作:
拷貝多個redis.conf檔案;
開啟daemonize yes;
修改pid檔名字;修改指定埠;
修改log檔名字;
修改dump.rdb名字;- 常用三招
- 一主多僕
一個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機器數量的增加也會使這個問題更加嚴重。