天天看點

資料庫自動化運維實踐

IT運維團隊的日常工作往往都比較瑣碎,DBA群體則尤為突出。在大多數情況下,DBA不是在修數(修改資料)就是在提數(提取資料),而且要花很多時間去溝通,不難想象一個SQL腳本在DBA和開發人員之間反複修改和稽核的場景,其根本原因在于資料訂正沒有一個标準化的流程,而這樣的标準化流程需要一個自動化的平台來做強有力的支撐。結合實際經驗,DBA工作大概有5個方面的痛點。

一、DBA痛點

1、庫表設計規範的落地

自動化運維的一個前提在于标準化,庫表設計及SQL語句标準化無疑是資料庫團隊标準化梳理中最為關注的内容,比如命名規範、表設計規範、字段設計規範、索引設計規範以及SQL使用規範等,标準确立之後,如何進行标準化落地也是一項難題。通常情況下由開發或測試人員将SQL語句送出給DBA,DBA會通過人工分析的方式驗證語句規範性、合法性和執行性能等,随着标準化的規範越來越多,待審查的SQL語句越來越多,檢查的成本也越來越高,這在無形之中間接造成DBA推行的規範越來越多,驗證工作也越來越複雜,久而久之,規範的限制力就很難保障。

2、SQL語句稽核

人工稽核很難在大量的SQL腳本中發現潛在的問題。像多字元或少字元、半角或全角等完全取決于“視力”好壞的問題着實很難發現,更深入的問題就更不容易被發現了,例如添加已存在的字段,或删除不存在的字段等。如果操作失敗,想要復原也很麻煩,是以每當生産環境要執行SQL腳本時,DBA都會再三确認,小心翼翼地執行每一個操作,因為資料復原的成本很高,或者有些腳本執行後根本不敢復原,隻能一條道走到底,通過修數解決問題,但這又會引出另外的問題。

此外,SQL的版本控制也是一個問題。DBA團隊希望在測試環境執行的腳本與将在生産環境執行的腳本完全一緻,但如果沒有科學的流程和工具,很難實作。多個環境之間執行的SQL版本不一緻是常态,若完全一緻極有可能導緻一些不确定的後果。是以,希望SQL稽核是一個全自動化、純線上、強限制力的操作。

3、資料提取

在業務發展初期,提數的需求尤其多,原因在于此時業務對應的營運系統還沒來得及建設,遇到問題就得查庫,在沒有相關的自動化平台支撐的情況下,DBA很大一部分人力資源都得耗在這上面。

4、資源管理

量變引發質變,對于業務規模相對較大的企業,即便是資源管理這樣的小事兒,對DBA來說也可能演變成一件頭疼的瑣事。以資料庫的建立為例,此類操作本身并不複雜,但考慮到對不同版本以及不同容錯模式的支援,加之随着業務規模的擴大,重複性的資源建立等,資源的頻繁建立和配置設定将是常态,若采用人工管理的話,成本投入高不說,也很“費”人,是以通過自動化的方式對資源進行管理很有必要。

5、監控的需求

資料庫監控也存在多種次元:從資源存活性角度來看,我們需要對資料庫程序進行監控;從資料庫性能角度來看,我們需要對事務的執行狀況以及吞吐量進行監控;從SQL執行的角度來看,我們需要對慢SQL進行監控;從容量的角度來看,我們需要對資料庫的表空間進行監控等。

資料庫自動化運維以解決DBA的實際痛點為主,主要包括了SQL語句稽核的自動化,資料提取的自動化,資料庫中繼資料的系統化管理,以及資料庫資源的建立、監控等。

二、資料庫自動化運維

1、自動化SQL語句稽核

自動化SQL語句稽核完成了從人工操作到自動化的轉變。它通過流程來規範稽核的過程,底層則是通過相應的中間件來對SQL進行檢查和限制,實作對關系型資料庫(如MySQL、Oracle)的SQL語句自動化評審和校驗。

SQL稽核的流程由開發人員發起,請求一經送出,稽核平台就會自動檢查送出的SQL是否符合規範,如果不符合,那麼送出就會失敗,并提示使用者失敗的原因。送出成功之後,會生成相應的稽核記錄,由具備權限的DBA稽核。DBA會重新通過自動稽核的方式來進行稽核,當然也可以人工稽核,當稽核确定通過之後,稽核訂單的狀态也就變成已認證,此時可以選擇直接執行,也可以由請求發起者來自己執行。這裡的執行者沒那麼重要,原因在于SQL已經通過雙重檢查,滿足執行要求,同時,SQL執行完成之後,也會自動生成相應的復原語句。

在整個SQL語句稽核的過程中,多數情況下,DBA需要做的僅僅是在稽核完成之後,點選“XXX”按鈕,令稽核訂單變成通過狀态。整個過程是全線上操作,便捷度和執行效率都非常高,真正做到了SQL稽核的自助化,使安全性和可靠性得到有效保障,同時SQL規範也能順利落地,給DBA的工作開展帶來極大的便利。

2、關于資料提取

關于資料提取,首先想到的是平台化的解決方案,即通過Web平台來完成資料庫的查詢,這本身并不複雜,更重要的需求在于權限的控制以及資料查詢的脫敏。

  • 權限控制。一方面是資料庫賬号的權限,對于資料提取來說隻能是隻讀,且預先已經由DBA配好,不需要使用者關注;另一方面針對權限控制的邏輯,通過平台來進行庫和使用者角色的關聯,就能實作應用負責人隻能對所使用的庫進行查詢。
  • 資料脫敏。可以考慮采用動态脫敏的方式,即對SQL查詢語句進行解析,識别出敏感字段,然後通過替換函數來改寫SQL。敏感字段的比對則通過維護敏感字段的字典表實作。該表由業務部門自行在平台上進行字段添加維護,由DBA進行管理,以保證敏感字段的維護比較完善。
3、中繼資料管理

針對資料庫自動化運維,主要從幾個次元進行了配置資訊管理,分别是機房、主機、業務、叢集、執行個體、庫等。通過這些資訊能夠比較容易地建構出資料庫的實體部署拓撲以及業務對資料庫的依賴關系。一方面這些資訊在故障關聯分析上能發揮較大的作用,另一方面也為後續的自動化運維提供了資料基礎。

4、資源的一鍵部署
5、資料庫監控

三、總結