作者: TiDB社區(qū)小助手 原文來源: https://tidb.net/blog/1cffec89
互聯(lián)網(wǎng)時(shí)代,數(shù)據(jù)的迅猛增長給數(shù)據(jù)庫帶來了可擴(kuò)展性的挑戰(zhàn),Gen AI 帶來的數(shù)據(jù)暴增更加劇了這種挑戰(zhàn)。傳統(tǒng)的數(shù)據(jù)分片已經(jīng)不能承載新時(shí)代數(shù)據(jù)暴增的需求,更簡單且具有前瞻性的方法則是采用原生分布式數(shù)據(jù)庫來解決擴(kuò)展性問題。在這種規(guī)?;瘓鼍暗谋尘跋?,TiDB 的研發(fā)團(tuán)隊(duì)和開源貢獻(xiàn)者們始終致力于解決事務(wù)一致性、數(shù)據(jù)持久性以及大規(guī)模擴(kuò)展所帶來的新挑戰(zhàn),以及保障關(guān)鍵應(yīng)用的穩(wěn)定性。
**作為 TiDB 7 系列的第二個(gè)長期支持版本 (LTS) ,TiDB 7.5 著眼于提升規(guī)模化場景下關(guān)鍵應(yīng)用的穩(wěn)定性。**新版本中,TiDB 在可擴(kuò)展性與性能、穩(wěn)定性與高可用、SQL 以及可觀測性等方面獲得了持續(xù)的提升。TiDB 7.5 LTS 包含了已發(fā)布的 7.2.0-DMR、7.3.0-DMR 和 7.4.0-DMR 版本中的新功能、提升改進(jìn)和錯(cuò)誤修復(fù),累計(jì)優(yōu)化和修復(fù)功能 70 余項(xiàng)。
本文將探討 TiDB 7.5 如何在規(guī)?;瘓鼍跋聦?shí)現(xiàn)關(guān)鍵應(yīng)用整體穩(wěn)定性的提升,探討資源管控支持后端任務(wù)和管理資源消耗超出預(yù)期的查詢(Runaway Queries)等重要特性,這些特性讓用戶可以在靈活調(diào)度資源降低總體成本的情況下可以保持關(guān)鍵應(yīng)用的穩(wěn)定性。
資源管控支持后端任務(wù)管理,提升執(zhí)行關(guān)鍵業(yè)務(wù)的穩(wěn)定性
TiDB 7.1 引入的資源管控(Resource Control)特性,多個(gè)業(yè)務(wù)可共享同一個(gè) TiDB 集群,DBA 可為不同的工作負(fù)載設(shè)置資源配額和優(yōu)先級,例如為關(guān)鍵業(yè)務(wù)分配更高的優(yōu)先級,確保其能夠優(yōu)先獲得資源,避免受到其他工作負(fù)載的干擾。此前,資源管控?zé)o法對 DDL、analyze、import 等后端任務(wù)進(jìn)行控制,這些任務(wù)通常定期或不定期觸發(fā),在執(zhí)行的時(shí)候會(huì)消耗資源,從而對關(guān)鍵業(yè)務(wù)的運(yùn)行產(chǎn)生影響。
自 TiDB 7.4 開始,資源管控支持后端任務(wù)管理。當(dāng)一種任務(wù)被標(biāo)記為后端任務(wù)時(shí),TiKV 會(huì)動(dòng)態(tài)地限制該任務(wù)的資源使用,以盡量避免此類任務(wù)在執(zhí)行時(shí)對前臺(tái)任務(wù)產(chǎn)生影響。TiKV 通過實(shí)時(shí)地監(jiān)測所有前臺(tái)任務(wù)所消耗的 CPU 和 IO 等資源,并根據(jù)實(shí)例的總體資源上限計(jì)算出后端任務(wù)可使用的資源閾值,所有后端任務(wù)在執(zhí)行時(shí)會(huì)受此閾值的限制。當(dāng)后端任務(wù)被識(shí)別匹配后,資源管控會(huì)自動(dòng)進(jìn)行,即當(dāng)系統(tǒng)資源緊張時(shí),后端任務(wù)會(huì)自動(dòng)降為最低優(yōu)先級,以確保前臺(tái)任務(wù)的執(zhí)行效率。**這個(gè)功能的增強(qiáng)允許 DBA 通過設(shè)置自動(dòng)識(shí)別后端任務(wù),并降低其資源消耗。**未來,這個(gè)功能將進(jìn)一步擴(kuò)展,提供給用戶更豐富的配置選擇,從而賦予用戶對集群中后端任務(wù)更多的控制權(quán)。
下表展示了當(dāng)“analyze”后端任務(wù)以默認(rèn)優(yōu)先級和低優(yōu)先級運(yùn)行時(shí)對前臺(tái)工作負(fù)載的影響對比:
在上表的示例中,第一行展示了當(dāng)所有集群資源均可供前臺(tái)工作負(fù)載使用時(shí)的性能。第二行展示了在后臺(tái)添加 “analyze” 任務(wù)時(shí)發(fā)生的情況。第三行則展示了利用新特性自動(dòng)對 “analyze” 任務(wù)進(jìn)行管控時(shí)的效果。
將后端任務(wù)(Addindex,Importinto任務(wù))調(diào)度到指定的 TiDB 節(jié)點(diǎn)執(zhí)行
TiDB 7.2 開始,引入了 分布式框架 ,該框架的目標(biāo)是實(shí)現(xiàn)對所有后端任務(wù)的統(tǒng)一調(diào)度與分布式執(zhí)行,并為接入的后端任務(wù)提供統(tǒng)一的資源管理能力。分布式框架支持后端任務(wù)(特指 Add index 和 Import into 任務(wù))在 TiDB 集群的所有 TiDB 節(jié)點(diǎn)上執(zhí)行,以提升此類任務(wù)的性能。而 TiDB 7.5 允許 DBA 將 Add index,Import into 這類消耗資源較多的后端任務(wù)調(diào)度到指定的 TiDB 節(jié)點(diǎn)上執(zhí)行,從而和存量 TiDB 節(jié)點(diǎn)上的負(fù)載進(jìn)行隔離,避免對業(yè)務(wù)產(chǎn)生影響 。當(dāng)在想要運(yùn)行后端任務(wù)的節(jié)點(diǎn)上設(shè)置 tidb_service_scope 為 background 時(shí),后端任務(wù)分布式框架將調(diào)度該節(jié)點(diǎn)執(zhí)行后端任務(wù)。但未經(jīng)這樣設(shè)置,則該節(jié)點(diǎn)將不會(huì)被用于執(zhí)行后端任務(wù)。
這一改進(jìn)真正的突破在于能夠動(dòng)態(tài)地添加 TiDB 節(jié)點(diǎn)來處理突發(fā)的這類后端任務(wù)。如果需要導(dǎo)入一個(gè)龐大的表,只需向集群中添加若干個(gè) TiDB 節(jié)點(diǎn)來完成,而不會(huì)對現(xiàn)有 TiDB 節(jié)點(diǎn)造成任何額外壓力,添加索引的方式也是如此。完成任務(wù)后,這些節(jié)點(diǎn)可以被撤銷。這一功能為在生產(chǎn)集群上輕松處理大型任務(wù)(Add index ,Import 大量數(shù)據(jù))提供了更加無縫的方式。
暫停和恢復(fù)執(zhí)行DDL任務(wù)
在 v7.1 版本之前,用戶在某些場景下會(huì)遇到 DDL 執(zhí)行的痛點(diǎn),具體表現(xiàn)為:
-
集群版本升級時(shí),若有正在執(zhí)行的 DDL 未被取消,可能導(dǎo)致升級后的數(shù)據(jù)異常。
-
對于擁有數(shù)十億行數(shù)據(jù)的大表,為其添加索引可能需要相當(dāng)長的時(shí)間,對在線業(yè)務(wù)造成不可忽視的影響。
為了解決這些問題,我們在 v7.1.0 中引入了一項(xiàng)新功能:DDL 任務(wù)的暫停和恢復(fù)。這一功能在 v7.5.0 中正式發(fā)布,為用戶帶來了更加靈活和高效的 DDL 執(zhí)行體驗(yàn)。
具體而言,該功能巧妙地解決了上述痛點(diǎn):
-
在使用 TiUP 對集群升級的過程中,系統(tǒng)將自動(dòng)暫停正在執(zhí)行的 DDL 任務(wù),并在升級完成后自動(dòng)恢復(fù)執(zhí)行該 DDL 任務(wù)。全程無需人為干預(yù),有效避免由于人員疏忽導(dǎo)致未暫停 DDL 而引起集群升級后數(shù)據(jù)不一致的問題。
-
針對執(zhí)行耗時(shí)較長的 DDL,比如給大表添加索引,用戶可以在業(yè)務(wù)高峰期來臨前手動(dòng)暫停該 DDL,并在業(yè)務(wù)低谷期恢復(fù)該 DDL 任務(wù),從而有效避免對在線業(yè)務(wù)的影響。
DDL 任務(wù)的暫停和恢復(fù)機(jī)制支持?jǐn)帱c(diǎn)續(xù)傳,不僅保障了 DDL 任務(wù)的安全性和穩(wěn)定性,同時(shí)最大化地保證了用戶數(shù)據(jù)一致性和業(yè)務(wù)的穩(wěn)定性。
監(jiān)控和管理資源消耗超出預(yù)期的查詢
突發(fā)的查詢性能下降,是影響數(shù)據(jù)庫整體性能最常見的問題,很難完全規(guī)避。 即使設(shè)置了資源組限額,也只能消除資源組間的相互影響,而個(gè)別 SQL 的過渡消耗仍會(huì)對降低資源組內(nèi)的其他操作的性能。為解決此問題,TiDB 7.2 資源管控引入了對 Runaway Queries 的管理,自動(dòng)識(shí)別并處理消耗超出預(yù)期的查詢,在 TiDB 7.3 引入了手動(dòng)管理 Runaway Queries 監(jiān)控列表的功能,將 SQL 特征添加到隔離監(jiān)控列表,從而實(shí)現(xiàn)快速隔離 Runaway Queries。 無論用戶是否使用了資源組,都可以借助 Runaway Queries 管理來緩和突發(fā)的 SQL 性能問題。
DBA 現(xiàn)在可以為每個(gè)資源組設(shè)置“查詢限制 (Query Limit)”,并配備幾個(gè)關(guān)鍵參數(shù) 。EXEC_ELAPSED 用于設(shè)定查詢持續(xù)時(shí)間的閾值,任何超出這一閾值的查詢都會(huì)被識(shí)別為 Runaway Query。ACTION 決定當(dāng)識(shí)別到 Runaway Query 時(shí)進(jìn)行的動(dòng)作,可以把執(zhí)行優(yōu)先級降到最低也可以終止該查詢。WATCH 用于快速匹配已經(jīng)識(shí)別到的 Runaway Query,即在一定時(shí)間內(nèi)再碰到相同或相似的查詢,可以直接按照配置的措施進(jìn)行處理,避免其在被識(shí)別的過程中對資源進(jìn)行消耗。
如果一些 Runaway Queries 并沒有被自動(dòng)識(shí)別,DBA 也可以通過 SQL 命令 "QUERY WATCH"手動(dòng)將查詢的特征加入“監(jiān)視列表”,類似于設(shè)置數(shù)據(jù)庫級別的 SQL 黑名單,特別適合那些對數(shù)據(jù)庫響應(yīng)時(shí)間要求很高的客戶,為突發(fā)的 SQL 性能問題提供了一種有效的防范措施。這項(xiàng)功能和資源管控結(jié)合使用,意味著在業(yè)務(wù)系統(tǒng)之間以及業(yè)務(wù)系統(tǒng)內(nèi)部都能實(shí)現(xiàn)更高的穩(wěn)定性,從而最大限度地減少多業(yè)務(wù)合并過程中可能出現(xiàn)的潛在風(fēng)險(xiǎn)。
立即體驗(yàn)TiDB 7.5
從 TiDB 7.0 開始,TiDB 在數(shù)據(jù)庫整合的技術(shù)方向上持續(xù)演進(jìn),致力于在多業(yè)務(wù)融合的場景下同時(shí)提升關(guān)鍵業(yè)務(wù)的穩(wěn)定性和降低總體成本,7.5 LTS 將資源管控、分布式框架、可觀測性理念的組合推升到更為成熟的階段,可以為當(dāng)前追求業(yè)務(wù)連續(xù)性同時(shí)也希望降低總體成本的客戶帶來創(chuàng)新的部署和運(yùn)維方式。 文章來源:http://www.zghlxwxcb.cn/news/detail-759824.html
7.5.0 關(guān)鍵特性&功能詳情請見: https://docs.pingcap.com/zh/tidb/stable/release-7.5.0 文章來源地址http://www.zghlxwxcb.cn/news/detail-759824.html
到了這里,關(guān)于TiDB 7.5 LTS 發(fā)版丨提升規(guī)模化場景下關(guān)鍵應(yīng)用的穩(wěn)定性和成本的靈活性的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!