使用IST重新加入节点(5.7.20)
IST不是SST用于節(jié)點(diǎn)重新加入嗎?我們有解決方案!
鑒于上述痛點(diǎn),我們將介紹 gcache.freeze_purge_at_seqno Percona XtraDB Cluster 5.7.20。
這可以控制gcache的清除,從而在節(jié)點(diǎn)重新加入時(shí)保留更多數(shù)據(jù)以便于IST。
Galera集群中的所有事務(wù)都被分配了唯一的全局序列號(hào)(seqno)。使用此seqno跟蹤事件(例如wsrep_last_applied,wsrep_last_committed,wsrep_replicated,wsrep_local_cached_downto等等)。 wsrep_local_cached_downto表示gcache被清除的序列號(hào)。假設(shè)wsrep_local_cached_downto = N,則gcache具有來(lái)自[N,wsrep_replicated]的數(shù)據(jù)并且已從[1,N)中清除數(shù)據(jù)。
gcache.freeze_purge_at_seqno 有三個(gè)值:
-1(默認(rèn)值):無(wú)凍結(jié),清除操作正常。
x(在gcache中應(yīng)該是有效的seqno):凍結(jié)寫(xiě)入集> = x。選擇x的最佳方法是使用wsrep_last_applied值作為計(jì)劃關(guān)閉的節(jié)點(diǎn)的指示符。 (wsrep_applied * 0.09。保留額外的10%來(lái)欺騙IST的安全間隙啟發(fā)式算法。)
now:凍結(jié)寫(xiě)入集的清除> =當(dāng)前在gcache中的最小seqno。即時(shí)凍結(jié)gcache-purge。 (如果跟蹤x(上面)很困難,只需使用“now”就可以了。)
在集群的現(xiàn)有節(jié)點(diǎn)上設(shè)置它(它將繼續(xù)作為集群的一部分,并可充當(dāng)潛在的DONOR)。
此節(jié)點(diǎn)繼續(xù)保留寫(xiě)集,從而允許重新啟動(dòng)節(jié)點(diǎn)使用IST重新加入。
(您可以在重新啟動(dòng)所述重新加入節(jié)點(diǎn)時(shí)通過(guò)wsrep_sst_donor將所述節(jié)點(diǎn)作為首選DONOR提供。)
一旦節(jié)點(diǎn)重新加入,請(qǐng)記住將其設(shè)置回-1。
這避免了在所述時(shí)間線之外占用捐贈(zèng)者的空間。
在下一個(gè)清除周期中,所有舊的保留寫(xiě)入集也被釋放(將空間回收回原始空間)。
?
?
IST donor選擇
show status like 'wsrep_local_cached_downto';
假設(shè)我們有3個(gè)節(jié)點(diǎn)集群:N1,N2,N3。
首先,所有3個(gè)節(jié)點(diǎn)都是同步的(wsrep_last_committed對(duì)于所有3個(gè)節(jié)點(diǎn)都是相同的,假設(shè)為100)。
N3是維護(hù)計(jì)劃并被取消。
同時(shí),N1和N2處理工作量,從而將它們從100 -> 1100移動(dòng)。
N1和N2也清除了gcache。假設(shè)N1和N2的 wsrep_local_cached_downto 分別為110和90。
現(xiàn)在N3重新啟動(dòng)并發(fā)現(xiàn)集群已從100 -> 1100進(jìn)展,因此它需要來(lái)自(101,1100)的write-sets。
它開(kāi)始尋找潛在的DONOR。
N1可以從(110,1100)服務(wù)數(shù)據(jù),但請(qǐng)求是(101,1100),所以N1不能作為DONOR
N2可以從(90,1100)服務(wù)數(shù)據(jù),并且請(qǐng)求是(101,1100),因此N2可以充當(dāng)DONOR。
Safety gap及其如何影響DONOR的選擇
到現(xiàn)在為止還挺好。但N2能否可靠地充當(dāng)捐贈(zèng)者?雖然N3正在評(píng)估潛在的捐贈(zèng)者,但如果N2清除更多數(shù)據(jù),現(xiàn)在N2上的wsrep_local_cached_downto是105,該怎么辦?為了適應(yīng)這種情況,N3算法增加了安全間隙。
Safety gap =(當(dāng)前群集狀態(tài) - 來(lái)自群集的任何現(xiàn)有節(jié)點(diǎn)的最低可用seqno)* 0.008
因此,N2范圍被認(rèn)為是(90 +(1100-90)* 0.008,1100)=(98,1100)。
現(xiàn)在N2可以作為捐贈(zèng)者嗎?是:(98,1100)<(101,1100)
如果N2已經(jīng)凈化到95然后N3開(kāi)始尋找潛在的捐贈(zèng)者怎么辦?
在這種情況下,N2范圍將是(95 +(1100-95)* 0.008,1100)=(103,1100),從預(yù)期的捐贈(zèng)者清單中排除N2。
?
轉(zhuǎn)載于:https://www.cnblogs.com/kelvin19840813/p/10576436.html
總結(jié)
以上是生活随笔為你收集整理的使用IST重新加入节点(5.7.20)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 知乎推荐页Ranking构建历程和经验分
- 下一篇: 第一次实验报告