redis主從復(fù)制

1、什么是主從復(fù)制

???? Redis持久化保證了即使redis服務(wù)重啟也不會(huì)丟失數(shù)據(jù),因?yàn)閞edis服務(wù)重啟后會(huì)將硬盤上持久化的數(shù)據(jù)恢復(fù)到內(nèi)存中,但是當(dāng)redis服務(wù)器的硬盤損壞了可能會(huì)導(dǎo)致數(shù)據(jù)丟失,如果通過redis的主從復(fù)制機(jī)制就可以避免這種單點(diǎn)故障???

說明:

??? 1、主redis中的數(shù)據(jù)有兩個(gè)副本(redis1 和redis2) 即使一臺(tái)redis服務(wù)器宕機(jī)其他兩臺(tái)redis服務(wù)器也可以繼續(xù)提供服務(wù)

?? 2、主redis中的數(shù)據(jù)和從redis上的數(shù)據(jù)保持實(shí)時(shí)同步,當(dāng)主redis寫入數(shù)據(jù)時(shí)通過主從復(fù)制機(jī)制會(huì)復(fù)制到兩個(gè)從redis服務(wù)上。只有一個(gè)主redis,可以有多個(gè)從redis。主從復(fù)制不會(huì)阻塞master,在同步數(shù)據(jù)時(shí),master 可以繼續(xù)處理client 請(qǐng)求。一個(gè)redis可以即是主又是從

2、主從配置

?? 主redis配置(無(wú)需特殊配置)

?? 從redis配置(修改從redis服務(wù)器上的redis.conf文件,添加slaveof? 主redis的IP和端口)

3、復(fù)制過程

? 3.1、完整復(fù)制

?????? 在redis2.8版本之前主從復(fù)制過程如下

??

????? 1、Slave服務(wù)啟動(dòng),slave會(huì)建立和master的鏈接,發(fā)送sync命令

?????? 2、master啟動(dòng)一個(gè)后臺(tái)進(jìn)程將數(shù)據(jù)庫(kù)快照保存到RDB文件中

???????? 注意:此時(shí)如果生成RDB文件過程中存在寫數(shù)據(jù)操作會(huì)導(dǎo)致RDB文件和當(dāng)前主redis數(shù)據(jù)不一致,所以此時(shí)master?主進(jìn)程會(huì)開始收集寫命令并緩存起來(lái)。

????? 3、master就發(fā)送RDB文件給Slave

???? 4、slave將文件保存到磁盤上,然后加載到內(nèi)存恢復(fù)

???? 5、master把緩存的命令發(fā)給slave

????????  注意:后續(xù)master?收到的寫命令都會(huì)通過開始建立的連接發(fā)送給slave。

  ????? 當(dāng)master?和slave?的連接斷開時(shí)slave?可以自動(dòng)重新建立連接。如果master?同時(shí)收到多個(gè)slave?發(fā)來(lái)的同步連接命令,只會(huì)啟動(dòng)一個(gè)進(jìn)程來(lái)寫數(shù)據(jù)庫(kù)鏡像,然后發(fā)送給所有slave。

? 完整復(fù)制的問題:

  在redis2.8之前從redis每次同步都會(huì)從主redis中復(fù)制全部的數(shù)據(jù),如果從redis是新創(chuàng)建的從主redis中復(fù)制全部的數(shù)據(jù)這是沒有問題的,但是,如果當(dāng)從redis停止運(yùn)行,再啟動(dòng)時(shí)可能只有少部分?jǐn)?shù)據(jù)和主redis不同步,此時(shí)啟動(dòng)redis仍然會(huì)從主redis復(fù)制全部數(shù)據(jù),這樣的性能肯定沒有只復(fù)制那一小部分不同步的數(shù)據(jù)高。

3.2、部分復(fù)制

?

部分復(fù)制說明:

  從機(jī)連接主機(jī)后,會(huì)主動(dòng)發(fā)起 PSYNC(部分同步)命令,從機(jī)會(huì)提供 master的runid(機(jī)器標(biāo)識(shí),隨機(jī)生成的一個(gè)串) 和 offset(數(shù)據(jù)偏移量,如果offset主從不一致則說明數(shù)據(jù)不同步),主機(jī)驗(yàn)證 runid 和 offset 是否有效, runid 相當(dāng)于主機(jī)身份驗(yàn)證碼,用來(lái)驗(yàn)證從機(jī)上一次連接的主機(jī),如果runid驗(yàn)證未通過則,則進(jìn)行全同步,如果驗(yàn)證通過則說明曾經(jīng)同步過,根據(jù)offset同步部分?jǐn)?shù)據(jù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 淺談Redis主從復(fù)制 2013.09.27 11:27:00 來(lái)源: 京東 作者:張成遠(yuǎn) ( 0 條評(píng)論 )...
    epime閱讀 638評(píng)論 0 2
  • 寫在前面 在分布式環(huán)境中,數(shù)據(jù)副本 (Replica) 和復(fù)制 (Replication) 作為提升系統(tǒng)可用性和讀...
    YoungChen__閱讀 1,973評(píng)論 2 1
  • 本篇就一下方面展開分析 如何使用主從復(fù)制? 主從復(fù)制的原理(重點(diǎn)是全量復(fù)制和部分復(fù)制、以及心跳機(jī)制) 實(shí)際應(yīng)用中需...
    lucode閱讀 1,059評(píng)論 0 5
  • 單機(jī)有什么問題? 單機(jī)即在一臺(tái)機(jī)器上部署一個(gè)redis節(jié)點(diǎn),主要會(huì)存在以下問題: 1. 機(jī)器故障 如果發(fā)生機(jī)器故障...
    若兮緣閱讀 6,387評(píng)論 0 20
  • 概述 主從復(fù)制,是指將一臺(tái)Redis服務(wù)器的數(shù)據(jù),復(fù)制到其他的Redis服務(wù)器。前者稱為主節(jié)點(diǎn)(master),后...
    Lin_Shao閱讀 352評(píng)論 0 0

友情鏈接更多精彩內(nèi)容