新的v0.8.4版本中,我們對于診斷工具進行了全面系統化的升級,以提供更加完整和智能化的診斷報告,有助于高效排查 OpenMLDB 集群問題,大幅提升運維效率。
相比于之前的版本,新的診斷工具增添一鍵診斷功能,使用openmldb_tool inspect
就可以一鍵診斷集群的健康狀態。提供的信息包括XX Detail
和Summary & Hint
兩個部分。XX Detail
部分提供集群現狀信息;Summary & Hint
部分總結了重點需要關注的信息點,并且智能提示可能有問題的地方及相應的對策,幫助用戶進行集群修復。 一般情況下,Summary & Hint
部分的信息足夠用戶對集群進行對應的修復;對于更棘手的情況,用戶可參照XX Detail
里的現狀信息進行處理,或者向我們提供報告,我們可以更快速地定位集群問題、進行修復指導。診斷工具的具體詳情可以參見文檔(https://openmldb.ai/docs/zh/main/maintain/diagnose.html)。 接下來我們簡單演示如何使用一鍵診斷功能來查看集群狀態以及如何快速解決常見問題。
報告講解與演示
以OpenMLDB Demo鏡像為例,啟動OpenMLDB集群。一鍵診斷后,用戶可以直接檢查末尾的Summary & Hint
報告總結章,它將總結整個集群的狀態,包括Server是否在線,和Table是否健康。
健康狀態
綠色提示Server均在線和Table均健康,是正常的狀態。
異常狀態
如果某臺Tablet Server掉線了,總結將提示:
Server異常狀態
報告中,我們首先看到“offline servers”,報告提示我們需要先重啟它們。除非該節點是無數據的,其他任何情況,請優先恢復下線server節點,再對表的健康情況進行診斷。
Table異常狀態
我們已經將下線server恢復,再次診斷集群,報告如下圖所示。此時仍存在不健康的表。狀態有兩種:
- 紅色Fatal狀態,說明此時表處于危險狀態,可能會讀寫失敗,需要立即處理。
- 黃色Warn狀態,說明表的主分片都在活動中,讀寫是可以的,但也請及時處理,只是沒有Fatal緊急。
請注意這些表雖然仍然不健康,但它們有一些關聯的后臺OP正在執行。它們是集群自動發起的修復,用戶此時不需要手動修復,需要等待后臺OP完成。一般情況下,集群自動修復完成后,一鍵診斷會顯示集群已健康。
Table特別異常狀態
在實際的運維過程中,可能因為一些意外情況,導致類似下圖的情況。Table處于異常狀態且并沒有后臺OP正在運行,它意味著集群并未觸發自動修復或修復已經失敗。
這時候,就需要用戶手動操作了,根據報告末尾的提示鏈接進行recoverdata。如果recoverdata提示成功,可再次一鍵診斷,確認集群已恢復健康。
詳細報告
對于更棘手的情況,我們可以通過報告中的Detail部分來對當前集群進行分析。
Table Partition Detail
Table Partition Detail部分可以讓我們直觀地了解各個表現在處于什么樣的狀態。每個Partition分片的主從副本位于哪臺Tablet,副本本身是什么狀態,都有清晰的展示。結合Example,我們可以看到,一個分片pX代表其分片id,各個副本在Tablet Server上是元信息丟失,還是信息異常等。
Ops Detail
Ops Detail可以提示我們集群當前的后臺情況,是否自動修復失敗等。我們可以通過最后一個OP的時間和最后10個非完成OP的詳細狀態,來判斷集群是未觸發自動修復,還是正在修復,或者是修復已失敗,或者是部分表修復失敗。
提供報告
用戶如果通過以上流程,仍無法修復集群,請向我們提供Detail部分的信息,我們可以更快速地定位集群問題、進行修復指導。
相關閱讀
- OpenMLDB 官網: https://openmldb.ai/
- OpenMLDB GitHub 主頁: https://github.com/4paradigm/OpenMLDB
- OpenMLDB 文檔: https://openmldb.ai/docs/zh/
- OpenMLDB 微信交流群