bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

當(dāng)Kafka分區(qū)不可用且副本被損壞時(shí)如何盡量減少數(shù)據(jù)的丟失

本篇文章為大家展示了當(dāng)Kafka分區(qū)不可用且 副本被損壞時(shí)如何盡量減少數(shù)據(jù)的丟失,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)秀峰,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18982081108

下面專門對(duì)分區(qū)不可用進(jìn)行故障重現(xiàn),并給出我的一些騷操作來(lái)盡量減少數(shù)據(jù)的丟失。

故障重現(xiàn)

下面我用一個(gè)例子重現(xiàn)現(xiàn)分區(qū)不可用且 leader 副本被損壞的例子:

  1. 使用 unclean.leader.election.enable = false 參數(shù)啟動(dòng) broker0;

  2. 使用 unclean.leader.election.enable = false 參數(shù)啟動(dòng) broker1;

  3. 創(chuàng)建 topic-1,partition=1,replica-factor=2;

  4. 將消息寫入 topic-1;

  5. 此時(shí),兩個(gè) broker 上的副本都處于 ISR 中,broker0 的副本為 leader 副本;

  6. 停止 broker1,此時(shí) topic-1 的 leader 依然時(shí) broker0 的副本,而 broker1 的副本從 ISR 中剔除;

  7. 停止 broker0,并且刪除 broker0 上的日志數(shù)據(jù)

  8. 重啟 broker1,topic-1 嘗試連接 leader 副本,但此時(shí) broker0 已經(jīng)停止運(yùn)行,此時(shí)分區(qū)處于不可用狀態(tài),無(wú)法寫入消息;

  9. 恢復(fù) broker0,broker0 上的副本恢復(fù) leader 職位,此時(shí) broker1 嘗試加入 ISR,但此時(shí)由于 leader 的數(shù)據(jù)被清除,即偏移量為 0,此時(shí) broker1 的副本需要截?cái)嗳罩?,保持偏移量不大?leader 副本,此時(shí)分區(qū)的數(shù)據(jù)全部丟失。

我的建議

在遇到分區(qū)不可用時(shí),是否可以提供一個(gè)選項(xiàng),讓用戶可以手動(dòng)設(shè)置分區(qū)內(nèi)任意一個(gè)副本作為 leader?

因?yàn)榧阂坏┰O(shè)置了 unclean.leader.election.enable = false,就無(wú)法選舉 ISR 以外的副本作為 leader,在極端情況下僅剩 leader 副本還在 ISR 中,此時(shí) leader 所在的 broker 宕機(jī)了,那如果此時(shí) broker 數(shù)據(jù)發(fā)生損壞這么辦?在這種情況下,能不能讓用戶自己選擇 leader 副本呢?盡管這么做也是會(huì)有數(shù)據(jù)丟失,但相比整個(gè)分區(qū)的數(shù)據(jù)都丟失而言,情況還是會(huì)好很多的。

我的騷操作

首先你得有一個(gè)不可用的分區(qū)(并且該分區(qū) leader 副本數(shù)據(jù)已損失),如果是測(cè)試,可以以上故障重現(xiàn) 1-8 步驟實(shí)現(xiàn)一個(gè)不可用的分區(qū)(需要增加一個(gè) broker):

當(dāng)Kafka分區(qū)不可用且 副本被損壞時(shí)如何盡量減少數(shù)據(jù)的丟失

此時(shí) leader 副本在 broker0,但已經(jīng)掛了,且分區(qū)不可用,此時(shí) broker2 的副本由于掉出 ISR ,不可選為 leader,且 leader 副本已損壞清除,如果此時(shí)重啟 broker0,follower 副本會(huì)進(jìn)行日志截?cái)?,將?huì)丟失該分區(qū)所有數(shù)據(jù)。

經(jīng)過一系列的測(cè)試與實(shí)驗(yàn),我總結(jié)出了以下騷操作,可以強(qiáng)行把 broker2 的副本選為 leader,盡量減少數(shù)據(jù)丟失:

1、使用 kafka-reassign-partitions.sh 腳本對(duì)該主題進(jìn)行分區(qū)重分配,當(dāng)然你也可以使用 kafka-manager 控制臺(tái)對(duì)該主題進(jìn)行分區(qū)重分配,重分配之后如下:

當(dāng)Kafka分區(qū)不可用且 副本被損壞時(shí)如何盡量減少數(shù)據(jù)的丟失

此時(shí) preferred leader 已經(jīng)改成 broker2 所在的副本了,但此時(shí)的 leader 依然還是 broker0 的副本。需要注意的是,分區(qū)重分配之后的 preferred leader 一定要之前那個(gè)踢出 ISR 的副本,而不是分區(qū)重分配新生成的副本。因?yàn)樾律傻母北酒屏繛?0,如果自動(dòng)重分配不滿足,那么需要編寫 json 文件,手動(dòng)更改分配策略。

2、進(jìn)入 zk,查看分區(qū)狀態(tài)并修改它的內(nèi)容:

當(dāng)Kafka分區(qū)不可用且 副本被損壞時(shí)如何盡量減少數(shù)據(jù)的丟失

修改 node 內(nèi)容,強(qiáng)行將 leader 改成 2(與重分配之后的 preferred leader 一樣),并且將 leader_epoch 加 1 處理,同時(shí) ISR 列表改成 leader,改完如下:

當(dāng)Kafka分區(qū)不可用且 副本被損壞時(shí)如何盡量減少數(shù)據(jù)的丟失

此時(shí),kafka-manager 控制臺(tái)會(huì)顯示成這樣:

當(dāng)Kafka分區(qū)不可用且 副本被損壞時(shí)如何盡量減少數(shù)據(jù)的丟失

但此時(shí)依然不生效,記住這時(shí)需要重啟 broker 0。

3、重啟 broker0,發(fā)現(xiàn)分區(qū)的 lastOffset 已經(jīng)變成了 broker2 的副本的 lastOffset:

當(dāng)Kafka分區(qū)不可用且 副本被損壞時(shí)如何盡量減少數(shù)據(jù)的丟失

成功挽回了 46502 條消息數(shù)據(jù),盡管依然丟失了 76053 - 46502 = 29551 條消息數(shù)據(jù),但相比全部丟失相對(duì)好吧!

上述內(nèi)容就是當(dāng)Kafka分區(qū)不可用且 副本被損壞時(shí)如何盡量減少數(shù)據(jù)的丟失,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)頁(yè)名稱:當(dāng)Kafka分區(qū)不可用且副本被損壞時(shí)如何盡量減少數(shù)據(jù)的丟失
鏈接分享:http://vcdvsql.cn/article42/iigeec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google品牌網(wǎng)站設(shè)計(jì)網(wǎng)站內(nèi)鏈、網(wǎng)站導(dǎo)航、軟件開發(fā)、網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(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)

成都網(wǎng)站建設(shè)公司