面試了10個2年MySQL DBA工作經驗

公司招聘MySQL DBA,也面試了10個2年MySQL DBA工作經驗的朋友,談談自己的心得,歡迎大家指點。

1    2年MySQL DBA經驗

      其中許多有水分,一看到簡歷自我介紹,說公司項目的時候,會寫上linux系統維護,mssql server項目,或者oracle data gard項目,一般如果有這些的話,工作在3年到4年的話,他的2年MySQL DBA管理經驗,是有很大的水分的。剛開始我跟領導說,這些不用去面試了,肯定mysql dba經驗不足,領導說先面面看看,於是我就面了,結果很多人卡在基礎知識這一環節之上,比如:

(1)有的卡在複製原理之上

(2)有的卡在binlog的日誌格式的種類和分別

(3)有的卡在innodb事務與日誌的實現上。

(4)有的卡在innodb與myisam的索引實現方式的理解上面。

         .........

         關於基礎知識考查點,請參考我整理的基礎面試點總結: http://blog.csdn.net/mchdba/article/details/13505701

個人覺得如果有過真正的2年mysql專職dba經驗,那麼肯定會在mysql的基本原理上有所研究,因爲很多問題都不得不讓你去仔細研究各種細節,而自己研究過的細節肯定會記憶深刻,別人問起一定會說的頭頭是道,起碼一些最基本的關鍵參數比如Seconds_Behind_Master爲60這個值60的準確涵義,面試了10+的mysql dba,沒有一個說的準確,有的說不知道忘記了,有的說是差了60秒,有的說是與主上執行時間延後了60秒。


2   對於簡歷中寫有熟悉mysql高可用方案

    我一般先問他現在管理的數據庫架構是什麼,如果他只說出了主從,而沒有說任何ha的方案,那麼我就可以判斷出他沒有實際的ha經驗。不過這時候也不能就是斷定他不懂mysql高可用,也許是沒有實際機會去使用,那麼我就要問mmm以及mha以及mm+keepalived等的原理實現方式以及它們之間的優勢和不足了,一般這種情況下,能說出這個的基本沒有。



3   對於簡歷中寫有批量MySQL 數據庫服務器的管理經驗

     這個如果他說有的話,我會先問他們現在實際線上的mysql數據庫數量有多少,分多少個節點組,最後問這些節點組上面的slow log是如何組合在一起來統計分析的。如果這些他都答對了,那麼我還有一問,就是現在手上有600臺數據庫,新來的機器,Mysql都安裝好了,那麼你如何在最快的時間裏面把這600臺mysql數據庫的mysqld服務啓動起來。這個重點在於最快的時間,而能準確回答出清晰思路的只有2個人。



4   對於有豐富的SQL優化的經驗
    首先問mysql中sql優化的思路,如果能準備說出來,ok,那麼我就開始問explain的各種參數了,重點是select_type,type,possible_key, ref,rows,extra等參數的各種值的含義,如果他都回答正確了,那麼我再問file sort的含義以及什麼時候會出現這個分析結果,如果這裏他也回答對了,那麼我就準備問profile分析了,如果這裏他也答對了,那麼我就會再問一個問題,那是曾經tx問我的讓我鬱悶不已的問題,一個6億的表a,一個3億的表b,通過外間tid關聯,你如何最快的查詢出滿足條件的第50000到第50200中的這200條數據記錄。

關於explain的各種參數,請參考:http://blog.csdn.net/mchdba/article/details/9190771

5   對於有豐富的數據庫設計經驗
     這個對於數據庫設計我真的沒有太多的經驗,我也就只能問問最基礎的,mysql中varchar(60) 60是啥含義,int(30)中30是啥含義? 如果他都回答對了,那麼我就問mysql中爲什麼要這麼設計呢? 如果他還回答對了,我就繼續問int(20)存儲的數字的上限和下限是多少?這個問題難道了全部的mysql dba的應聘者,不得不佩服提出這個問題的金總的睿智啊,因爲這個問題回答正確了,那麼他確實認認真真地研究了mysql的設計中關於字段類型的細節。至於豐富的設計數據庫的經驗,不用着急,這不我上面還有更加厲害的dba嗎,他會搞明白的,那就跟我無關了。


6  關於mysql參數優化的經驗。
    首先問他它們線上mysql數據庫是怎麼安裝的,如果說是rpm安裝的,那麼我就直接問調優參數了,如果是源碼安裝的,那麼我就要問編譯中的一些參數了,比如my.cnf以及存儲引擎以及字符類型等等。然後從以下幾個方面問起:
(1)mysql有哪些global內存參數,有哪些local內存參數。
(2)mysql的寫入參數需要調整哪些?重要的幾個寫參數的幾個值得含義以及適用場景,比如innodb_flush_log_at_trx_commit等。
(3)讀取的話,那幾個全局的pool的值的設置,以及幾個local的buffer的設置。
(4)還有就是著名的query cache了,以及query cache的適用場景了,這裏有一個陷阱,就是高併發的情況下,比如雙十一的時候,query cache開還是不開,開了怎麼保證高併發,不開又有何別的考慮?

7  關於事物隔離級別。
這個最起碼你得知道那4個隔離級別的名字吧,以及之間的區別,還有你當前自己數據庫裏面設置的是哪個級別吧,可惜的是面試了那麼多,能準備想都不用想的回答出的就只有一個,而且他只說出了前3個級別的名字。
關於事務隔離級別簡單資料,請參考:http://blog.csdn.net/mchdba/article/details/12837427

8  關於熟悉mysql的鎖機制。
那麼gap鎖,next-key鎖,以及innodb的行鎖是怎麼實現的,以及myisam的鎖是怎麼實現的等,可惜能準備說出這些的只有一個mysql dba。

9  關於熟悉mysql集羣的。
我就問了ndbd的節點的啓動先後順序,再問配置參數中的內存配置幾個重要的參數,再問sql節點中執行一個join表的select語句的實現流程是怎麼走的?ok,能回答的也只有一個。
關於mysql集羣入門資料,請參考:http://write.blog.csdn.net/postlist/1583151/all

10  關於有豐富的備份經驗的
就問mysqldump中備份出來的sql,如果我想sql文件中,一行只有一個insert .... value()的話,怎麼辦?如果備份需要帶上master的複製點信息怎麼辦?或者xtrabackup中如何做到實時在線備份的?以及xtrabackup是如何做到帶上master的複製點的信息的? 當前xtrabackup做增量備份的時候有何缺陷?
        能全部回答出來的沒有一個,不過沒有關係,只要回答出mysqldump或者xtrabackup其中一個的也可以。

11 關於有豐富的線上恢復經驗的
就問你現在線上數據量有多大,如果是100G,你用mysqldump出來要多久,然後mysql進去又要多久,如果互聯網不允許延時的話,你又怎麼做到恢復單張表的時候保證nagios不報警。如果有人說mysqldump出來1個小時就ok了,那麼我就要問問他db服務器是啥配置了,如果他說mysql進去50分鐘搞定了,那麼我也要問問他db機器啥配置了,如果是普通的吊絲pc server,那麼真實性,大家懂得。
然後如果你用xtrabackup備份要多久,恢復要多久,大家都知道copy-back這一步要很久,那麼你有沒有辦法對這一塊優化。


.............

先想到這麼多,可能有朋友就好心提醒了,你mysql dba招聘好了沒有,如果沒有招聘好,萬一人家看到這裏,全部準備好,那不相當於作弊啊?
我想說的是,我只是說出了想問的知識點,我可沒有說答案啊,如果能自己找出所有準確答案的,那也挺不錯了,至少這探索精神是有的,不過就算過了我這一關基礎知識面試,別忘了,上面還有比我更厲害的dba,他會繼續KO你的,他問的東西就比較深入了,要過那一關挺不容易的,要不然剛開始一個月他面試了10多個全部被他pass了,然後他說好麻煩啊先讓我把把關把不合格的pass掉,讓他省點時間,哈哈,所以我不用擔心的。

當然可能是我們公司也比較弱吧,畢竟目前不能跟ali,tx,baidu等真正的mysql dba團隊相比,也許真正的基礎知識紮實的mysql dba已經投奔它們而去了,在此呼喊下,我們這些互聯網公司也是有追求的,特別是在招聘mysql dba這一塊,對基礎知識很注重的。

最後歡迎大家拍磚,我這邊已經準備好taobao網購了一個鋼頭盔,小弟我還可以撐得住啊,赫赫,玩笑了,大家有過這方面面試別人或者去應聘的經驗的,歡迎指點啊!
發佈了12 篇原創文章 · 獲贊 6 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章