1、什么是MySQL DBA
首先,DBA是database administrator(數據庫管理員)的簡稱,在一些招聘網站上,也可能會把職位寫成數據庫[管理]工程師,MySQL DBA是目前互聯網企業中最為炙手可熱的崗位需求之一,前(錢)景大好,快到碗里來吧。
2、MySQL DBA的職責
傳統意義上的DBA基本上只要管好database system就可以,一般無需關注操作系統、硬件、網絡、安全、NOSQL等相關技術細節,在一些傳統企業或者操作集成商里的ORACLE DBA就是這樣的,最多關注到主機(小機為主)及相應的存儲設備。
而MySQL一般在互聯網業務中使用,MySQL DBA需要關注的方面也相應更多了,主要就是上面提到的主機硬件、OS、網絡、安全、NOSQL,以及一些MySQL運維自動化開發(這不奇怪,一個好平臺,通常都要自己親自開發才順手)的工作。
此外,隨著企業規模的變化,可能在公司初期是由一些比較資深的開發工程師負責所有服務器大小事宜,當然也包括MySQL的管理及優化。隨著規模的擴大,可能改由運維工程師來負責這些事了。更進一步的話,就開始需要專職的MySQL DBA了,隨著業務發展,形成DBA team,同時負責和數據及存儲相關的事務,比如存儲設備、NOSQL、日志存儲&分析,甚至大數據平臺。
在一線的大型互聯網公司里,甚至還區分運維DBA、開發DBA、DB架構師等不同崗位,為的就是能做到術業有專攻,讓專業的人專注做專業的事。
比較理想的MySQL DBA工作狀態應該是這樣的:
例如MySQL實例安裝、備份&恢復、SLAVE搭建、權限管理、DDL&DML變更上線等基礎的工作,通過DB平臺鼠標點點點即可完成,大概占用10%的時間;關鍵業務的SQL審核也可采用DB平臺來完成,尤其是一些常規的SQL規范規則,DDL相對好辦,DML可能需要進一步完善的評估,個別SQL再采用人工審核,平時經常和業務部門進行溝通,了解下階段的業務目標,預估DB端可能需要承載的壓力,大概占用20-30%的時間;通過監控系統來完成可用性及性能監控,發現異常時,再進行人工干預處理,一些容易引發性能問題的常見情景,也可以固化到自動化處理機制中,比如自動探測超過N秒的純SELECT查詢,避免這種慢SQL產生連鎖反應,或者自動殺掉一些有SQL注入風險的請求,大概占用10%的時間;數據庫主動優化,一個有豐富經驗的DBA,看到數據庫的一些現場情況時,一般即可預感到是否需要進一步深入優化工作。而SQL開發規范推送也很重要,可以在開發階段讓程序猿做好基本的SQL優化,這樣上線后不會手忙腳亂,反復的出現一些低級SQL性能問題,大概占用20-30%的時間;其余的時間可以用來充電學習,以及圈內的交流扯淡了,擴展知識面。3、如何成為MySQL DBA
事實上,MySQL DBA的入門并不難,但若想要成為高級、資深的DBA就有一定難度了。
如果是在校生,最起碼要先把《數據庫概論》那門課程給學一遍,其實如果是已經在職但對數據庫還沒什么概念的人,最好也要學習下這本書,對數據庫基本概念有一定理解。
此外,最好還要對Linux有一定了解,現如今在互聯網公司中,如果想從事和技術相關的崗位,你告訴面試官不懂Linux為何物的話,估計直接就被pass了。想學習Linux,可以買本《鳥哥linux私房菜》或者參加專業培訓(花錢參加培訓并不是什么丟人的事,關鍵是要找到一個靠譜的機構,靠譜的老師,學習效率會更高,知識也更為系統化,而自學畢竟要消耗更多時間,也可能比較零散,花錢買時間學會后,可以更快獲得回報)。
有了基礎概念后,可以再買一本MySQL相關的基礎入門書籍,比如《MySQL必知必會》、《深入淺出MySQL》等,其實我更建議把MySQL官方手冊中的關鍵章節完整看一遍(關注公眾號imysql_wx,發送“章節”獲得推薦),并結合里面的案例進行測試,或者自己用wordpress搭一個博客站,平時可以自己做些實踐演練。
如果能專注把上面的內容學習完畢,我相信你已經可以成為一個合格的初級MySQL DBA了。接下來就是找到一個合適的工作機會(可以把簡歷給我,我根據情況可幫忙進行推薦),進行真正的實操,獲得正式從業經驗。
4、MySQL DBA如何提升
事實上,如果你已經獲得了MySQL DBA工作機會之后,如何進行自我提升通常來說已經不需要我來說了,可以參考公司里的同事以及其他同行的提升發展道路模式。
通常來說,在這個階段需要深入學習的是某些關鍵知識點,比如數據庫原理、并發事務、鎖控制、存儲引擎、主機硬件優化等知識。有些不錯的書可以推薦,比如:《高性能MySQL》、《數據庫系統實現/概念》、《數據庫與事務處理》、《數據庫索引設計與優化》等等。