redis 主從復(fù)制

java_redis 主從復(fù)制

從以下幾個(gè)方面進(jìn)行記錄:

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

2.為什么需要進(jìn)行主從復(fù)制;

3.主從復(fù)制的模式有哪些;

4.主從復(fù)制的工作原理;

\5. 相關(guān)名詞;

6.復(fù)制流程;

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

主從復(fù)制:是指有一臺(tái)redis 做為主節(jié)點(diǎn)(master)局装,配置其他redis 作為該主節(jié)點(diǎn) 的從節(jié)點(diǎn)(slave),主節(jié)點(diǎn)redis 可進(jìn)行讀寫(xiě)劳殖,寫(xiě)操作后將數(shù)據(jù)分發(fā)到從節(jié)點(diǎn)進(jìn)行數(shù)據(jù)同步,從節(jié)點(diǎn)redis 只負(fù)則讀拨脉,從節(jié)點(diǎn)的數(shù)據(jù)從主節(jié)點(diǎn)復(fù)制過(guò)來(lái)哆姻,數(shù)據(jù)的復(fù)制是單向的,只能由主節(jié)點(diǎn)流向從節(jié)點(diǎn),

2.為什么需要進(jìn)行主從復(fù)制=====================================================

背景: 在日常開(kāi)發(fā)中玫膀,經(jīng)常會(huì)用到redis,如果部署的是單節(jié)點(diǎn)redis ,當(dāng)該redis 服務(wù)掛了之后矛缨,大量的請(qǐng)求會(huì)直接打到數(shù)據(jù)庫(kù),造成數(shù)據(jù)庫(kù)壓力過(guò)大,cpu 飆升,嚴(yán)重可能會(huì)導(dǎo)致服務(wù)器掛掉箕昭,這就是一般說(shuō)的單節(jié)點(diǎn)故障灵妨,為了解決這一問(wèn)題,主從復(fù)制模式出現(xiàn)了落竹,主從復(fù)制模式有以下特點(diǎn):

\1. 數(shù)據(jù)冗余泌霍;2.單點(diǎn)故障;3.讀寫(xiě)分離述召;4.負(fù)載均衡朱转;5.高可用

3.主從復(fù)制的模式有哪些=====================================================

復(fù)制的模式有:增量復(fù)制和全量復(fù)制;

全量復(fù)制一般發(fā)生在slave 節(jié)點(diǎn)初始化的時(shí)候积暖,slave 要將master 的數(shù)據(jù)全部復(fù)制一遍藤为;增量復(fù)制發(fā)生在主節(jié)點(diǎn)進(jìn)行寫(xiě)操作之后,主節(jié)點(diǎn)將更新的命令發(fā)生給從節(jié)點(diǎn)進(jìn)行數(shù)據(jù)同步

4.主從復(fù)制的工作原理=====================================================

\1. 當(dāng)從節(jié)點(diǎn)第一次鏈接主節(jié)點(diǎn)時(shí)夺刑,會(huì)發(fā)送一個(gè)psync 命令到主節(jié)點(diǎn)觸發(fā)全量復(fù)制缅疟,主節(jié)點(diǎn)接收到該命令后,會(huì)fork 一個(gè)后臺(tái)進(jìn)程遍愿,該進(jìn)程開(kāi)始生成一個(gè)rdb快照窿吩,同時(shí)將外來(lái)的寫(xiě)命令寫(xiě)入緩沖區(qū),rdb文件生成完之后主節(jié)點(diǎn)將其發(fā)生給從節(jié)點(diǎn)错览,從節(jié)點(diǎn)拿到rdb 先寫(xiě)入磁盤(pán)纫雁,再寫(xiě)入內(nèi)存,接著master 會(huì)將緩沖區(qū)的寫(xiě)命令同步到slave,slave 執(zhí)行寫(xiě)命令開(kāi)始同步數(shù)據(jù)倾哺,如果master 和slave 中間因?yàn)榫W(wǎng)絡(luò)原因斷開(kāi)轧邪,會(huì)自動(dòng)重連,master 會(huì)將復(fù)制缺少的數(shù)據(jù)給slave;

5.相關(guān)名詞==============================================================

runId -----主節(jié)點(diǎn)的運(yùn)行id

redis 在啟動(dòng)時(shí)會(huì)生成的隨機(jī)id,唯一標(biāo)識(shí)該節(jié)點(diǎn)羞海,40長(zhǎng)度的16進(jìn)制字符

offset -----復(fù)制偏移量

指命令的字節(jié)長(zhǎng)度忌愚,比如16000,通過(guò)對(duì)比主從節(jié)點(diǎn)的復(fù)制偏移量却邓,來(lái)判斷主從節(jié)點(diǎn)數(shù)據(jù)是否一致硕糊,增量復(fù)制的時(shí)候用到

replication buffer-----內(nèi)部隊(duì)列緩沖區(qū)

主從節(jié)點(diǎn)連接的緩沖區(qū),主從節(jié)點(diǎn)之間復(fù)制命令的傳輸經(jīng)過(guò)這個(gè)緩沖區(qū)腊徙,每個(gè)主從節(jié)點(diǎn)之間獨(dú)有的简十,當(dāng)主從節(jié)點(diǎn)連接斷開(kāi),這個(gè)緩沖區(qū)會(huì)被刪除

repl_backlog_buffer -----環(huán)形緩沖區(qū)

salve之間共享的緩沖區(qū)撬腾,開(kāi)始執(zhí)行命令之前螟蝙,會(huì)建立這個(gè)緩沖區(qū),這個(gè)緩沖區(qū)記錄了master 接收到的新的命令民傻,和master 的offset,slave 發(fā)送psync 到主節(jié)點(diǎn)之后胰默,主節(jié)點(diǎn)會(huì)發(fā)送新的寫(xiě)命令和offset 到slave,slave 通過(guò)對(duì)比offset 來(lái)判斷自己是否要執(zhí)行寫(xiě)命令進(jìn)行增量復(fù)制

\6. 復(fù)制流程============================================================

1.全量復(fù)制:


步驟:

1.從節(jié)點(diǎn)發(fā)送psync 到主節(jié)點(diǎn)场斑;

2.主節(jié)點(diǎn)接受到psync 命令,fork子進(jìn)程開(kāi)始執(zhí)行bgsave命令生成rdb快照牵署,并使用replication buffer 緩沖區(qū)記錄此后執(zhí)行的所有寫(xiě)命令漏隐;

3.主節(jié)點(diǎn)執(zhí)行完bgsave命令,向所有服務(wù)器發(fā)送rdb快照奴迅,在此期間青责,寫(xiě)命令仍然進(jìn)入replication buffer中;

4.從服務(wù)器收到快照半沽,丟棄舊數(shù)據(jù)爽柒,載入新數(shù)據(jù);

5.主節(jié)點(diǎn)發(fā)送完rdb 快照者填,接著發(fā)送緩沖區(qū)的寫(xiě)命令浩村;

6.從節(jié)點(diǎn)載入新數(shù)據(jù)完成后,接收寫(xiě)命令并執(zhí)行占哟;

增量復(fù)制流程:

1.從redis 2.8開(kāi)始心墅,因網(wǎng)絡(luò)原因主從連接斷開(kāi),再次連接時(shí)可從中斷處復(fù)制榨乎,而不是全量復(fù)制怎燥;

2.主從斷開(kāi)重連之后, 主節(jié)點(diǎn)會(huì)根據(jù)從節(jié)點(diǎn)發(fā)送的runId和offset 來(lái)判斷進(jìn)行全量還是增量復(fù)制蜜暑,判斷邏輯如下:

增量復(fù)制:

如果runId和主節(jié)點(diǎn)的 id相同铐姚,并且主從的offset差距沒(méi)有超過(guò)repl_backlog_buffer緩沖區(qū)的長(zhǎng)度,主節(jié)點(diǎn)就會(huì)復(fù)制offset 之間的repl_backlog_buffer的命令給slave肛捍。

全量復(fù)制:

如果runId 和主節(jié)點(diǎn)的 id 不同或者主從的 offset差距超過(guò)repl_backlog_buffer緩沖區(qū)的長(zhǎng)度隐绵,則進(jìn)行全量復(fù)制。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拙毫,一起剝皮案震驚了整個(gè)濱河市依许,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缀蹄,老刑警劉巖峭跳,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異缺前,居然都是意外死亡蛀醉,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)诡延,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)滞欠,“玉大人,你說(shuō)我怎么就攤上這事肆良∩歌担” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵惹恃,是天一觀的道長(zhǎng)夭谤。 經(jīng)常有香客問(wèn)我,道長(zhǎng)巫糙,這世上最難降的妖魔是什么朗儒? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮参淹,結(jié)果婚禮上醉锄,老公的妹妹穿的比我還像新娘。我一直安慰自己浙值,他們只是感情好恳不,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著开呐,像睡著了一般烟勋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上筐付,一...
    開(kāi)封第一講書(shū)人閱讀 51,754評(píng)論 1 307
  • 那天卵惦,我揣著相機(jī)與錄音,去河邊找鬼瓦戚。 笑死沮尿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的较解。 我是一名探鬼主播畜疾,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼哨坪!你這毒婦竟也來(lái)了庸疾?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤当编,失蹤者是張志新(化名)和其女友劉穎届慈,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體忿偷,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡金顿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鲤桥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片揍拆。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖茶凳,靈堂內(nèi)的尸體忽然破棺而出嫂拴,到底是詐尸還是另有隱情播揪,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布筒狠,位于F島的核電站猪狈,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏辩恼。R本人自食惡果不足惜雇庙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望灶伊。 院中可真熱鬧疆前,春花似錦、人聲如沸聘萨。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)匈挖。三九已至碾牌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間儡循,已是汗流浹背舶吗。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留择膝,地道東北人誓琼。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像肴捉,于是被迫代替她去往敵國(guó)和親腹侣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

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