阿里數據庫DevOps最佳實踐

雲計算 DBA SQL 信息安全 互聯網技術趨勢解讀 互聯網技術趨勢解讀 2017-11-04

DevOps已不再陌生,但目前業界主要集中在開發與運維的高效協作和快速發佈上,而作為企業核心資產的數據庫,其結構設計、SQL審核、變更發佈已成為企業效率提升的主要瓶頸,這篇文章為杭州雲棲大會的分享議題(文末有視頻),將詳細介紹阿里在數據庫DevOps上遇到的挑戰以及解決方案。

>>阿里數據庫DevOps是什麼

一句話定義: 阿里數據庫DevOps是以數據庫產品為核心,促進數據庫研發自助化,提升研發效率,同時保證員工數據庫訪問安全及數據庫高性能。

阿里數據庫DevOps由3款產品組成,分別是阿里企業級數據管理服務iDB、數據庫智能優化服務CloudDBA、阿里企業級數據庫管控服務DBPaaS,本文會重點介紹阿里企業級數據管理服務iDB。

>>我們的挑戰

近10年,阿里研發人數從幾百人擴展到幾萬人,與此同時,不斷對數據庫服務提出挑戰。回顧阿里數據庫服務發展歷程,包含以下幾個階段:

  • 2010年前,數據庫賬號直接開放給開發,自由查詢數據

  • 2010年,為了解決數據查詢安全問題,全面回收數據庫賬號,只能DBA查詢數據

  • 2011年,為了解決數據查詢低效問題,iDB1.0發佈,開發在WEB平臺上自助查詢數據,但此時數據庫變更尚需郵件提交給DBA

  • 2012年,為了解決數據庫變更溝通問題,iDB2.0發佈,數據庫變更可以在線提交匯總,同時結構設計規範也可以自動應用到開發數據庫設計中,但此時數據庫變更還只能DBA執行

  • 2013年,為了解決數據庫變更低效問題,iDB3.0發佈,開發可以自助執行數據庫變更

  • 2014年,為了滿足阿里雲用戶對數據庫管理安全、效率的需求,數據管理DMS發佈,定位於個人數據管理雲服務

  • 2015年,為了解決阿里業務暴漲DBA支撐瓶頸問題,iDB4.0發佈,第一次做到數據庫研發全自助

  • 2016年,為了解決業務數據庫性能問題,數據庫智能優化服務CloudDBA發佈,定位於用戶身邊的數據庫專家

  • 2017年,為了將多年實踐/經驗/沉澱分享給更多人,數據管理DMS企業版(iDB對應雲上產品)發佈,提供完整的數據庫研發全自助流程、企業級數據庫安全管控等服務

今天,我們(準確說是我們的產品)要解決阿里20,000開發人員高效的結構設計、SQL審核和變更發佈,要解決每週上萬條SQL發佈無慢SQL漏網,要解決每週百萬次數據查詢分析的權限控制和操作審計,因此在效率、性能和安全上,阿里數據庫DevOps正面臨巨大挑戰。

>>解決方案

當你感覺痛苦的時候,正是你成長的時候,阿里數據庫DevOps應運而生。

  • 效率

數據庫效率最終衡量體現在發佈效率,而在發佈前面還有結構設計、SQL設計、測試數據構建、庫表同步、結構審核、SQL審核等工作,數據庫發佈自身也會細分成結構變更、數據訂正和分庫分表發佈等。

阿里數據庫DevOps在效率上的解決方案:全自助的數據庫研發流程,覆蓋上述數據庫發佈涉及的全部工作,如30+結構設計規範自動應用到開發結構設計中、多人設計衝突檢測和DDL溯源、多環境的庫表同步、百萬級測試數據自助生成等等,最終讓DBA無需參與具體項目的設計和評審,將主要精力投入到對業務架構理解,更加全局的看待業務和數據庫的關係,促進企業效率最優。

效率解決方案涉及功能太多,這裡僅以分庫分表發佈為例,希望大家能對全自助的數據庫研發流程有所瞭解:

阿里數據庫DevOps最佳實踐

如果選擇MySQL作為數據存儲,隨著業務增長,大多數企業都會遇到單表容量瓶頸,其中大表DDL性能問題最為嚴重。業界普遍解法是將單表拆成分表,分庫分表使得容量不再是瓶頸,但給維護管理帶來很大挑戰。

面對1024、4096個分表,如何加字段就是首要解決問題,經常遇到執行過快導致性能卡頓、一次性全量執行風險不可控、異常任務中斷等一系列問題,最終讓分庫分表方案實際效果大打折扣。

阿里數據庫DevOps在物理分庫分表基礎上封裝出邏輯庫、邏輯表,所有DDL都在邏輯庫、邏輯表上操作,而在物理分庫分表上的具體執行動作由產品來保證,目前可以做到數據庫鎖檢測、實例/庫級並行、自動灰度、執行限速、任務暫停重試等細粒度控制。

  • 性能

數據庫性能,拋開數據庫類型/版本選擇、內核優化、硬件選型等方面,我們看到對業務感知最明顯、最關注就是SQL(準確說是慢SQL),如何從根源上解決慢SQL,而不是每次出問題時救火,是阿里數據庫DevOps一直努力的方向。

阿里數據庫DevOps最佳實踐

在一條SQL被設計出來,到其成為慢SQL前,它需要通過審核,這時開發提交SQL審核後,會自動抽取SVN/GIT代碼中SQL並識別變化部分,這時阿里數據庫智能優化服務CloudDBA會對有變化的SQL進行診斷,先基於規則對select *、動態SQL等給出審核建議,然後對通過規則校驗的SQL進行優化,給出索引建議,整個SQL審核流程由產品完成,開發最終會看到SQL審核報告,包含SQL改寫建議、索引建議。

在大多數業務場景中,一次性優化相對容易些,如何做到持續優化?這就需要我們的優化流程能做到閉環,自動打通從採集->分析->建議->採納->跟蹤->評估整條鏈路,而不是靠DBA人肉串聯。

阿里數據庫DevOps最佳實踐

數據庫性能話題很大,比如上面提到的SQL上線前審核和優化閉環,還有運行中SQL優化、空間優化、鎖優化、全量SQL、性能成本度量等等方面,我這裡不做展開,大家可以在阿里雲數據管理DMS數據庫優化服務(入口:DMS登錄數據庫-性能)找到你需要的答案。

  • 安全

在數據庫領域,可以說數據安全是一切的基礎。而大多數企業數據庫都會存在以下幾種數據安全風險:

  • 應用訪問

  • 主機訪問

  • 數據倉庫

  • 備份

  • 員工訪問

在企業初期,往往會關注在前四種的安全防護上,而忽略人的因素,但隨著員工增多、角色增多,員工訪問數據安全風險日益突顯,而員工訪問數據安全正是數據庫DevOps要解決的重要課題。

阿里數據庫DevOps從以下5大方面解決員工訪問數據安全:

  • 查詢管控

  • 變更管控

  • 權限管控

  • 數據分級

  • 安全審計

阿里數據庫DevOps最佳實踐

每個大方面又細化出很多功能點,如權限管控就包含庫/表/列細粒度控制、物理庫/物理表/邏輯庫/邏輯表權限、查詢/導出/變更權限分類、到期提醒回收等功能點。

>>雲上:數據管理DMS

上面介紹的阿里數據庫DevOps,對應到雲上產品:數據管理DMS。

阿里數據庫DevOps最佳實踐

數據管理DMS產品架構如下:

阿里數據庫DevOps最佳實踐

從產品架構圖上可知, 數據管理DMS提供了企業版、高級版、免費版和移動版。

其中,數據管理DMS企業版為每個企業構建獨有的數據庫管理系統,包含每個企業獨有的員工信息、流程、規則和元數據,如果企業研發人數大於20人,強烈推薦使用。

阿里數據庫DevOps最佳實踐

如果你是個人、創業團隊或者小企業用戶,我們推薦數據管理DMS高級版, 讓你訪問雲端數據更安全。

阿里數據庫DevOps最佳實踐

另外,數據管理DMS最近還添加了新成員:移動版,一期支持雲端數據管理,後續還會支持數據庫診斷優化、數據庫研發流程以及自建IDC數據庫。

相關推薦

推薦中...