欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Redis主從復(fù)制相關(guān)配置和常見(jiàn)問(wèn)題的解決方法

本篇內(nèi)容主要講解“redis主從復(fù)制相關(guān)配置和常見(jiàn)問(wèn)題的解決方法”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Redis主從復(fù)制相關(guān)配置和常見(jiàn)問(wèn)題的解決方法”吧!

創(chuàng)新互聯(lián)公司主營(yíng)東陽(yáng)網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都APP應(yīng)用開(kāi)發(fā),東陽(yáng)h5成都微信小程序搭建,東陽(yáng)網(wǎng)站營(yíng)銷推廣歡迎東陽(yáng)等地區(qū)企業(yè)咨詢

1. 主從復(fù)制相關(guān)配置

主從復(fù)制的配置都是在從節(jié)點(diǎn)配置,所以以下幾個(gè)參數(shù)都是在從節(jié)點(diǎn)配置

1、slaveof  <master ip> <master port>

slave實(shí)例需要配置該項(xiàng),指向master的ip和port

2、masterauth <master-password>

如果master實(shí)例啟用了密碼,則該配置項(xiàng)需要填master的啟動(dòng)密碼,若master未啟用密碼,該配置需要注釋掉

3、slave-server-stale-data

指定slave與master連接中斷時(shí)的動(dòng)作,默認(rèn)為yes,表明slave會(huì)繼續(xù)應(yīng)答來(lái)自client的請(qǐng)求,但這些數(shù)據(jù)可能已經(jīng)過(guò)期(因?yàn)檫B接中斷導(dǎo)致無(wú)法從master同步)。若配置為no,則slave除正常應(yīng)答info和slaveof命令外,其余來(lái)自客戶端請(qǐng)求的命令會(huì)均得到“sync with master in prigress”的應(yīng)答,直到該slave與master的連接重建成功或改slave被提升為master

4、slave-read-only

指定slave是否只讀,默認(rèn)為yes。若配置為no,這表示slave是可寫的,但是寫的內(nèi)容在主從同步后會(huì)被刪除

5、repl-disable-tcp-nodelay

指向slave同步數(shù)據(jù)時(shí),是否禁用scoket的NO_DELAY選項(xiàng),若配置為yes則禁用NO_DELAY,則tcp協(xié)議棧會(huì)合并小包統(tǒng)一發(fā)送,這樣可以減少主從節(jié)點(diǎn)間的包數(shù)量并節(jié)省寬帶,但會(huì)增加數(shù)據(jù)同步到slave的時(shí)間。若配置為no,表明啟用NO_DELAY,則tcp協(xié)議棧不會(huì)延遲小包的發(fā)送時(shí)機(jī),這樣數(shù)據(jù)同步的延時(shí)會(huì)減少,但需要更大的寬帶,通常情況下,應(yīng)該配置為no以降低同步延時(shí),但在主從節(jié)點(diǎn)間網(wǎng)絡(luò)負(fù)載已經(jīng)很高的情況下, 可以配置為yes

6、slave-priority

指定slave的優(yōu)先級(jí),在不只1個(gè)salve存在的部署環(huán)境下,當(dāng)master宕機(jī)時(shí),redis sentinel會(huì)將priority值最小的slave提升為master,需要注意的是,若改配置項(xiàng)為0,則對(duì)應(yīng)的slave永遠(yuǎn)不會(huì)被redis sentinel自動(dòng)提升為master

2. 主從復(fù)制進(jìn)階常見(jiàn)問(wèn)題解決

2.1 讀寫分離

讀流量分?jǐn)偟綇墓?jié)點(diǎn),這是個(gè)非常好的特性,如果一個(gè)業(yè)務(wù)只需要讀數(shù)據(jù),那么我們只需要連接一臺(tái)slave從機(jī)讀數(shù)據(jù)

Redis主從復(fù)制相關(guān)配置和常見(jiàn)問(wèn)題的解決方法Redis主從復(fù)制相關(guān)配置和常見(jiàn)問(wèn)題的解決方法

雖然讀寫有優(yōu)勢(shì),能夠讓讀這部分分配給各個(gè)slave從機(jī),如果不夠,直接加slave機(jī)器就好了,但是也會(huì)出現(xiàn)以下問(wèn)題

1、復(fù)制數(shù)據(jù)延遲

可能會(huì)出現(xiàn)slave延遲當(dāng)值讀寫不一致等問(wèn)題,當(dāng)然你也可以使用監(jiān)控偏移量offset,如果offset超出范圍就切換到master上,邏輯切換,而具體延遲多少,可以通過(guò)info replication的offset指標(biāo)進(jìn)行排查

對(duì)于無(wú)法容忍大量延遲場(chǎng)景,可以編寫外部監(jiān)控程序(consul)監(jiān)聽(tīng)主節(jié)點(diǎn)的復(fù)制偏移量,當(dāng)延遲較大時(shí)觸發(fā)報(bào)警或者通知客戶端避免讀取延遲過(guò)高的從節(jié)點(diǎn)

同時(shí)從節(jié)點(diǎn)的slave-serve-stale-data參數(shù)也與此有關(guān),它控制這種情況下從節(jié)點(diǎn)的表現(xiàn):如果為yes(默認(rèn)值),則從節(jié)點(diǎn)仍能夠響應(yīng)客戶端的命令;如果為no,則從節(jié)點(diǎn)只能響應(yīng)info、slaveof等少數(shù)命令。該參數(shù)的設(shè)置與應(yīng)用對(duì)數(shù)據(jù)一致性的要求有關(guān);如果對(duì)數(shù)據(jù)一致性要求很高,則應(yīng)設(shè)置為no。

2、只有n個(gè)從節(jié)點(diǎn)鏈接的時(shí)候才允許寫入

redis2.8以后,可以設(shè)置從節(jié)點(diǎn)在有N臺(tái)從節(jié)點(diǎn)鏈接的時(shí)候可以寫入請(qǐng)求,然后因?yàn)閞edis使用的是異步復(fù)制,所以沒(méi)有辦法保證從節(jié)點(diǎn)確實(shí)收到的給定寫入請(qǐng)求,所以存在一個(gè)窗口期的數(shù)據(jù)丟失的可能性。

下來(lái)解釋一下這個(gè)特性是如何工作的

從節(jié)點(diǎn)每秒鐘都會(huì)ping主節(jié)點(diǎn),告知它所有的復(fù)制流工作了

主節(jié)點(diǎn)會(huì)記住每個(gè)從節(jié)點(diǎn)收到的最新的ping

用戶可以給主節(jié)點(diǎn)配置一個(gè)在等于從節(jié)點(diǎn)的數(shù)量的最低值和不超過(guò)最高值之間的延遲

如果至少有N個(gè)從節(jié)點(diǎn),如果少于延遲M秒,則寫入就將被接受

你可能覺(jué)得經(jīng)最大努力保證數(shù)據(jù)安全機(jī)制,雖然數(shù)據(jù)一致性無(wú)法保證,但是至少只是幾秒的時(shí)間窗口內(nèi)丟失數(shù)據(jù),通常情況下范圍數(shù)據(jù)丟失可比無(wú)范圍數(shù)據(jù)丟失好多了

如果條件不滿足,主節(jié)點(diǎn)將會(huì)返回一個(gè)錯(cuò)誤,并且寫入請(qǐng)求將不接受

主機(jī)配置兩個(gè)參數(shù):

最小的從主機(jī)連接數(shù)量

min-slaves-to-write <number of slaves>

最大的延遲時(shí)間

min-slaves-max-lag <number of seconds>

舉個(gè)例子,如果我們向主服務(wù)器提供以下設(shè)置:

min-slaves-to-write 3min-slaves-max-lag 10

那么在從服務(wù)器的數(shù)量少于3個(gè),或者三個(gè)從服務(wù)器的延遲(lag)值都大于或等于10秒時(shí),主服務(wù)器將拒絕執(zhí)行寫命令

3、如何選擇,要不要讀寫分離

沒(méi)有最合適的方案,只有最合適的場(chǎng)景,讀寫分離需要業(yè)務(wù)可以容忍一定程度的數(shù)據(jù)不一致,適合讀多寫少的業(yè)務(wù)場(chǎng)景,讀寫分離,是為了什么,主要是因?yàn)橐⒁恢鞫鄰牡募軜?gòu),才能橫向任意擴(kuò)展slave node去支撐更大的讀吞吐量

2.2從節(jié)點(diǎn)故障

對(duì)于從節(jié)點(diǎn)的故障問(wèn)題,需要在客戶端維護(hù)一個(gè)可用從節(jié)點(diǎn)可用列表,當(dāng)從節(jié)點(diǎn)故障時(shí),立刻切換到其他從節(jié)點(diǎn)或主節(jié)點(diǎn),之后redis Cluster 時(shí)候可以解決這個(gè)問(wèn)題

2.2.1配置不一致

主機(jī)和從機(jī)不同,經(jīng)常導(dǎo)致主機(jī)和從機(jī)的配置不一致,并帶來(lái)的問(wèn)題

數(shù)據(jù)丟失:主機(jī)和從機(jī)有時(shí)候會(huì)發(fā)生配置不一致的情況,例如maxmemory不一致,如果主機(jī)配置maxmemory為8g,從機(jī)slave設(shè)置為4g,這個(gè)時(shí)候是可以用的,而且還不會(huì)報(bào)錯(cuò)。但是如果要做高可用,讓從節(jié)點(diǎn)變成主節(jié)點(diǎn)的時(shí)候,就會(huì)發(fā)現(xiàn)數(shù)據(jù)已經(jīng)丟失了,而且無(wú)法挽回

2.2.2規(guī)避全量復(fù)制

全量復(fù)制指的是當(dāng)slave從機(jī)斷掉并重啟后,runid產(chǎn)生變化而導(dǎo)致需要在master主機(jī)里拷貝全部數(shù)據(jù)。這種拷貝全部數(shù)據(jù)的過(guò)程非常耗資源

全量復(fù)制是不可避免的,例如第一次的全量復(fù)制是不可避免的,這是我們需要選擇小主節(jié)點(diǎn)且maxmemory值不要過(guò)大,這樣就比較快。同時(shí)選擇在低峰值的時(shí)候做全量復(fù)制

2.2.3造成全量復(fù)制的原因

1、主從節(jié)點(diǎn)運(yùn)行的runid不匹配。主節(jié)點(diǎn)如果重啟,runid將會(huì)發(fā)生變化。如果從節(jié)點(diǎn)監(jiān)控到runid不是同一個(gè),它就會(huì)認(rèn)為你的節(jié)點(diǎn)不安全。當(dāng)發(fā)生故障轉(zhuǎn)移時(shí)候,如果主節(jié)點(diǎn)發(fā)生故障,那么從機(jī)就會(huì)變成主節(jié)點(diǎn)。后邊會(huì)說(shuō)到哨兵和集群

2、復(fù)制緩沖區(qū)空間不足,比如默認(rèn)1M,可以部分復(fù)制。但如果緩沖區(qū)不夠大的話,首先需要網(wǎng)絡(luò)中斷,部分復(fù)制就無(wú)法滿足。其次需要增大復(fù)制緩沖區(qū)配置(relbacklogsize)對(duì)網(wǎng)絡(luò)的緩沖增強(qiáng)

2.2.4解決全量復(fù)制

在一些場(chǎng)景下,可能希望對(duì)主節(jié)點(diǎn)進(jìn)行重啟,例如主節(jié)點(diǎn)內(nèi)存碎片率過(guò)高,或者希望調(diào)整一些只能在啟動(dòng)時(shí)調(diào)整的參數(shù)。如果使用普通的手段重啟主節(jié)點(diǎn),會(huì)使得runid發(fā)生變化,可能導(dǎo)致不必要的全量復(fù)制

為了解決這個(gè)問(wèn)題,Redis提供了debug reload的重啟方式:重啟后,主節(jié)點(diǎn)的runid和offset都不受影響,避免了全量復(fù)制。

例如:當(dāng)一個(gè)主機(jī)下面掛了很多個(gè)slave從機(jī)的時(shí)候,主機(jī)master掛了,這時(shí)master主機(jī)重啟后,因?yàn)閞unid發(fā)生了變化,所有的slave從機(jī)都要做一次全量復(fù)制。這將引起單節(jié)點(diǎn)和單機(jī)器的復(fù)制風(fēng)暴,開(kāi)銷會(huì)非常大。

Redis主從復(fù)制相關(guān)配置和常見(jiàn)問(wèn)題的解決方法Redis主從復(fù)制相關(guān)配置和常見(jiàn)問(wèn)題的解決方法

解決:

可以采用樹(shù)狀結(jié)構(gòu)降低多個(gè)從節(jié)點(diǎn)對(duì)主節(jié)點(diǎn)的消耗

從節(jié)點(diǎn)采用樹(shù)狀樹(shù)非常有用,網(wǎng)絡(luò)開(kāi)銷交給位于中間層的從節(jié)點(diǎn),而不必消耗頂層的主節(jié)點(diǎn)。但是這種樹(shù)狀結(jié)構(gòu)也帶來(lái)了運(yùn)維的復(fù)雜性,增加了手動(dòng)和自動(dòng)處理故障轉(zhuǎn)移的難度

2.2.5 單機(jī)風(fēng)暴

由于 Redis 的單線程架構(gòu),通常單臺(tái)機(jī)器會(huì)部署多個(gè) Redis 實(shí)例。當(dāng)一臺(tái)機(jī)器(machine)上同時(shí)部署多個(gè)主節(jié)點(diǎn)(master)時(shí),如果每個(gè) master 主機(jī)只有一臺(tái) slave 從機(jī),那么當(dāng)機(jī)器宕機(jī)以后,會(huì)產(chǎn)生大量全量復(fù)制。這種情況是非常危險(xiǎn)的情況,帶寬?cǎi)R上會(huì)被占用,會(huì)導(dǎo)致不可用。

Redis主從復(fù)制相關(guān)配置和常見(jiàn)問(wèn)題的解決方法Redis主從復(fù)制相關(guān)配置和常見(jiàn)問(wèn)題的解決方法

解決:

應(yīng)該把主節(jié)點(diǎn)盡量分散在多臺(tái)機(jī)器上,避免在單臺(tái)機(jī)器上部署過(guò)多的主節(jié)點(diǎn)。

當(dāng)主節(jié)點(diǎn)所在機(jī)器故障后提供故障轉(zhuǎn)移機(jī)制,避免機(jī)器恢復(fù)后進(jìn)行密集的全量復(fù)制

到此,相信大家對(duì)“Redis主從復(fù)制相關(guān)配置和常見(jiàn)問(wèn)題的解決方法”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

網(wǎng)站標(biāo)題:Redis主從復(fù)制相關(guān)配置和常見(jiàn)問(wèn)題的解決方法
分享URL:http://www.chinadenli.net/article4/pgcdoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷標(biāo)簽優(yōu)化網(wǎng)站設(shè)計(jì)商城網(wǎng)站網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作