精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Redis主從復制以及主從復制原理

電子工程師 ? 來源:lp ? 2019-03-12 15:24 ? 次閱讀

Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的API。從2010年3月15日起,Redis的開發工作由VMware主持。從2013年5月開始,Redis的開發由Pivotal贊助。

概述

在現有企業中80%公司大部分使用的是redis單機服務,在實際的場景當中單一節點的redis容易面臨風險。

面臨問題

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

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

解決辦法

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

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

主從復制

什么是主從復制

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

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

主從復制的作用

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

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

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

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

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

主從復制啟用

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

1、配置文件:在從服務器的配置文件中加入 slaveof

2、啟動命令:redis-server啟動命令后加入 --slaveof

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

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

主從復制原理

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

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

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

1、保存主節點(master)信息

執行 slaveof 后 Redis 會打印如下日志:

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

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

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

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

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

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

#ErrorconditiononsocketforSYNC:{socket_error_reason}

3、發送 ping 命令

連接建立成功后從節點發送 ping 請求進行首次通信, ping 請求主要目的如下:

檢測主從之間網絡套接字是否可用。

檢測主節點當前是否可接受處理命令。

如果發送 ping 命令后,從節點沒有收到主節點的 pong 回復或者超時,比如網絡超時或者主節點正在阻塞無法響應命令,從節點會斷開復制連接,下次定時任務會發起重連。

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

4、權限驗證

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

5、同步數據集

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

6、命令持續復制

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • API
    API
    +關注

    關注

    2

    文章

    1486

    瀏覽量

    61820
  • 數據庫
    +關注

    關注

    7

    文章

    3766

    瀏覽量

    64277
  • Redis
    +關注

    關注

    0

    文章

    371

    瀏覽量

    10846

原文標題:Redis 主從復制以及主從復制原理

文章出處:【微信號:DBDevs,微信公眾號:數據分析與開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Redis主從復制的作用和步驟

    Redis青銅修煉手冊(五) --- Redis主從復制
    發表于 06-27 07:20

    mysql的主從復制

    mysql 主從復制
    發表于 04-28 14:30

    基于mycat的Mysql主從復制讀寫分離全攻略

    基于mycat的Mysql主從復制讀寫分離全攻略
    發表于 09-08 10:10 ?4次下載
    基于mycat的Mysql<b class='flag-5'>主從復制</b>讀寫分離全攻略

    詳解Redis主從復制和哨兵機制

    Redis主從復制主要有兩個角色,主機(master)對外提供讀寫功能,從機(slave)對外只提供讀功能,主機定期把數據同步到從機上保證數據一致性。
    的頭像 發表于 05-03 18:14 ?1934次閱讀
    詳解<b class='flag-5'>Redis</b><b class='flag-5'>主從復制</b>和哨兵機制

    利用MySQL進行一主一從的主從復制

    本文講述了如何使用MyBatisPlus+ShardingSphereJDBC進行讀寫分離,以及利用MySQL進行一主一從的主從復制
    的頭像 發表于 07-28 09:47 ?1012次閱讀

    談談Redis怎樣配置實現主從復制

    之前總結過redis的持久化機制:深度剖析Redis持久化機制,持久化機制主要解決redis數據單機備份問題;redis的高可用需要考慮數據的多機備份,多機備份通過
    發表于 01-31 11:31 ?641次閱讀

    MySQL主從復制原理詳解

    簡單講,MySQL主從復制就是數據寫入一臺服務器(主服務器)后,同時還會額外寫入另外的服務器(從服務器)。也就是說數據會寫多份,這樣做的目的主要有兩個:
    的頭像 發表于 02-06 10:27 ?1067次閱讀

    一個操作把MySQL主從復制整崩了

    最近公司某項目上反饋mysql主從復制失敗,被運維部門記了一次大過,影響到了項目的驗收推進,那么究竟是什么原因導致的呢?而主從復制的原理又是什么呢?本文就對排查分析的過程做一個記錄。
    的頭像 發表于 05-11 11:14 ?524次閱讀
    一個操作把MySQL<b class='flag-5'>主從復制</b>整崩了

    聊聊RocketMQ的主從復制

    RocketMQ 主從復制是 RocketMQ 高可用機制之一,數據可以從主節點復制到一個或多個從節點。
    的頭像 發表于 07-04 09:42 ?585次閱讀
    聊聊RocketMQ的<b class='flag-5'>主從復制</b>

    什么是Redis主從復制

    Redis主從復制 來自靈魂的拷問:什么是Redis主從復制? 簡言之就是: 主對外從對內,主可寫從不可寫 主掛了,從不可為主 看下面的圖加深下理解: 對,你沒看錯,
    的頭像 發表于 10-09 15:09 ?399次閱讀
    什么是<b class='flag-5'>Redis</b><b class='flag-5'>主從復制</b>

    mysql主從復制三種模式

    MySQL主從復制是一種常見的數據同步方式,它可以實現將一個數據庫的更改同步到其他多個數據庫的功能。主從復制可以提高數據庫的可用性和性能,以及提供故障恢復和數據備份的支持。在MySQL中,有三種
    的頭像 發表于 11-16 14:04 ?1448次閱讀

    mysql主從復制主要有幾種模式

    MySQL主從復制是MySQL數據庫中常用的一種數據復制方式,用于實現數據的備份、負載均衡、故障恢復等目的。主從復制主要有以下幾種模式: 異步復制 異步
    的頭像 發表于 11-16 14:15 ?1136次閱讀

    mysql主從復制的原理

    MySQL主從復制是一種數據庫復制技術,它允許將一個MySQL數據庫的更新操作自動復制到其他MySQL數據庫上的過程。主要通過MySQL的binlog(二進制日志)和relay log(中繼日志)來
    的頭像 發表于 11-16 14:18 ?463次閱讀

    mysql主從復制 混合類型的復制

    使用行級復制和語句級復制。本文將詳細介紹MySQL主從復制的概念、原理、配置步驟以及優缺點,并重點討論混合類型復制的實現和應用。希望通過本文
    的頭像 發表于 11-16 14:20 ?530次閱讀

    配置MySQL主從復制和讀寫分離

    配置MySQL主從復制和讀寫分離
    的頭像 發表于 10-23 11:44 ?334次閱讀
    配置MySQL<b class='flag-5'>主從復制</b>和讀寫分離