欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Redis主從復(fù)制以及主從復(fù)制原理

 更新時(shí)間:2021年05月29日 10:37:38   作者:八重櫻  
在現(xiàn)有企業(yè)中80%公司大部分使用的是redis單機(jī)服務(wù),在實(shí)際的場(chǎng)景當(dāng)中單一節(jié)點(diǎn)的redis容易面臨風(fēng)險(xiǎn)。本文將介紹Redis主從復(fù)制以及主從復(fù)制原理。

面臨問(wèn)題

1. 機(jī)器故障。我們部署到一臺(tái) Redis 服務(wù)器,當(dāng)發(fā)生機(jī)器故障時(shí),需要遷移到另外一臺(tái)服務(wù)器并且要保證數(shù)據(jù)是同步的。而數(shù)據(jù)是最重要的,如果你不在乎,基本上也就不會(huì)使用 Redis 了。

2. 容量瓶頸。當(dāng)我們有需求需要擴(kuò)容 Redis 內(nèi)存時(shí),從 16G 的內(nèi)存升到 64G,單機(jī)肯定是滿足不了。當(dāng)然,你可以重新買(mǎi)個(gè) 128G 的新機(jī)器。

解決辦法

要實(shí)現(xiàn)分布式數(shù)據(jù)庫(kù)的更大的存儲(chǔ)容量和承受高并發(fā)訪問(wèn)量,我們會(huì)將原來(lái)集中式數(shù)據(jù)庫(kù)的數(shù)據(jù)分別存儲(chǔ)到其他多個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)上。Redis 為了解決這個(gè)單一節(jié)點(diǎn)的問(wèn)題,也會(huì)把數(shù)據(jù)復(fù)制多個(gè)副本部署到其他節(jié)點(diǎn)上進(jìn)行復(fù)制,實(shí)現(xiàn) Redis 的高可用,實(shí)現(xiàn)對(duì)數(shù)據(jù)的冗余備份,從而保證數(shù)據(jù)和服務(wù)的高可用。

主從復(fù)制

主從復(fù)制,是指將一臺(tái) Redis 服務(wù)器的數(shù)據(jù),復(fù)制到其他的 Redis 服務(wù)器。前者稱為主節(jié)點(diǎn)(master),后者稱為從節(jié)點(diǎn)(slave),數(shù)據(jù)的復(fù)制是單向的,只能由主節(jié)點(diǎn)到從節(jié)點(diǎn)。默認(rèn)情況下,每臺(tái) Redis 服務(wù)器都是主節(jié)點(diǎn);且一個(gè)主節(jié)點(diǎn)可以有多個(gè)從節(jié)點(diǎn)(或沒(méi)有從節(jié)點(diǎn)),但一個(gè)從節(jié)點(diǎn)只能有一個(gè)主節(jié)點(diǎn)。

主從復(fù)制的作用

1. 數(shù)據(jù)冗余:主從復(fù)制實(shí)現(xiàn)了數(shù)據(jù)的熱備份,是持久化之外的一種數(shù)據(jù)冗余方式。

2. 故障恢復(fù):當(dāng)主節(jié)點(diǎn)出現(xiàn)問(wèn)題時(shí),可以由從節(jié)點(diǎn)提供服務(wù),實(shí)現(xiàn)快速的故障恢復(fù);實(shí)際上是一種服務(wù)的冗余。

3. 負(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ā)量。

4. 讀寫(xiě)分離:可以用于實(shí)現(xiàn)讀寫(xiě)分離,主庫(kù)寫(xiě)、從庫(kù)讀,讀寫(xiě)分離不僅可以提高服務(wù)器的負(fù)載能力,同時(shí)可根據(jù)需求的變化,改變從庫(kù)的數(shù)量;

5. 高可用基石:除了上述作用以外,主從復(fù)制還是哨兵和集群能夠?qū)嵤┑幕A(chǔ),因此說(shuō)主從復(fù)制是 Redis 高可用的基礎(chǔ)。

主從復(fù)制啟用

從節(jié)點(diǎn)開(kāi)啟主從復(fù)制,有 3 種方式:

1. 配 置 文 件 : 在 從 服 務(wù) 器 的 配 置 文 件 中 加 入 : slaveof <masterip>

<masterport>

2. 啟動(dòng)命令: redis-server 啟 動(dòng) 命 令 后 加 入 --slaveof <masterip>

<masterport>

3. 客戶端命令: Redis 服務(wù)器啟動(dòng)后,直接通過(guò)客戶端執(zhí)行命令:slaveof

<masterip>

<masterport>,則該 Redis 實(shí)例成為從節(jié)點(diǎn)。

通過(guò) info replication 命令可以看到復(fù)制的一些信息主從復(fù)制原理主從復(fù)制過(guò)程大體可以分為 3 個(gè)階段:連接建立階段(即準(zhǔn)備階段)、數(shù)據(jù)同步階段、命令傳播階段。在從節(jié)點(diǎn)執(zhí)行 slaveof 命令后,復(fù)制過(guò)程便開(kāi)始運(yùn)作,下面圖示大概可以看到,從圖中可以看出復(fù)制過(guò)程大致分為 6 個(gè)過(guò)程

主從配置之后的日志記錄也可以看出這個(gè)流程

1)保存主節(jié)點(diǎn)(master)信息。執(zhí)行 slaveof 后 Redis 會(huì)打印如下日志:

2)從節(jié)點(diǎn)(slave)內(nèi)部通過(guò)每秒運(yùn)行的定時(shí)任務(wù)維護(hù)復(fù)制相關(guān)邏輯,當(dāng)定時(shí)任務(wù)發(fā)現(xiàn)存在新的主節(jié)點(diǎn)后,會(huì)嘗試與該節(jié)點(diǎn)建立網(wǎng)絡(luò)連接

從節(jié)點(diǎn)與主節(jié)點(diǎn)建立網(wǎng)絡(luò)連接

從節(jié)點(diǎn)會(huì)建立一個(gè) socket 套接字,從節(jié)點(diǎn)建立了一個(gè)端口為 51234 的套接字,專門(mén)用于接受主節(jié)點(diǎn)發(fā)送的復(fù)制命令。從節(jié)點(diǎn)連接成功后打印如下日志:

如果從節(jié)點(diǎn)無(wú)法建立連接,定時(shí)任務(wù)會(huì)無(wú)限重試直到連接成功或者執(zhí)行 slaveof no one 取消復(fù)制關(guān)于連接失敗,可以在從節(jié)點(diǎn)執(zhí)行 info replication 查看master_link_down_since_seconds 指標(biāo),它會(huì)記錄與主節(jié)點(diǎn)連接失敗的系統(tǒng)時(shí)間。從節(jié)點(diǎn)連接主節(jié)點(diǎn)失敗時(shí)也會(huì)每秒打印如下日志,方便發(fā)現(xiàn)問(wèn)題:

# Error condition on socketforSYNC: {socket_error_reason}

3)發(fā)送 ping 命令。

連接建立成功后從節(jié)點(diǎn)發(fā)送 ping 請(qǐng)求進(jìn)行首次通信,ping 請(qǐng)求主要目的如下:

  • 檢測(cè)主從之間網(wǎng)絡(luò)套接字是否可用。
  • 檢測(cè)主節(jié)點(diǎn)當(dāng)前是否可接受處理命令。

如果發(fā)送 ping 命令后,從節(jié)點(diǎn)沒(méi)有收到主節(jié)點(diǎn)的 pong 回復(fù)或者超時(shí),比如網(wǎng)絡(luò)超時(shí)或者主節(jié)點(diǎn)正在阻塞無(wú)法響應(yīng)命令,從節(jié)點(diǎn)會(huì)斷開(kāi)復(fù)制連接,下次定時(shí)任務(wù)會(huì)發(fā)起重連

從節(jié)點(diǎn)發(fā)送的 ping 命令成功返回,Redis 打印如下日志,并繼續(xù)后續(xù)復(fù)制流程:

4)權(quán)限驗(yàn)證。如果主節(jié)點(diǎn)設(shè)置了 requirepass 參數(shù),則需要密碼驗(yàn)證,從節(jié)點(diǎn)必須配置 masterauth 參數(shù)保證與主節(jié)點(diǎn)相同的密碼才能通過(guò)驗(yàn)證;如果驗(yàn)證失敗復(fù)制將終止,從節(jié)點(diǎn)重新發(fā)起復(fù)制流程。

5)同步數(shù)據(jù)集。主從復(fù)制連接正常通信后,對(duì)于首次建立復(fù)制的場(chǎng)景,主節(jié)點(diǎn)會(huì)把持有的數(shù)據(jù)全部發(fā)送給從節(jié)點(diǎn),這部分操作是耗時(shí)最長(zhǎng)的步驟。

6)命令持續(xù)復(fù)制。當(dāng)主節(jié)點(diǎn)把當(dāng)前的數(shù)據(jù)同步給從節(jié)點(diǎn)后,便完成了復(fù)制的建立流程。接下來(lái)主節(jié)點(diǎn)會(huì)持續(xù)地把寫(xiě)命令發(fā)送給從節(jié)點(diǎn),保證主從數(shù)據(jù)一致性。

以上就是淺談Redis主從復(fù)制以及主從復(fù)制原理的詳細(xì)內(nèi)容,更多關(guān)于Redis主從復(fù)制以及主從復(fù)制原理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • redis復(fù)制有可能碰到的問(wèn)題匯總

    redis復(fù)制有可能碰到的問(wèn)題匯總

    這篇文章主要介紹了redis復(fù)制有可能碰到的問(wèn)題匯總,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • Redis如何實(shí)現(xiàn)分布式鎖

    Redis如何實(shí)現(xiàn)分布式鎖

    這篇文章主要介紹了Redis如何實(shí)現(xiàn)分布式鎖問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Redis做數(shù)據(jù)持久化的解決方案及底層原理

    Redis做數(shù)據(jù)持久化的解決方案及底層原理

    Redis有兩種方式來(lái)實(shí)現(xiàn)數(shù)據(jù)的持久化,分別是RDB(Redis Database)和AOF(Append Only File),今天通過(guò)本文給大家聊一聊Redis做數(shù)據(jù)持久化的解決方案及底層原理,感興趣的朋友一起看看吧
    2021-07-07
  • 銀河麒麟V10sp1服務(wù)器系統(tǒng)安裝redis不能使用的快速解決辦法

    銀河麒麟V10sp1服務(wù)器系統(tǒng)安裝redis不能使用的快速解決辦法

    這篇文章主要介紹了銀河麒麟V10sp1服務(wù)器系統(tǒng)安裝redis不能使用的快速解決辦法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • redis實(shí)現(xiàn)計(jì)數(shù)器-防止刷單方法介紹

    redis實(shí)現(xiàn)計(jì)數(shù)器-防止刷單方法介紹

    本文主要向大家介紹了redis實(shí)現(xiàn)計(jì)數(shù)器防止刷單的方法和有關(guān)代碼,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Redis+Lua腳本實(shí)現(xiàn)計(jì)數(shù)器接口防刷功能(升級(jí)版)

    Redis+Lua腳本實(shí)現(xiàn)計(jì)數(shù)器接口防刷功能(升級(jí)版)

    這篇文章主要介紹了Redis+Lua腳本實(shí)現(xiàn)計(jì)數(shù)器接口防刷功能,使用腳本使得set命令和expire命令一同達(dá)到Redis被執(zhí)行且不會(huì)被干擾,在很大程度上保證了原子操作,對(duì)Redis實(shí)現(xiàn)計(jì)數(shù)器接口防刷功能感興趣的朋友一起看看吧
    2022-02-02
  • Redis報(bào)錯(cuò):無(wú)法連接Redis服務(wù)的解決方法

    Redis報(bào)錯(cuò):無(wú)法連接Redis服務(wù)的解決方法

    在Linux系統(tǒng)上運(yùn)行Redis服務(wù)時(shí),有時(shí)會(huì)遇到“無(wú)法連接Redis服務(wù)”的報(bào)錯(cuò),本文就詳細(xì)的介紹一下解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • 詳解Redis中地理位置功能Geospatial的應(yīng)用

    詳解Redis中地理位置功能Geospatial的應(yīng)用

    Geospatial?Indexes?是?Redis?提供的一種數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)和查詢地理位置信息,這篇文章就來(lái)和大家詳細(xì)講講Geospatial的具體應(yīng)用吧
    2023-06-06
  • Redisson實(shí)現(xiàn)分布式鎖、鎖續(xù)約的案例

    Redisson實(shí)現(xiàn)分布式鎖、鎖續(xù)約的案例

    這篇文章主要介紹了Redisson如何實(shí)現(xiàn)分布式鎖、鎖續(xù)約,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Redis集群增加節(jié)點(diǎn)與刪除節(jié)點(diǎn)的方法詳解

    Redis集群增加節(jié)點(diǎn)與刪除節(jié)點(diǎn)的方法詳解

    這篇文章主要給大家介紹了關(guān)于Redis集群增加節(jié)點(diǎn)與刪除節(jié)點(diǎn)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09

最新評(píng)論