redis的主從復(fù)制

  1. 成為從服務(wù)器的命令: SLAVEOF

復(fù)制功能分為 同步 + 命令傳播

同步:將從服務(wù)器的狀態(tài)更新到主服務(wù)器的狀態(tài)(只在建立連接的時候)
命令傳播:同步完成之后辆布,主服務(wù)器接收到命令,導(dǎo)致的主從雙方不一致的情況茶鉴,通過命令的傳播來維持主從的一致性

同步功能的實現(xiàn)

  1. SYNC命令(舊版本的復(fù)制功能)=完整的重同步
  2. PSYNC命令(新版本的復(fù)制功能)=完整重同步+部分重同步
舊版的SYNC操作
  1. 從服務(wù)器發(fā)送SYNC命令
  2. 主服務(wù)器收到SYNC命令后锋玲,執(zhí)行BGSAVE命令,生成RDB文件(這個RDB文件僅記錄到執(zhí)行BGSAVE命令時的數(shù)據(jù)庫狀態(tài))蛤铜,并且創(chuàng)建一個緩存區(qū)將從現(xiàn)在開始的寫命令寫進來
  3. 從服務(wù)器加載RDB文件嫩絮,恢復(fù)到主服務(wù)器開始BGSAVE時的狀態(tài)
  4. 主服務(wù)器將緩沖區(qū)的命令發(fā)送給從服務(wù)器,保證生成RDB文件時的寫命令也能被完整執(zhí)行

舊版SYNC的缺點:只有單純的完整重同步導(dǎo)致斷開連接后重連上來的從服務(wù)器也必須要讓主服務(wù)器重新生成RDB文件围肥。
1.生成RDB文件影響性能
2. 傳輸RDB文件增加網(wǎng)絡(luò)負(fù)擔(dān)

所以在新版本的PSYNC命令中增加了部分重同步的操作

新版的PSYNC

從服務(wù)器斷開連接后重新連接的主服務(wù)器如果還是原來的那臺剿干,并且中間兩者相差的命令查的不多,可以僅對中間相差的命令做部分的重同步

  1. 主從服務(wù)器各自維護一個偏移量offset
  2. 主服務(wù)器每次向從服務(wù)器復(fù)制N個字節(jié)的數(shù)據(jù)時穆刻,就將自己的offset增加N
  3. 從服務(wù)器接收到N個字節(jié)的數(shù)據(jù)時置尔,就將自己的offset增加N
  4. 通過這兩個offset就可以知道主從服務(wù)器之間相差的偏差了

PSYNC的復(fù)制積壓緩存區(qū):主服務(wù)器維護一個先進先出(FIFO)的固定長度的隊列(默認(rèn)1MB),主服務(wù)器在復(fù)制給從服務(wù)器的時候,也會往這個隊列里面存放數(shù)據(jù)氢伟。其中每一個字節(jié)都有對應(yīng)的偏移量offset(和主從服務(wù)器維護的offset一個概念)

  1. 當(dāng)PSYNC命令時榜轿,發(fā)現(xiàn)主從服務(wù)器有偏差,并且從服務(wù)器當(dāng)前的offset還在這個復(fù)制積壓緩存區(qū)的話朵锣,就可以使用部分重同步

PSYNC命令 PYSNC <runid> <offset>
runid:本從服務(wù)器上次同步的主服務(wù)id,用來比較是不是斷開前連接的是本主服務(wù)器谬盐,如果不是,直接完整重同步
offset:從服務(wù)器當(dāng)前的offset,用來判斷是否使用部分重同步

復(fù)制的實現(xiàn)步驟

  1. 設(shè)置需要同步的主服務(wù)器
    SLAVEOF ip port
  2. 建立socket
  3. 發(fā)送PING命令確認(rèn)連接是否正常
  4. 身份驗證
  5. 發(fā)送端口命令 --告訴主服務(wù)器自己的監(jiān)聽端口(不知道啥作用)
  6. 同步 PSYNC
  7. 命令傳播
  8. 心跳檢測
    1. 檢查網(wǎng)絡(luò)連接狀態(tài)
    2. 檢測命令丟失(傳遞offset)
    3. 輔助實現(xiàn) min-slaves (還不知道怎么實現(xiàn))
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末诚些,一起剝皮案震驚了整個濱河市飞傀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诬烹,老刑警劉巖砸烦,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異绞吁,居然都是意外死亡幢痘,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門家破,熙熙樓的掌柜王于貴愁眉苦臉地迎上來颜说,“玉大人,你說我怎么就攤上這事员舵∧匝兀” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵马僻,是天一觀的道長。 經(jīng)常有香客問我注服,道長韭邓,這世上最難降的妖魔是什么措近? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮女淑,結(jié)果婚禮上瞭郑,老公的妹妹穿的比我還像新娘。我一直安慰自己鸭你,他們只是感情好屈张,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著袱巨,像睡著了一般阁谆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上愉老,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天场绿,我揣著相機與錄音,去河邊找鬼嫉入。 笑死焰盗,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的咒林。 我是一名探鬼主播熬拒,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼垫竞!你這毒婦竟也來了澎粟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤件甥,失蹤者是張志新(化名)和其女友劉穎捌议,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體引有,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡瓣颅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了譬正。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宫补。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖曾我,靈堂內(nèi)的尸體忽然破棺而出粉怕,到底是詐尸還是另有隱情,我是刑警寧澤抒巢,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布贫贝,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏稚晚。R本人自食惡果不足惜崇堵,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望客燕。 院中可真熱鬧鸳劳,春花似錦、人聲如沸也搓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽傍妒。三九已至幔摸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拍顷,已是汗流浹背抚太。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留昔案,地道東北人尿贫。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像踏揣,于是被迫代替她去往敵國和親庆亡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 本篇就一下方面展開分析 如何使用主從復(fù)制捞稿? 主從復(fù)制的原理(重點是全量復(fù)制和部分復(fù)制又谋、以及心跳機制) 實際應(yīng)用中需...
    lucode閱讀 990評論 0 5
  • 通過這篇文章你會知道如下: 如何配置主從關(guān)系?如何斷開主從關(guān)系娱局?如何將從節(jié)點變成主節(jié)點彰亥? 主從復(fù)制的拓?fù)浣Y(jié)構(gòu)以及相...
    打傘的Fish閱讀 432評論 0 1
  • 什么是Redis的主從復(fù)制 主從復(fù)制,是指將一臺Redis服務(wù)器的數(shù)據(jù)衰齐,復(fù)制到其他的Redis服務(wù)器任斋。前者稱為主節(jié)...
    莫小鵬閱讀 559評論 0 1
  • 1、Units單位 配置大小單位,開頭定義了一些基本的度量單位卓研,只支持bytes趴俘,不支持bit 對大小寫不敏感 2...
    MPPC閱讀 65,188評論 0 15
  • 本文主要介紹Redis集群中主從服務(wù)器復(fù)制功能的實現(xiàn)。 在Redis中,用戶可以通過執(zhí)行SLAVEOF命令或設(shè)置s...
    wenmingxing閱讀 970評論 0 5