溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Redis 的主從復(fù)制(Master/Slave)

發(fā)布時間:2020-07-24 01:08:45 來源:網(wǎng)絡(luò) 閱讀:444 作者:Java_老男孩 欄目:編程語言

1. 是什么

行話:也就是我們所說的主從復(fù)制,主機(jī)數(shù)據(jù)更新后根據(jù)配置和策略自動同步到備機(jī)的 master/slave 機(jī)制,Master以寫為主,Slave 以讀為主

Redis 的主從復(fù)制(Master/Slave)

2. 能干嘛

  • 數(shù)據(jù)冗余:主從復(fù)制實現(xiàn)了數(shù)據(jù)的熱備份,是持久化之外的一種數(shù)據(jù)冗余方式
  • 故障恢復(fù):當(dāng)主節(jié)點出現(xiàn)問題時,可以由從節(jié)點提供服務(wù),實現(xiàn)快速的故障恢復(fù);實際上是一種服務(wù)的冗余
  • 負(fù)載均衡:在主從復(fù)制的基礎(chǔ)上,配合讀寫分離,可以由主節(jié)點提供寫服務(wù),由從節(jié)點提供讀服務(wù)(即寫Redis數(shù)據(jù)時應(yīng)用連接主節(jié)點,讀Redis數(shù)據(jù)時應(yīng)用連接從節(jié)點),分擔(dān)服務(wù)器負(fù)載;尤其是在寫少讀多的場景下,通過多個從節(jié)點分擔(dān)讀負(fù)載
  • 高可用基石:由于主從復(fù)制是哨兵和集群能夠?qū)嵤┑幕A(chǔ),因此說主從復(fù)制是Redis高可用的基礎(chǔ)

3. 怎么玩

Redis主從復(fù)制講解

(1). info replication:查看 目標(biāo)redis 主從情況

Redis 的主從復(fù)制(Master/Slave)

(2) . 配從庫不配主庫

從庫配置:slaveof 主庫IP 主庫端口

注:slaveof 進(jìn)行配置的話,每次斷開后都需要重新連接,除非配置進(jìn)redis.conf文件中

一旦從庫 跟隨了 主庫,從庫可讀不可寫,首次是全量同步 (這里的首次是執(zhí)行slaveof命令時 ) 之后是增量,若從庫同步之前存在 與主庫相同的 key的 數(shù)據(jù),則主庫的 數(shù)據(jù)覆蓋從庫

Redis 的主從復(fù)制(Master/Slave)

(3). 常用策略
①. 一主二從

Redis 的主從復(fù)制(Master/Slave)

此一主二從 可以水平擴(kuò)展為一主多從,主機(jī)主要負(fù)責(zé)寫,從機(jī)主要負(fù)責(zé)讀

主機(jī)down掉在沒有哨兵機(jī)制的情況下,從機(jī)只會靜默等待 直至主機(jī)恢復(fù)運行狀態(tài)

Redis 的主從復(fù)制(Master/Slave)

②.薪火相傳

Redis 的主從復(fù)制(Master/Slave)

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

第一個開頭的事master,其他都是slave,只是中間的slave是下一個的master

(4). 復(fù)制原理

Slave啟動成功連接到master后會發(fā)送一個sync命令

Master接到命令啟動后臺的存盤進(jìn)程,同時收集所有接收到的用于修改數(shù)據(jù)集命令,
在后臺進(jìn)程執(zhí)行完畢之后,master將傳送整個數(shù)據(jù)文件到slave,以完成一次完全同步

  • 全量復(fù)制:而slave服務(wù)在接收到數(shù)據(jù)庫文件數(shù)據(jù)后,將其存盤并加載到內(nèi)存中。
  • 增量復(fù)制:Master繼續(xù)將新的所有收集到的修改命令依次傳給slave,完成同步

但是只要是重新連接master,一次完全同步(全量復(fù)制)將被自動執(zhí)行

(5). 重要的哨兵模式

能夠后臺監(jiān)控主機(jī)是否故障,如果故障了根據(jù)投票數(shù)自動將從庫轉(zhuǎn)換為主庫

以一主二從的策略為例:

1. 自定義的/myredis目錄下新建sentinel.conf文件,名字絕不能錯

2. 配置哨兵,填寫內(nèi)容

sentinel monitor 被監(jiān)控數(shù)據(jù)庫名字(自己起名字) 127.0.0.1 6379 1

上面最后一個數(shù)字1,表示主機(jī)掛掉后salve投票看讓誰接替成為主機(jī),得票數(shù)多少后成為主機(jī)

Redis 的主從復(fù)制(Master/Slave)

3.啟動哨兵

Redis-sentinel /myredis/sentinel.conf

4.正常主從演示,原有的master掛了
Redis 的主從復(fù)制(Master/Slave)

5.投票新選,重新主從繼續(xù)開工,info replication查查看
Redis 的主從復(fù)制(Master/Slave)

6.原有的down掉主機(jī)Master恢復(fù)運轉(zhuǎn),則輪為從機(jī)Slave

缺點:復(fù)制延時

由于所有的寫操作都是先在Master上操作,然后同步更新到Slave上,所以從Master同步到Slave機(jī)器有一定的延遲,當(dāng)系統(tǒng)很繁忙的時候,延遲問題會更加嚴(yán)重,Slave機(jī)器數(shù)量的增加也會使這個問題更加嚴(yán)重。


本文的重點是你有沒有收獲與成長,其余的都不重要,希望讀者們能謹(jǐn)記這一點。同時我經(jīng)過多年的收藏目前也算收集到了一套完整的學(xué)習(xí)資料,包括但不限于:分布式架構(gòu)、高可擴(kuò)展、高性能、高并發(fā)、Jvm性能調(diào)優(yōu)、Spring,MyBatis,Nginx源碼分析,Redis,ActiveMQ、、Mycat、Netty、Kafka、Mysql、Zookeeper、Tomcat、Docker、Dubbo、Nginx等多個知識點高級進(jìn)階干貨,希望對想成為架構(gòu)師的朋友有一定的參考和幫助

需要詳細(xì)架構(gòu)師思維導(dǎo)圖和以下資料的可以加一下技術(shù)交流分享群:“708 701 457”免費獲取

Redis 的主從復(fù)制(Master/Slave)
Redis 的主從復(fù)制(Master/Slave)
Redis 的主從復(fù)制(Master/Slave)

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI