麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > Redis > 正文

Redis主從復制的原理介紹(圖文)

2020-03-22 19:16:44
字體:
來源:轉載
供稿:網友
本篇文章給大家帶來的內容是關于Redis主從復制的原理介紹(圖文),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

面臨問題

機器故障。我們部署到一臺 Redis 服務器,當發生機器故障時,需要遷移到另外一臺服務器并且要保證數據是同步的。而數據是最重要的,如果你不在乎,基本上也就不會使用 Redis 了。

容量瓶頸。當我們有需求需要擴容 Redis 內存時,從 16G 的內存升到 64G,單機肯定是滿足不了。當然,你可以重新買個 128G 的新機器。

解決辦法

要實現分布式數據庫的更大的存儲容量和承受高并發訪問量,我們會將原來集中式數據庫的數據分別存儲到其他多個網絡節點上。

Redis 為了解決這個單一節點的問題,也會把數據復制多個副本部署到其他節點上進行復制,實現 Redis的高可用,實現對數據的冗余備份,從而保證數據和服務的高可用。主從復制什么是主從復制

16962389-5c72b52170799_articlex.png

主從復制,是指將一臺Redis服務器的數據,復制到其他的Redis服務器。前者稱為主節點(master),后者稱為從節點(slave),數據的復制是單向的,只能由主節點到從節點。

默認情況下,每臺Redis服務器都是主節點;且一個主節點可以有多個從節點(或沒有從節點),但一個從節點只能有一個主節點。

主從復制的作用

數據冗余:主從復制實現了數據的熱備份,是持久化之外的一種數據冗余方式。

故障恢復:當主節點出現問題時,可以由從節點提供服務,實現快速的故障恢復;實際上是一種服務的冗余。

負載均衡:在主從復制的基礎上,配合讀寫分離,可以由主節點提供寫服務,由從節點提供讀服務(即寫Redis數據時應用連接主節點,讀Redis數據時應用連接從節點),分擔服務器負載;尤其是在寫少讀多的場景下,通過多個從節點分擔讀負載,可以大大提高Redis服務器的并發量。

讀寫分離:可以用于實現讀寫分離,主庫寫、從庫讀,讀寫分離不僅可以提高服務器的負載能力,同時可根據需求的變化,改變從庫的數量;

高可用基石:除了上述作用以外,主從復制還是哨兵和集群能夠實施的基礎,因此說主從復制是Redis高可用的基礎。

主從復制啟用

從節點開啟主從復制,有3種方式:

配置文件: 在從服務器的配置文件中加入:slaveof masterip masterport

啟動命令: redis-server啟動命令后加入 --slaveof masterip masterport

客戶端命令: Redis服務器啟動后,直接通過客戶端執行命令:slaveof masterip
masterport ,則該Redis實例成為從節點。

通過 info replication 命令可以看到復制的一些信息主從復制原理

主從復制過程大體可以分為3個階段:連接建立階段(即準備階段)、數據同步階段、命令傳播階段。

在從節點執行 slaveof 命令后,復制過程便開始運作,下面圖示大概可以看到,
從圖中可以看出復制過程大致分為6個過程

1290613498-5c72b64944189_articlex.png

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

1)保存主節點(master)信息。
執行 slaveof 后 Redis 會打印如下日志:

465513093-5c72b6d637850_articlex.png

2)從節點(slave)內部通過每秒運行的定時任務維護復制相關邏輯,當定時任務發現存在新的主節點后,會嘗試與該節點建立網絡連接

1833636470-5c72b6f565645_articlex.png

從節點與主節點建立網絡連接

從節點會建立一個 socket 套接字,從節點建立了一個端口為51234的套接字,專門用于接受主節點發送的復制命令。從節點連接成功后打印如下日志:

1776640320-5c72b732cdf6e_articlex.png

如果從節點無法建立連接,定時任務會無限重試直到連接成功或者執行 slaveof no one 取消復制

關于連接失敗,可以在從節點執行 info replication 查看 master_link_down_since_seconds 指標,它會記錄與主節點連接失敗的系統時間。從節點連接主節點失敗時也會每秒打印如下日志,方便發現問題:

# Error condition on socket for SYNC: {socket_error_reason}

3)發送 ping 命令。
連接建立成功后從節點發送 ping 請求進行首次通信,ping 請求主要目的如下:
·檢測主從之間網絡套接字是否可用。
·檢測主節點當前是否可接受處理命令。
如果發送 ping 命令后,從節點沒有收到主節點的 pong 回復或者超時,比如網絡超時或者主節點正在阻塞無法響應命令,從節點會斷開復制連接,下次定時任務會發起重連。

3185848172-5c72b793412b6_articlex.png

689898572-5c72b79f90e36_articlex.png

從節點發送的 ping 命令成功返回,Redis 打印如下日志,并繼續后續復制流程:

3618984496-5c72b7b4cba42_articlex.png

4)權限驗證。如果主節點設置了 requirepass 參數,則需要密碼驗證,從節點必須配置 masterauth 參數保證與主節點相同的密碼才能通過驗證;如果驗證失敗復制將終止,從節點重新發起復制流程。

5)同步數據集。主從復制連接正常通信后,對于首次建立復制的場景,主節點會把持有的數據全部發送給從節點,這部分操作是耗時最長的步驟。

6)命令持續復制。當主節點把當前的數據同步給從節點后,便完成了復制的建立流程。接下來主節點會持續地把寫命令發送給從節點,保證主從數據一致性。

以上就是Redis主從復制的原理介紹(圖文)的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 激情久久一区二区 | 91成人午夜性a一级毛片 | 成人精品一区二区 | 国产精品视频一区二区三区综合 | 一级做受毛片免费大片 | va毛片| 少妇色诱麻豆色哟哟 | 性插视频 | 看黄在线| 日本黄色免费播放 | 羞羞羞网站 | 久久免费视频精品 | 亚洲一区成人 | 在线观看免费毛片视频 | 精品无吗乱吗av国产爱色 | 欧美成人性色 | 中韩毛片| 日韩视频一区 | 一级黄色性感片 | 久久久精品福利 | 久久久国产精品成人免费 | xxxxxx打针视频vk | 操毛片 | 欧美色性 | 欧美成人区 | 午夜视频久久 | 久色视频| jizzzzxxxxx| 国产一级免费视频 | 精品一区二区在线观看 | 国产大片全部免费看 | 黄色影院一级片 | 国产亚洲精品综合一区91555 | 国产成人在线观看免费网站 | 国产毛片网 | 中国av免费在线观看 | 精品午夜影院 | 成人福利视频在线观看 | 精品一区二区久久久久久按摩 | 久久久久久久亚洲精品 | 性欧美在线视频 |