mysql 哨兵模式_Redis讲解主从复制和哨兵模式
推薦(免費(fèi)):redis
文章目錄主從復(fù)制
命令
配置
復(fù)制原理
全量復(fù)制
增量復(fù)制
測(cè)試
嵌套主從
哨兵模式
配置哨兵
測(cè)試
主從復(fù)制
主從復(fù)制指的是把一臺(tái)Redis服務(wù)器的數(shù)據(jù)復(fù)制到其他Redis服務(wù)器上,前者稱為主節(jié)點(diǎn)Master,后者稱為從節(jié)點(diǎn)Slave,只能從Master單向復(fù)制到Slave,一般Master以寫(xiě)操作為主,Slave以讀操作為主,實(shí)現(xiàn)讀寫(xiě)分離。
作用數(shù)據(jù)冗余:主從復(fù)制實(shí)現(xiàn)了數(shù)據(jù)的熱備份,是持久化之外的一種數(shù)據(jù)冗余方式。
故障恢復(fù):當(dāng)主節(jié)點(diǎn)出現(xiàn)問(wèn)題時(shí),可以由從節(jié)點(diǎn)提供服務(wù),實(shí)現(xiàn)快速的故障恢復(fù);實(shí)際上是一種服務(wù)的冗余。
負(fù)載均衡:在主從復(fù)制的基礎(chǔ)上,配合讀寫(xiě)分離,可以由主節(jié)點(diǎn)提供寫(xiě)服務(wù),由從節(jié)點(diǎn)提供讀服務(wù)(即寫(xiě)Redis數(shù)據(jù)時(shí)應(yīng)用連接主節(jié)點(diǎn),讀Redis數(shù)據(jù)時(shí)應(yīng)用連接從節(jié)點(diǎn)),分擔(dān)服務(wù)器負(fù)載;尤其是在寫(xiě)少讀多的場(chǎng)景下,通過(guò)多個(gè)從節(jié)點(diǎn)分擔(dān)讀負(fù)載,可以大大提高Redis服務(wù)器的并發(fā)量。
高可用基石:除了上述作用以外,主從復(fù)制還是哨兵和集群能夠?qū)嵤┑幕A(chǔ),因此說(shuō)主從復(fù)制是Redis高可用的基礎(chǔ)。
命令命令作用slaveof host port將當(dāng)前服務(wù)器轉(zhuǎn)變?yōu)橹付ǚ?wù)器的從屬服務(wù)器。如果已是slave則停止對(duì)舊主服務(wù)器的同步,丟棄舊數(shù)據(jù)集,轉(zhuǎn)而開(kāi)始對(duì)新主服務(wù)器進(jìn)行同步。SLAVEOF NO ONE將使得這個(gè)從屬服務(wù)器關(guān)閉復(fù)制功能,并從從屬服務(wù)器轉(zhuǎn)變回主服務(wù)器,原來(lái)同步所得的數(shù)據(jù)集不會(huì)被丟棄。
info [section]INFO命令以一種易于理解和閱讀的格式,返回關(guān)于Redis服務(wù)器的各種信息和統(tǒng)計(jì)數(shù)值。通過(guò)給定可選的參數(shù)section,可以讓命令只返回某一部分的信息:
配置
以單機(jī)多服務(wù)為例(正常是多機(jī)多服務(wù),然我只有一臺(tái)服務(wù)器)
首先每個(gè)redis客戶端都默認(rèn)是主機(jī),可以通過(guò)info replication命令查看。
那么我們現(xiàn)在要同時(shí)開(kāi)三個(gè)客戶端,模擬一主兩從,所以要修改配置:修改端口號(hào)
修改pid名字
修改log名字
修改rdb名字
設(shè)置主機(jī)連接(可不選,用命令行)
先拷貝兩份配置文件作為從機(jī)配置,主機(jī)可使用默認(rèn)。
以redis80.conf為例依次修改上述五點(diǎn)配置,81只改前四點(diǎn)。
然后啟動(dòng)他們(79、80、81)
設(shè)置主從:80是在配置文件設(shè)置(永久式)好的,直接查看:
81沒(méi)有配置,可以手動(dòng)命令行設(shè)置
此時(shí)查看79(master):
復(fù)制原理
全量復(fù)制
從機(jī)每次連接主機(jī)時(shí)會(huì)全量復(fù)制,把主機(jī)的全部數(shù)據(jù)復(fù)制到從機(jī)。
增量復(fù)制
從機(jī)連上主機(jī)后,對(duì)于主機(jī)后面更新的數(shù)據(jù),會(huì)只針對(duì)這部分?jǐn)?shù)據(jù)同步更新給從機(jī)。
測(cè)試從機(jī)默認(rèn)只讀,會(huì)增量復(fù)制同步主機(jī)的數(shù)據(jù):
主機(jī)宕機(jī)情況:
3.從機(jī)宕機(jī)情況:
嵌套主從
如圖79是80的主機(jī),而80又是81的主機(jī),這種嵌套主從關(guān)系。
哨兵模式
上面的80上位和嵌套主從都是我們手動(dòng)命令行輸入的,其目的就是避免主機(jī)宕機(jī)后寫(xiě)操作的空窗期,這些都是需要人工干預(yù)。
哨兵Sentinel會(huì)作為一個(gè)獨(dú)立的進(jìn)程獨(dú)立運(yùn)行,其原理是哨兵通過(guò)發(fā)送命令,等待Redis服務(wù)器響應(yīng),從而監(jiān)控運(yùn)行的多個(gè)Redis服務(wù)器。
如果哨兵檢測(cè)到主機(jī)下線,則會(huì)選一個(gè)從機(jī)「上位」(自動(dòng)故障遷移)成為新的主機(jī)。如果原主機(jī)上線,原主機(jī)將變成新主機(jī)的從機(jī)。其原理是通過(guò)發(fā)布訂閱模式通知其他服務(wù)器,修改配置文件,從而切換主機(jī)。
如果哨兵宕機(jī)怎么辦?可以使用多哨兵模式來(lái)互相監(jiān)控。
圖片摘自https://www.jianshu.com/p/06ab9daf921d,侵刪主觀下線(Subjectively Down, 簡(jiǎn)稱 SDOWN)指的是單個(gè)哨兵實(shí)例對(duì)服務(wù)器做出的下線判斷。
客觀下線(Objectively Down, 簡(jiǎn)稱 ODOWN)指的是多個(gè)哨兵實(shí)例在對(duì)同一個(gè)服務(wù)器做出主觀下線判斷, 并且通過(guò) SENTINEL is-master-down-by-addr 命令互相交流之后, 得出的服務(wù)器下線判斷。
當(dāng)主機(jī)客觀下線后,哨兵會(huì)投票出新的主機(jī)(具體算法略 ),進(jìn)行自動(dòng)故障遷移(failover),通過(guò)發(fā)布訂閱通知其他服務(wù)器切換主機(jī)。
配置哨兵
首先在安裝目錄下有一個(gè)詳細(xì)注解的哨兵配置:
新建sentinel.conf來(lái)監(jiān)視6379,其余默認(rèn)即可:
啟動(dòng)哨兵:
測(cè)試
多哨兵模式,配置不同端口的配置文件來(lái)開(kāi)啟多個(gè)哨兵客戶端,然后照葫蘆畫(huà)瓢即可(偷懶 )
總結(jié)
以上是生活随笔為你收集整理的mysql 哨兵模式_Redis讲解主从复制和哨兵模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql 删除视图 命令_在MySQL
- 下一篇: 数学建模题目及论文_数学与运用数学专业论