一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

3天內(nèi)不再提示

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

電子工程師 ? 來源:lp ? 2019-03-12 15:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

概述

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

面臨問題

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

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

解決辦法

要實現(xiàn)分布式數(shù)據(jù)庫的更大的存儲容量和承受高并發(fā)訪問量,我們會將原來集中式數(shù)據(jù)庫的數(shù)據(jù)分別存儲到其他多個網(wǎng)絡節(jié)點上。

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

主從復制

什么是主從復制

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

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

主從復制的作用

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

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

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

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

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

主從復制啟用

從節(jié)點開啟主從復制,有3種方式:

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

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

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

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

主從復制原理

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

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

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

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

執(zhí)行 slaveof 后 Redis 會打印如下日志:

2、從節(jié)點與主節(jié)點建立網(wǎng)絡連接

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

從節(jié)點與主節(jié)點建立網(wǎng)絡連接。

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

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

關于連接失敗,可以在從節(jié)點執(zhí)行 info replication 查看 master_link_down_since_seconds 指標,它會記錄與主節(jié)點連接失敗的系統(tǒng)時間。從節(jié)點連接主節(jié)點失敗時也會每秒打印如下日志,方便發(fā)現(xiàn)問題:

#ErrorconditiononsocketforSYNC:{socket_error_reason}

3、發(fā)送 ping 命令

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

檢測主從之間網(wǎng)絡套接字是否可用。

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

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

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

4、權限驗證

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

5、同步數(shù)據(jù)集

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

6、命令持續(xù)復制

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

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

    關注

    2

    文章

    1613

    瀏覽量

    64011
  • 數(shù)據(jù)庫

    關注

    7

    文章

    3926

    瀏覽量

    66198
  • Redis
    +關注

    關注

    0

    文章

    386

    瀏覽量

    11442

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

文章出處:【微信號:DBDevs,微信公眾號:數(shù)據(jù)分析與開發(fā)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Redis主從復制的作用和步驟

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

    mysql的主從復制

    mysql 主從復制
    發(fā)表于 04-28 14:30

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

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

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

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

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

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

    談談Redis怎樣配置實現(xiàn)主從復制

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

    MySQL主從復制原理詳解

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

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

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

    聊聊RocketMQ的主從復制

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

    什么是Redis主從復制

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

    mysql主從復制三種模式

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

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

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

    mysql主從復制的原理

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

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

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

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

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