溫馨提示×

溫馨提示×

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

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

redis怎么使用主從復(fù)制Master/slave

發(fā)布時間:2021-03-08 14:09:27 來源:億速云 閱讀:325 作者:TREX 欄目:關(guān)系型數(shù)據(jù)庫

本篇內(nèi)容介紹了“redis怎么使用主從復(fù)制Master/slave”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

redis怎么使用主從復(fù)制Master/slave

是什么

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

能干嘛

讀寫分離
容災(zāi)恢復(fù)

推薦(免費):redis

怎么玩

? 配從(庫)不配主(庫)
? 從庫配置命令:slaveof 主庫IP 主庫端口
??? 每次與master斷開之后,都需要重新連接,除非你配置進redis.conf文件(具體位置:redis.conf搜尋#### REPLICATION ####)
??? info replication
? 修改配置文件細節(jié)操作
??? 拷貝多個redis.conf文件,按’redis[port].conf’重命名
??? 開啟daemonize yes
??? pid文件名字
??? 指定端口
??? log文件名字
??? dump.rdb名字

replication 英 [?repl?’ke??(?)n] 美 [?repl?’ke??(?)n] n.
(繪畫等的)復(fù)制;拷貝;重復(fù)(實驗);(尤指對答辯的)回答

常用3招

一主二仆(一臺主機,兩臺從機)

Init

redis怎么使用主從復(fù)制Master/slave
通過slaveof 127.0.0.1 6379d來設(shè)置仆機
此時設(shè)置了一主二仆
在主的里面set k4 v4,在兩個slave里面get k4都能顯示出來。
1.如果再slave之前,我設(shè)置了k1和k2.那么從機能否查的出來其值?
能,從機只有接收了之后,就從頭擼到尾。主機有的通通擼一遍
2.此時在主機上面set k6 v6.而兩個從機上面也有set k6 v66.此時會出現(xiàn)哪種情況。先到先得,后者覆蓋,從機和主機執(zhí)行同樣的命令是否可以通過?
主機寫為主,從機讀為主
此時從機不能寫,報了異常。
3.主機死了?從機會有哪些情況。從機上位?原地待命?
還是slave,原地待命。不會上位,領(lǐng)導(dǎo)回來了,一切照舊
4.從機死了?從機能不能恢復(fù)過來?
從機死了,恢復(fù)過來就變成了master,因為? 每次與master斷開之后,都需要重新連接,除非你配置進redis.conf。如果想跟上大部隊,就是用slaveof命令即可。從頭來一遍,把主機的從頭到尾擼一遍。

薪火相傳

核心思想:去中心化
上一個Slave可以是下一個slave的Master,Slave同樣可以接收其他 slaves的連接和同步請求,那么該slave作為了鏈條中下一個的master, 可以有效減輕master的寫壓力(奴隸的奴隸還是奴隸)
中途變更轉(zhuǎn)向:會清除之前的數(shù)據(jù),重新建立拷貝最新的
slaveof 新主庫IP 新主庫端口
比如79是80的主機,80是81的主機。在79中set k9 v9在80和81之間都能查詢的到,在80主機上使用info republication,是slave,但是也連接了一個slaver。

反客為主

SLAVEOF no one
使當(dāng)前數(shù)據(jù)庫停止與其他數(shù)據(jù)庫的同步,轉(zhuǎn)成主數(shù)據(jù)庫
主機掛了之后,兩個從機需要選擇出一個老大,這時候?qū)?0使用一個命令,slaveof no one,讓80稱為領(lǐng)導(dǎo)。而對于81來說,如果使用了slaveof 80,則認80位主機,對80的數(shù)據(jù)做了修改,81也能夠查詢的到。若原主機79回來了之后,此時就變成了一個獨立的個體。

復(fù)制原理

slave啟動成功連接到master后會發(fā)送一個sync命令
master接到命令啟動后臺的存盤進程,同時收集所有接收到的用于修改數(shù)據(jù)集命令, 在后臺進程執(zhí)行完畢之后,master將傳送整個數(shù)據(jù)文件到slave,以完成一次完全同步
全量復(fù)制:而slave服務(wù)在接收到數(shù)據(jù)庫文件數(shù)據(jù)后,將其存盤并加載到內(nèi)存中。
增量復(fù)制:Master繼續(xù)將新的所有收集到的修改命令依次傳給slave,完成同步
但是只要是重新連接master,一次完全同步(全量復(fù)制)將被自動執(zhí)行
首次是全量復(fù)制,其后是增量復(fù)制。

哨兵模式(sentinel)

一組sentinel能同時監(jiān)控多個master(巡邏放哨)

是什么

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

怎么玩(使用步驟)

?1. 調(diào)整結(jié)構(gòu),6379帶著6380、6381
?2. 新建sentinel.conf文件,名字絕不能錯
?3. 配置哨兵,填寫內(nèi)容
???1.sentinel monitor 被監(jiān)控數(shù)據(jù)庫名字(自己起名字) 127.0.0.1 6379 1
???2. 上面最后一個數(shù)字1,表示主機掛掉后salve投票看讓誰接替成為主機,得票數(shù)多少后成為主機(PS. 跟官網(wǎng)的描述有出入,下面有官方文檔說明)
?4. 啟動哨兵
???1. redis-sentinel /sentinel.conf(上述目錄依照各自的實際情況配置,可能目錄不同)
?5. 正常主從演示
?6. 原有的master掛了
?7. 投票新選
?8. 重新主從繼續(xù)開工,info replication查查看

問題:如果之前掛了的master重啟回來,會不會雙master沖突?
答: 不會,原master,變成slave

復(fù)制的缺點

復(fù)制延時

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

“redis怎么使用主從復(fù)制Master/slave”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

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

AI