91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Redis中的主從復制是什么

發布時間:2021-12-27 10:35:29 來源:億速云 閱讀:180 作者:小新 欄目:關系型數據庫

這篇文章主要為大家展示了“Redis中的主從復制是什么”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Redis中的主從復制是什么”這篇文章吧。

Redis支持主從復制功能,可以通過執行slaveof(Redis5版本以后改成replicaof)或者在配置文件中設置slaveof(Redis5版本以后改成replicaof)來開啟復制功能。

  • 一主兩叢

Redis中的主從復制是什么

  • 一主多從

Redis中的主從復制是什么

主從基本配置

主Redis配置

主Redis配置基本不用修改,重點部分在從Redis配置

從Redis配置

1、復制一份redis.conf文件
2、相關配置修改
# salve的端口號
port 6380 

#把pid進程號寫入pidfile配置的文件
pidfile /var/run/redis_6380.pid 

logfile "6380.log"  

#指定數據存放目錄
dir /usr/local/redis‐5.0.3/data/6380 

#需要注釋掉bind
#bind127.0.0.1(bind綁定的是自己機器網卡的ip,如果有多塊網卡可以配多個ip,代表允許客戶端通過機器的哪些網卡ip去訪問,內網一般可以不配置bind,注釋掉即可)
3、配置主從復制
#從本機master6379的redis實例復制數據,Redis5.0之前使用slaveof
replicaof 192.168.0.60 6379

#配置從節點只讀
replica‐read‐only yes
4、啟動從節點
redis‐server redis.conf
5、連接從節點
redis‐cli ‐p 6380
6、測試在6379實例上寫數據,6380實例是否能及時同步新修改數據
docker run  --name redis-6381 -v /Users/yujiale/docker/redis/conf/redis6381.conf:/etc/redis/redis.conf -v /Users/yujiale/docker/redis/conf/sentinel6381.conf:/etc/redis/sentine.conf -v /Users/yujiale/docker/redis/data6381:/data --network localNetwork --ip 172.172.0.14 -p 16381:6379 -d redis:6.2.6 redis-server /etc/redis/redis.conf --appendonly yes

主從配置的作用

讀寫分離

  • 一主多從,主從同步

  • 主負責寫,從負責讀

  • 提升Redis的性能和吞吐量

  • 主從的數據一致性問題

數據容災

  • 從機是主機的備份

  • 主機宕機,從機可讀不可寫

  • 默認情況下主機宕機后,從機不可為主機利用

  • 哨兵可以實現主從切換,做到高可用

Redis主從工作原理

主從復制之全量復制

只有第一次從Redis連接主Redis時發生的是全量復制,如果是短點續傳可能是全量復制,也可能是部分復制。

  • 流程圖

Redis中的主從復制是什么

Redis中的主從復制是什么

1、與主Redis建立Socker長連接

slaver與master建立socket連接

slaver關聯文件事件處理器

  • 該處理器接收RDB文件(全量復制)、接收Master傳播來的寫命令(增量復制)

Redis中的主從復制是什么

  • 服務器accept從服務器Socket連接后,創建相應的客戶端狀態。相當于從服務器是主服務器的Client端。

Redis中的主從復制是什么

  • 發送ping命令

    • 1、發送“pong” ,說明正常

    • 2、返回錯誤,說明Master不正常

    • 3、timeout,說明網絡超時

    • 1、檢測socket的讀寫狀態

    • 2、檢測Master能否正常處理

    • Slaver向Master發送ping命令

    • Master的響應:

Redis中的主從復制是什么

  • 權限驗證

主從正常連接后,進行權限驗證

主未設置密碼(requirepass=“”),從也不用設置密碼(masterauth=“”)

主設置密碼(requirepass!=""),從需要設置密碼(masterauth=主的requirepass的值)

或者從通過auth命令向主發送密碼

Redis中的主從復制是什么

2、主Redis接收到PSYNC命令

主Redis接收到PSYNC命令后執行bgsave命令會生成最新的rdb快照,

3、主Redis把rdb快照發送給從Redis

主Redis發送rdb快照給從Redis時,master會繼續接收客戶端的請求,它會把這些可能修改數據集的請求緩存在內存中存儲到relp buffer緩存中

  • 同步快照階段:Master創建并發送快照RDB給Slave,Slave載入并解析快照。Master同時將此階段所產生的新的寫命令存儲到緩沖區。

4、從節點接收到rdb快照

從節點接收到rdb快照后清空老數據,并加載rdb文件

5、主Redis發送buffer緩存文件到從Redis

同步寫緩沖階段:Master向Slave同步存儲在緩沖區的寫操作命令。

6、從節點接收buffer緩存文件

從節點接收buffer緩存文件,并加載buffer緩存文件到內存中

7、主Redis通過Socker長連接連續把命令發送到從節點

從Redis接收到主Redis發送過來的命令,執行當前命令

總述

如果你為master配置了一個slave,不管這個slave是否是第一次連接上Master,它都會發送一個PSYNC命令給master請求復制數據。master收到PSYNC命令后,會在后臺進行數據持久化通過bgsave生成最新的rdb快照文件,持久化期間,master會繼續接收客戶端的請求,它會把這些可能修改數據集的請求緩存在內存中。當持久化進行完畢以后,master會把這份rdb文件數據集發送給slave,slave會把接收到的數據進行持久化生成rdb,然后再加載到內存中。然后,master再將之前緩存在內存中的命令發送給slave。當master與slave之間的連接由于某些原因而斷開時,slave能夠自動重連Master,如果master收到了多個slave并發連接請求,它只會進行一次持久化,而不是一個連接一次,然后再把這一份持久化的數據發送給多個并發連接的slave。

主從復制之部分復制

Redis中的主從復制是什么

大體流程跟全量復制差不多,就不過多講解

簡述

當master和slave斷開重連后,一般都會對整份數據進行復制。但從redis2.8版本開始,redis改用可以支持部分數據復制的命令PSYNC去master同步數據,slave與master能夠在網絡連接斷開重連后只進行部分數據復制(斷點續傳)。master會在其內存中創建一個復制數據用的緩存隊列,緩存最近一段時間的數據,master和它所有的slave都維護了復制的數據下標offset和master的進程id,因此,當網絡連接斷開后,slave會請求master繼續進行未完成的復制,從所記錄的數據下標開始。如果master進程id變化了,或者從節點數據下標offset太舊,已經不在master的緩存隊列里了,那么將會進行一次全量數據的復制。主從復制(部分復制,斷點續傳)流程圖:

主從復制之增量同步

  • Redis增量同步主要指Slave完成初始化后開始正常工作時,Master發生的寫操作同步到Slave的過程。

  • 通常情況下,Master每執行一個寫命令就會向Slave發送相同的寫命令,然后Slave接收并執行。

主從復制之心跳檢測

1.檢測主從的連接狀態

檢測主從服務器的網絡連接狀態通過向主服務器發送INFO replication命令,可以列出從服務器列表,可以看出從最后一次向主發送命令距離現在過了多少秒。lag的值應該在0或1之間跳動,如果超過1則說明主從之間的連接有故障。

2.輔助實現min-slaves

Redis可以通過配置防止主服務器在不安全的情況下執行寫命令min-slaves-to-write 3(min-replicas-to-write 3)min-slaves-max-lag 10(min-replicas-max-lag 10)上面的配置表示:從服務器的數量少于3個,或者三個從服務器的延遲(lag)值都大于或等于10秒時,主服務器將拒絕執行寫命令。這里的延遲值就是上面INFOreplication命令的lag值。

3.檢測命令丟失

如果因為網絡故障,主服務器傳播給從服務器的寫命令在半路丟失,那么當從服務器向主服務器發送REPLCONF ACK命令時,主服務器將發覺從服務器當前的復制偏移量少于自己的復制偏移量,然后主服務器就會根據從服務器提交的復制偏移量,在復制積壓緩沖區里面找到從服務器缺少的數據,并將這些數據重新發送給從服務器。(補發)網絡不斷增量同步:網斷了,再次連接時

如何判斷全量復制還是部分復制

Redis中的主從復制是什么

客戶端發送saveof后主節點會判斷是否第一次復制,如果是則進行全量復制,如果不是通過runid offset偏移量進行判斷是否一致,如果一致則進行部分復制,否則進行全量復制。

以上是“Redis中的主從復制是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

和林格尔县| 佛山市| 神农架林区| 广南县| 东乡族自治县| 驻马店市| 商南县| 锦屏县| 图们市| 石狮市| 温宿县| 莒南县| 洛浦县| 怀来县| 南丰县| 余庆县| 凉城县| 长岛县| 湖北省| 修文县| 麻江县| 洪雅县| 香格里拉县| 河北区| 鹿邑县| 驻马店市| 光山县| 广宁县| 荆州市| 铜鼓县| 南漳县| 衡水市| 正宁县| 永寿县| 夏津县| 万荣县| 昭通市| 双鸭山市| 沛县| 罗江县| 综艺|