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

詳解Redis主從復制實踐

 更新時間:2021年05月19日 11:24:13   作者:華為云開發(fā)者社區(qū)  
本文將演示主從復制如何配置、實現以及實現原理,Redis主從復制三大策略,全量復制、部分復制和立即復制。

復制簡介

Redis 作為一門非關系型數據庫,其復制功能和關系型數據庫(MySQL)來說,功能其實都是差不多,無外乎就是實現的原理不同。Redis 的復制功能也是相對于其他的內存性數據庫(memcached)所具備特有的功能。

Redis 復制功能主要的作用,是集群、分片功能實現的基礎;同時也是 Redis 實現高可用的一種策略,例如解決單機并發(fā)問題、數據安全性等等問題。

服務介紹

在本文環(huán)境演示中,有一臺主機,啟動了兩個 Redis 示例。

實現方式

Redis 復制實現方式分為下面三種方式:

1. 服務啟動時配置

該方式通過在啟動 Redis 服務時,通過命令行參數,進行啟動主從復制功能。該方式的弊端是不能實現配置持久化,當服務停掉之后,啟動服務時,需要添加相同的命令參數。

1.1 master 服務器事先在 redis.confg 增加 requirepass 項。

requirepass 6379

1.2 啟動從服務器。

redis-server --port 6380 --replicaof 192.168.2.102 6379

2. 命令行配置

該方式通過使用 redis-cli 進入操作行界面,進行配置。該方式的弊端是不能實現配置持久化,當服務停掉之后,啟動服務需要執(zhí)行同樣的命令。

2.1 master 服務器執(zhí)行。

127.0.0.1:6379> config set requirepass 6379
OK

2.2 從服務器執(zhí)行。

127.0.0.1:6380> replicaof 192.168.2.102 6379
OK
127.0.0.1:6380> config set masterauth 6379
OK

3. 配置文件配置

該方式是通過 redis.conf 配置文件進行設置,能夠實現配置的持久化,是一種推薦使用的方式。

3.1 配置主服務器,redis.config。

requirepass 6379

3.2 配置從服務器,redis.config。

masterauth 6379
replicaof 192.168.2.102 6379

4.配置說明

1.masterauth:設置 redis.confi 連接密碼,如果設置了該值。其他客戶端在連接該服務器時,需要添加密碼才可以訪問。

2.requirepass:設置主服務器的連接密碼,和 1 中 masterauth 一致。

3.replicaof:從服務器連接到服務器的 IP 地址+端口號。

效果測試

1.主服務器添加數據

2.從服務器獲取數據

實現原理

// uml圖

@startuml

從服務器->主服務器: 1.保存配置

從服務器->主服務器: 2.建立socket連接

從服務器->主服務器: 3.發(fā)送ping命令

從服務器->主服務器: 4.權限驗證

從服務器->主服務器: 5.同步數據

從服務器->主服務器: 6.持續(xù)復制數據

@enduml

主從復制主要實現的一個流程如上圖:

1.第一步,從服務器保存主服務器的配置信息,保存之后待從服務器內部的定時器執(zhí)行時,就會觸發(fā)復制的流程。

2.第二步,從服務器首先會與主服務器建立一個socket套字節(jié)連接,用作主從通信使用。后面主服務器發(fā)送數據給從服務器也是通過該套字節(jié)進行。

3.第三步,socket套字節(jié)連接成功之后,接著發(fā)送鑒權ping命令,正常的情況下,主服務器會發(fā)送對應的響應。ping命令的作用是為了,保證socket套字節(jié)是否可以用,同時也是為了驗證主服務器是否接受操作命令。

4.第四步,接著就是鑒權驗證,判斷從節(jié)點配置的主節(jié)點連接密碼是否正確。

5.第五步,鑒權成功之后,就可以開始復制數據了。主服務器此時會進行全量復制,將主服務的數據全部發(fā)給從服務器,從服務器保存主服務器發(fā)送的數據。

6.接下來就是持續(xù)復制操作。主服務器會進行異步復制,一邊將寫的數據寫入自身,同時會將新的寫命令發(fā)送給從服務器。

實現策略

Redis主從復制主要分為三種弄策略方式,不同的策略方式都是針對不同的場景下進行使用。三種場景方式分別如下:

1.全量復制

全量復制用在主從復制剛建立時或者從切主服務器時,從服務器沒有主服務器的數據,主服務器會將自身的數據通過rdb文件方式發(fā)送給從服務器,從服務器會清空自身數據,接著將主服務器發(fā)送的數據加載到自身中。

// uml圖

@startuml

從服務器->主服務器: 1.psync ? -1

主服務器->從服務器: 2.fullsync runid offset

從服務器: 3.保存 runid offset

主服務器: 4.執(zhí)行bgsave生成rdb

主服務器->從服務器: 5.發(fā)送rdb

從服務器: 6.清空自身老數據

從服務器: 7.加載主服務器數據

@enduml

2.部分復制

部分復制用在一些異常情況下,例如主從延遲、從服務宕機之后重新啟動接收主服務器發(fā)送的部分數據。

部分復制的實現主要依賴于復制緩存區(qū)、主服務的runid、主從服務器各自的復制偏移量(offset)。

復制緩存區(qū):主服務在接收寫命令時,會將命令寫入緩存區(qū),以便從服務器在異常情況下,減少數據的丟失。當從服務器正常連接之后,主服務器會將緩存區(qū)內的數據發(fā)送給從服務器。這里的緩存區(qū)是一個長隊列。

主服務器runid:主服務器會在每次服務啟動之后,會生成一個唯一的ID,作為自身標識。從服務器會將該標識保存起來,發(fā)送部分復制命令時,會使用該runid。

psync runid offset

主從復制各自偏移量:主從服務在建立復制之后,都會有自身的偏移量。從節(jié)點會每秒鐘發(fā)送自身復制的偏移量給從節(jié)點,主節(jié)點在發(fā)送寫命令之后,從節(jié)點也會增加自身的復制偏移量。主節(jié)點在每次進行了寫命令之后,也會增加自身的偏移量。這里的偏移量是通過命令的字節(jié)長度累加計算。

3.異步復制

異步復制是針對主從建立復制關系之后,主從服務器持續(xù)保持復制關系。

場景問題

1.數據安全

// 從服務器只讀
replica-read-only yes
// 從服務器連接密碼
masterauth

2.數據延遲

默認的情況下主節(jié)點存在新數據不會立即發(fā)送給從服務器,如果開啟,則會理解發(fā)送給從服務器。默認的時間拒絕與Linux內核。

// 復制延遲
repl-disable-tcp-nodelay yes

3.主從節(jié)點連接狀態(tài)

主從節(jié)點一旦建立連接之后,會定時模擬成對方的客戶端,檢測對方的服務狀態(tài)。主節(jié)點可以通過設置repl-ping-replica-period配置參數進行設置。默認的頻率是10s。

從節(jié)點咋執(zhí)行replconf ack {offsetid}時,也會將自身的復制偏移量發(fā)送給主服務器,主服務根據偏移量進行判斷數據延遲。存在數據延遲就會從復制積壓緩沖區(qū)的數據匯中,將對應的數據補發(fā)給從節(jié)點。

以上就是詳解Redis主從復制實踐的詳細內容,更多關于Redis主從復制實踐的資料請關注腳本之家其它相關文章!

相關文章

  • Redis中常見的幾種集群部署方案

    Redis中常見的幾種集群部署方案

    本文主要介紹了Redis中常見的幾種集群部署方案,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Redis實現分布式鎖詳解

    Redis實現分布式鎖詳解

    這篇文章主要介紹了redis如何實現分布式鎖,文章中有詳細的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2023-04-04
  • linux安裝配置及使用redis

    linux安裝配置及使用redis

    本文主要跟大家講解的是在Linux環(huán)境下,Redis的安裝與部署,非常的簡單實用,有需要的小伙伴可以參考下
    2018-04-04
  • Redis高性能的原因及說明

    Redis高性能的原因及說明

    這篇文章主要介紹了Redis高性能的原因及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 聊一聊redis奇葩數據類型與集群知識

    聊一聊redis奇葩數據類型與集群知識

    現在越來越多的項目都會利用到redis,多實例redis服務比單實例要復雜的多,這里面涉及到定位、容錯、擴容等技術問題,下面這篇文章主要給大家介紹了關于redis奇葩數據類型與集群知識的相關資料,需要的朋友可以參考下
    2022-01-01
  • Win10配置redis服務實現過程詳解

    Win10配置redis服務實現過程詳解

    這篇文章主要介紹了Win10配置redis服務實現過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • 淺談redis緩存在項目中的使用

    淺談redis緩存在項目中的使用

    最近由于項目需要,在系統(tǒng)緩存服務部分上用到了redis,本文就淺談下在redis緩存在項目中的使用,感興趣的小伙伴們可以參考一下
    2021-05-05
  • 在Redis中如何保存時間序列數據詳解

    在Redis中如何保存時間序列數據詳解

    與發(fā)生時間相關的一組數據,就是時間序列數據,這些數據的特點是沒有嚴格的關系模型,記錄的信息可以表示成鍵和值的關系,這篇文章主要給大家介紹了關于在Redis中如何保存時間序列數據的相關資料,需要的朋友可以參考下
    2021-10-10
  • Redis緩存穿透出現原因及解決方案

    Redis緩存穿透出現原因及解決方案

    這篇文章主要介紹了Redis緩存穿透出現原因及解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • 高并發(fā)場景分析之redis+lua防重校驗

    高并發(fā)場景分析之redis+lua防重校驗

    這篇文章主要介紹了高并發(fā)場景分析之redis+lua防重校驗,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07

最新評論