WOT2016翁寧龍:美團數據庫自動化運維系統
原創近日,51CTO將舉辦WOT互聯網運維與開發者峰會,記者在會前專訪了本次大會數據庫技術與應用專場的重要講師翁寧龍,他此次分享的主題是《美團數據庫自動化運維系統 》。美團數據庫目前機器數大約1300臺(包括mysql、redis、mongo)、mysql的日均流量約9億、數據庫中間件的線上使用比率80%+、mysql 5.6+GTID的線上使用比率70%+、DBA日常操作的自動化率達到50%+。面對這樣一串可觀的數據,不得不讓我們對美團數據庫的運維產生好奇。接下來,讓我們隨著翁寧龍走近美團數據庫自動化運維系統,進一步了解。
【受訪人簡介】
翁寧龍· 美團網高級DBA
翁寧龍,2015年6月加入美團網,目前負責美團網數據庫自動化相關的架構設計以及開發工作。2012年,東北大學研究生畢業加入百度從事數據庫自動化相關的設計、開發工作,參與了分布式數據庫、私有云數據庫以及公有云數據庫的相關設計、開發。
美團數據庫自動化運維系統初期架構及后期的演進
翁寧龍在采訪中表示,美團自動化運維系統初期僅支持在線的DDL操作、數據庫賬戶申請操作以及數據庫相關集群信息查詢操作。初期架構,前端將用戶相關的操作信息以任務的形式記錄在數據庫中,服務端有常駐內存的模塊去數據庫中取任務、操作并進行相關元信息的修改工作。美團自動化運維系統初期的功能比較單一,整個系統缺乏高可用、高性能等方面的設計。
如上圖所示,為當前美團自動化運維系統的架構設計:
- 用戶在前端所有的數據請求都通過API層獲取,所有的操作都通過API層提交;API層除了系統使用外,還為公司其他團隊提供方便的接口化、服務化支持。
- 用戶的所有請求都由任務管理模塊進行消費,任務管理模塊獲取任務之后,找到對應的任務執行者,將任務拋給任務執行者,即反饋前端任務提交成功。
- 任務執行者托管于OS,負責單元任務的執行,并將執行過程中相關的數據記錄在數據庫,展示到前端,方便用戶查看任務進展情況,任務執行結束,任務單元退出。
美團數據庫自動化運維系統支持的功能展示
如上圖所示,美團數據庫自動化運維系統現在主要支持的功能包括:
- 總覽:查看數據庫集群的實時情況,相關報警信息,慢查詢等
- 工單:方便RD提交數據庫問題,引導RD進行問題解決
- 系統公告&***動態:發布數據庫相關的重大變更、***通告等
- 初始化:新集群的搭建工作(包括mysql和中間件)
- 擴容:給數據庫擴容從庫
- 數據庫創建:建庫&添加賬號
- 自助表變更:在線的DDL和DML
- 備份管理:數據庫集群的備份相關的操作
翁寧龍表示,除了上述功能之外,還有checksum管理、中間件管理、歷史、實時processlist查看、歷史innodb status查看、SQL評審等。
美團數據庫自動化運維系統開發過程中踩過的坑
當問及美團數據庫自動化運維系統在開發過程中遇到哪些問題,又如何應對時,翁寧龍從開發流程和功能具體實現兩方面來舉例:
針對開發流程來說,開發出來的功能與運維DBA預期不符合
應對:數據庫自動化的需求來源:運維DBA平時運維工作中的痛點,通過運維DBA投票的方式決定自動化相關功能的開發;功能先進行原型設計,必須要有運維DBA參與其中;功能開發過程中與運維DBA常溝通,開發完成需要至少2個運維DBA測試OK沒問題才能上線;上線之后,DBA有任何使用不舒服的地方,隨時跟進修改
針對具體功能實現來說,任務中途失敗造成的手動回滾
應對:由于數據庫操作很多功能沒有辦法方便得回滾,所以需要手動回滾,如果失敗率高的話,就會給運維DBA帶來額外的工作;所以在所有功能上必須加上詳細的前置檢查和后置檢查工作,在操作環境不正確的情況下,直接給運維DBA報錯,而不是流程走到一半出錯退出。
在采訪***,翁寧龍分享了開發過程中總結的三條寶貴經驗,供大家參考借鑒:其一,要與運維DBA和RD保持溝通,明確了解需求;現在可以通過工單的方式,統計最需要的功能。其二,用戶在使用的過程中,有什么不舒服的地方,如果修改量不大的話,應該立即修改,因為這樣的小需求會很多,但是能夠解決大問題。其三,高可用、高性能、高擴展的系統設計,方便運維DBA參與到開發中來,提升開發效率。