某天,PongHat 公司 DBA 小王同學收到了業務側的反饋:”小王啊,我們資料庫查詢現在突然變得很慢,業務已經緊急停了,能不能看下是什麼情況?“
小王同學身經百戰、見得多了,熟練地輸入了 TiDB Grafana 地址,點進 TiDB 監控皮膚,看到 SQL 執行時間確實突然變得很長,如下所示:
小王根據經驗開始排查。他首先從監控上點開 TiKV 節點 CPU 佔用的監控——CPU 分佈很均勻,但各個 TiKV 的 Coprocessor 佔用率都很高。
小王知識水平很高,立刻意識到,可能是因為有大查詢!於是他 SSH 到各個 TiDB 機器上,進入日誌目錄檢視 slow log,確實看到了一波可疑的 SQL,它們都執行了很長的時間。
小王挑了幾個 SQL 嘗試復現,但都未能成功,執行得很快。原來這些 SQL 只是受到影響的 SQL,叢集整體佔滿了導致它們執行緩慢。
翻慢日誌翻得即將頭暈眼花之際,小王終於找到一條 SQL 現在執行時間也需要很久。他非常 excited,使用 EXPLAIN 觀察了一下 SQL 的計劃,最終發現原來是有人誤操作刪除了一個索引,導致 TiDB 走了全表掃描。增加索引後,問題解決。幸好小王對診斷 TiDB 問題經驗豐富,匯聚多個線索、結合不同工具最終分析出了問題的根源,如果是新手肯定就跪了。
能不能查問題更方便一些?
TiDB 4.0 新提供 TiDB Dashboard 圖形化介面,內建各種有力工具方便 DBA 同學診斷、監視和管理叢集。
之前的《 拍個 CT 診斷叢集熱點 》一文中介紹的 Key Visualizer 便是 TiDB Dashboard 包含的工具之一,它可以用於觀察業務模式的變化、快速直觀的檢視熱點讀寫情況。除了 Key Visualizer 以外,TiDB Dashboard 還包含其他工具。接下來讓我們來看一下 TiDB Dashboard 都有哪些工具可以緩解上文小王同學的燃眉之急(我們後續還會對這些功能點進行詳細介紹,敬請期待)。
叢集診斷報告
選擇一個時間段,TiDB Dashboard 會生成一份診斷報告,直接告訴你叢集中有什麼已知的問題。也可以選擇兩個對比時間段,生成對比報告。
叢集診斷報告是基於一系列預設規則進行的,會以配置、SQL 執行時間、各種監控、硬體情況等作為依據。該功能目前尚處於非常早期的階段,涵蓋的規則還在不斷持續完善中。我們希望它能成長為一個 DBA 得力的助手,讓沒有經驗的 DBA 同學也能擁有相關知識,快速地發現常見問題緣由。
在本文開頭的案例中,小王同學可以使用此工具,生成緩慢時候與正常時候的對比報告。報告中直接涵蓋之前正常執行、現在則顯著變慢了的 SQL,幫助小王同學快速抓到真凶。
SQL 語句分析(Statements)
選擇一個時間段,SQL 語句分析功能可以展示時間段內各個型別 SQL 的總時間佔比、單條時間佔比、掃的資料量等資訊。在 Statements 中,僅僅是引數值不同、其他部分相同的 SQL 語句會被合併顯示在一起,使用者無需擔心他們成為一堆零碎的 SQL 語句難以系統性地分析。
如果小王同學使用 Statements 功能,選擇時間段後,就可以直接按總執行時間或平均執行時間找到“肇事” SQL。
日誌搜尋和匯出
使用日誌搜尋和匯出功能,可以簡單地通過輸入關鍵字、選擇時間範圍、選擇日誌級別、選擇搜尋元件這幾個步驟,批量地在 TiDB、TiKV 和 PD 節點上搜尋和匯出日誌。小王同學再也不需要手工 SSH 一臺一臺登入伺服器搜日誌了,一切只需點幾下滑鼠。
節點效能分析(Profiling)
該功能用於直接抓取 TiDB、TiKV 或 PD 節點的火焰圖情況。
火焰圖直觀顯示了程式在抓取時間內花在各個內部函式上的時間佔比,供高階使用者更好地知道節點當前主要在做什麼事情。
使用 TiDB Dashboard
TiDB Dashboard 在 TiDB 4.0 叢集的 PD 元件中直接內建,無需額外部署。目前 4.0 版本還未正式釋出,想要在本地快速體驗新版 TiDB 的同學可以使用我們新推出的 TiDB 快速部署工具 TiUP(可在官方網站 tiup.io 進一步瞭解詳情)。
使用 TiUP 可以一鍵在本地啟動 nightly 版本的測試叢集,支援 Mac 和 Linux:
$ tiup playground nightly --monitor
複製程式碼
啟動測試叢集后,訪問以下地址即可體驗 TiDB Dashboard:
http://127.0.0.1:2379/dashboard
複製程式碼
對於極端關注叢集穩定性的使用者,也可以選擇獨立部署 TiDB Dashboard,本文限於篇幅就不進行詳細介紹,可以閱讀 TiDB 電子書《TiDB in Action》的 TiDB Dashboard 章節 瞭解詳情(後續會持續更新),也歡迎大家反饋意見,掃描下方二維碼,新增 TiDB Robot 為好友並回復“新特性”即可入群交流: