kudu tablet 之元數據丟失問題


在生產環境遇到了kudu以下報錯:

Check failed: _s.ok() Bad status: Incomplete: Could not init Tablet Manager: Unable to load consensus metadata for tablet 21ba3db23237444681
d90dd04330f6ce: Could not read header for proto container file /data01/kudu/fs_ wal . dir/tablet/consensus-meta/21ba3db23237444681 d90dd0433
0f6ce: File size not large enough to be valid: Proto container file /data01 /kudu/fs_ wal. dir/tablet/consensus-meta/21ba3db23237444681 d90d
d04330f6ce: Tried to read 16 bytes at offset 0 but file size is only 0 bytes

對此進行了分析研究定位到是kudu的consensus metadata 缺失;

可以發現此元數據文件已經發生了丟失,我們將consensus-meta目錄進行了備份並重新創建新的consensus-meta目錄賦予其原始的目錄權限;然后重啟kudu-tablet;發現此時kudu已經恢復了正常,並且已經開時進行數據同步。

kudu本身是具有分布式管理功能,當一個節點發生故障,會將數據自動遷移到其他節點上,所以此處我們將kudu的元數據目錄遷移重新創建,啟動后會有數據重新從其他節點同步過來。

 

 

tablet存在的主要指標是tablet-meta目錄中tablet的超級塊文件的存在。如果該文件不存在,我們沒有指向tablet數據塊的指針,因此我們認為tablet處於 DOES_NOT_EXIST狀態。除了超級塊之外,啟動tablet所需的文件是一致性元數據文件(在consensus-meta下),預寫日志(在wals下)和數據塊(在data下)。當然,自動恢復的tablet server級文件(如instance)也是必須的。

tablet刪除

為了刪除tablet,我們必須永久保留Raft元數據以避免一致性失憶症。我們還會臨時備份(隔離)數據,以便以后進行調試。最初,我們將提供一些工具,以便在不再需要時手動刪除隔離文件及其關聯的數據塊。

要求

  • 保存一致性元數據,例如當前任期,投票歷史記錄和上次日志條目。這是為了避免選擇過時的節點作為leader,並強迫過時的leader下台。
  • 邏輯刪除tablet(可能使用超級塊中的標志),因此我們知道要查找上面保存的共識元數據。
  • 隔離舊數據.

實現

我們可以使用以下步驟安全地實現tablet刪除:

    1. 關機正在運行的tablet
    2. 創建隔離目錄(QDIR)。
    3. 將當前的超級塊復制到QDIR。
    4. 將SuperBlock標記為DELETED(因此我們總是在此步驟后回滾刪除操作); 將日志中的最后一個OpId存儲到SuperBlock
      PB中的一個字段中(如果我們希望能夠在刪除后不再擁有我們的WAL文件時在選舉中投票,我們需要知道我們日志中的最后一個OpId);將路徑存儲到QDIR中的SuperBlock;最后將SuperBlock保存並fsync到tablet元數據目錄中。現在tablet被視為已刪除。
    5. 將一致性元數據文件復制到QDIR。
    6. 將WAL目錄移動到QDIR。這應該是原子的,因為此時我們不對WAL進行條帶化。

其他故障恢復

具有一致性元數據的磁盤故障是災難性故障

如果我們丟失了具有元數據或WAL的磁盤,並且需要復制新的副本以進行恢復,那么可能無法安全地執行此操作,這是因為我們不可避一致性失憶。在這種情況下,tablet server必須采用新的UUID並完全清除其所有數據和狀態:

  1. 檢測壞磁盤
  2. 關閉/崩潰
  3. 管理員將替換壞磁盤
  4. 擦除機器上的所有數據
  5. 為tablet server重新分配新的UUID

這一預防措施可確保過時的tablet server無法讓失憶的服務器自動恢復新tablet,選出過時的服務器leader,並創建並行一致性組。
有可能對此進行優化,並避免在只有一個磁盤發生故障時必須對整個盒子進行核對。也許我們可以依賴RAID來獲得共識元數據和WAL,或者我們可以嘗試將tablet備份到特定磁盤上,或者做一些其他聰明的事情。然而,這些選項並不是很好,這個問題非常棘手。

參考鏈接:https://blog.csdn.net/qqqq0199181/article/details/94441573


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM