如何找到第一份 DBA 工作?
請各位DBA們介紹下你們第一份DBA的工作怎麼找的,DBA需要一定的經驗,所以第一份DBA工作不好找,謝謝!
說一下我自己吧。
我最開始是一個系統工程師,其實就是到處跑給人家安裝應用的,國家郵政的項目,沒啥技術含量,但是需要用到操作系統的知識(Unix),需要集群軟體的知識,需要用到網路的知識,需要用到資料庫的知識(Oracle),而且,環境千奇百怪,很能考驗人。
接觸了一段時間 Oracle 之後,有了興趣,想進一步學習,就開始泡論壇(比如,http://ITpub.net),那會兒網上信息少,論壇是個不錯的交流渠道。整天看別人的提問,查資料,分析,自己做實驗。積少成多,培養感覺,鞏固知識。
之後想找一份資料庫相關的工作,到處面試,肯定多數公司都會拒絕你,「工作經驗少,而且都沒有做過資料庫」,這當然是一個很大的障礙。別怕碰壁,慢慢找吧,直到有一天...N次求職失敗後,找到了一份BI/數據倉庫相關的工作(其實之前還有一次在聯想5分鐘面試就敲定的,但是搞不定檔案的問題)。公司還在技術儲備期,進去又可以學習一段時間。經過這段時間的磨合,基本上將資料庫的技能掌握了。可以幹活了。
再接下來,就容易多了。過去,很多公司招人很看重經驗,我個人覺得,經驗的確重要,但學習的能力、學習的意願更加重要。
祝你好運!
DBA的工作有些像中醫,年紀越大、經驗越多,價值越高。畢竟DBA遇到的資料庫的環境可能會比較複雜:
1,即使同一種資料庫,也可能會有很多版本之間的細微差別,
2,再加上和操作系統環境/版本之間的互動,又帶來進一步的複雜度,有些參數的調整對資料庫的影響又有可能非常大,
3,資料庫也經常對操作系統的Patch有要求
4,一個人寫SQL的技巧和多人並發運行的環境又不一樣
5,OLTP的環境與OLAP的環境,或者混合環境也不同
6,資料庫的新版本會帶來不少新的寫法、用法,也需要不斷跟進
一般在大一些的公司裡面,有可能會有兩種DBA的角色,生產系統DBA和開發DBA,前者比較多地關注資料庫軟體的安裝/調試,系統的運營,鎖的管理,CPU/IO使用情況的監測,資料庫備份/恢復,許可權,空間分配等等;而開發DBA更多會關注SQL的優化,資料庫模型的設計/維護,索引設計等等。不管哪種DBA類型,都應該有一定的SQL開發背景,對性能、穩定性、資料庫各組件之間的相互關係有比較實際的經驗和認識。
以上這些還只是純技術,純產品方面的,另外還建議在學習技術知識的同時,加強英文能力的訓練,畢竟很多資料庫的技術特性、經驗都來自於英文的資料,甚至包括與原廠商的技術團隊的深入交流,英文好的會佔不少便宜。除此之外,還有團隊合作方面的,以及管理方面等全面的能力。畢竟DBA在IT系統中承上啟下,關係重大,一般企業都會從比較全面的資料庫開發者裡面選知識面比較廣的,溝通能力比較強的。
祝大家有志者事竟成,做好DBA首先感謝新年一回來就看有網友邀請回答問題,非常榮幸!
話前語:不要神話DBA,也不要小瞧DBA,技術要好,更要綜合素質高,既要專一,又要有適當的廣度 ;
個人建議:
1.若是非即將踏出校門,走上社會的大學生,建議:
1.1 數據結構,一定要學好,尤其是那些排序演算法;
1.2 操作系統原理要學好,不要你編寫操作系統,大致的調度演算法等要清楚;
1.3 高數、離散數學等若能學好最佳,數學學了不一定要用到,不想學數學的理工科出身人一定是垃圾的理工科人;
1.4 計算機網路知識,一定要多少知曉;
1.5 資料庫系統概論 尤其是已故 薩老主編,其弟子王珊美女主寫的書籍 可作為寶典研究
1.6 最好選擇一款容易上手,且是你今後可能選擇的資料庫產品,推薦三款:SQL Server 、MySQL、Oracle,至於那一款,個人尤其推薦MySQL,特點:就業前景更好,容易上手(也即適合自學)
1.7 操作系統建議選擇:Linux系統,比如CenterOS Redhat都行,屬於同類的東西,會基本操作即可
1.8 最好能會一種編程工具,你就是用C語言也行,JAVA,PHP等都行,若是想走DBA線路,推薦會Perl 或 python 或lua等語言會更佳;
1.9 大學除了上述功利點學習,還要提高思想境界,要看一些哲學或佛學類的書籍,避免工作之後過早觸摸到」天花板「,技術人最可怕的是思維天花板
2.若是即將走出校門或已經走出校門(尤其)
2.1 資料庫系統原理知識要非常清楚;
2.2 選擇一款資料庫產品,最好日常工作還能用到。工作中,要想辦法主動去承擔業務數據流的梳理和分析,並且做出資料庫結構的設計,甚至把一些表的索引都創建好
2.3 熟悉Linux系統的日常基本操作
2.4 關注DBA領域的網站:ITPUB論壇、http://www.mysqlops.com(做個小廣告),想辦法幫助他人解答疑難問題,而提高自己
2.5 最重要的:重點學習自己選擇的資料庫產品的知識點,比如MySQL的話,一定要通讀三分之二的手冊部分,最好看英文版本的
2.6 過關注下:阿里系、新浪、百度、大眾點評等公司,對招聘DBA的要求,並且核對自己是否滿足其要求
2.7 若是想找工作且是 MySQL或Oracle 領域的DBA,可以新浪微博 @mysqlops 私信聯繫我,北京、上海、杭州三地的機會一般都可以幫忙推薦。
第一份就像找像樣的DBA工作確實很困難,不過可以從運維做起。有個很形象的比喻:伺服器就像一把鎖,而資料庫就像是鎖里的核心部件,你想玩轉鎖的核心,卻不知道這把鎖怎麼打開,卻沒有鑰匙,怎樣接觸鎖里的核心呢?
數據就是一個企業的心臟,救命稻草,沒有一個大企業會放心、隨隨便便把DBA的工作交給一個沒有經驗的人的。除非你確實很有本事,很有能耐,無所謂你是不是應屆畢業生之類的。
我個人的真實體會:實踐結合理論,實踐更重要。
我以前也是做開發的,做銀行外匯交易系統二次開發。客戶有時抱怨性能很差,很慢。後來我和當時的dba合作,定位瓶頸在資料庫上,例如:要定期更新表的統計信息,重建索引等。然後我就深入研究為什麼做了這些調優後,性能問題解決了?其他公司的DBA是如何維護統計信息,索引 的?
如果還是不是很理解的話,這個時候就需要理論知識了,查查oracle官方文檔,找找ocp原版教材等等,系統地補補理論知識。如果先看書,幾千頁的原版英文書,很多東西沒有實踐經驗,一般都是看過了,一段時間後就忘記了。遇到問題後再查書,往往印象最深刻。
通過一個個問題延伸到其他問題,查資料,勤測試,多交流,慢慢積累,逐漸提高。資料庫對於開發者並不是一個黑盒,有了開發的經驗,對未來做DBA 性能調優有很大的幫助。詳細的分享一下我的求職歷程吧
我原來是做ORACLE開發的,後來聽去IOE多了,覺得自己還在搞ORACLE只會路越來越窄,一個同事說有個朋友零基礎轉了MySQL DBA,我腦袋一熱就辭職,在家開始準備MySQL DBA了,我用了9個月時間來找到工作,分享一些自己踩過的坑
1. 裸辭
我原來公司很閑的,有很多時間自學MySQL,可惜我看不下書,為了逼自己學習,轉崗位,我把工作辭掉了,本以為學習進度會加快,確實剛辭職時學習是很有動力的,但是過了2個月,糟糕了,我不但看不下書的同時,我玩起遊戲來了,於是蹉跎了好幾個月,我犯的第一個錯就是太高估自己的自控能力,太低估自己的惰性,而且還會帶來自我責備
2. 不懂抓主要矛盾
我當時覺得mysqlops的答案很靠譜,他建議如下幾點
1.1 數據結構,一定要學好,尤其是那些排序演算法;
1.2 操作系統原理要學好,不要你編寫操作系統,大致的調度演算法等要清楚;
1.3 高數、離散數學等若能學好最佳,數學學了不一定要用到,不想學數學的理工科出身人一定是垃圾的理工科人;
1.4 計算機網路知識,一定要多少知曉;
1.5 資料庫系統概論 尤其是已故 薩老主編,其弟子王珊美女主寫的書籍 可作為寶典研究
於是買了一堆C語言,高數,linux系統,資料庫系統概論,打算自己有時間,先打好基礎再學MySQL, 於是自己就在一堆演算法和高數中受虐,自信心打擊,現在回來看,如果要找第一份MySQL DBA 工作,完全沒有必要,甚至找第一份編程工作,都沒啥必要,這些建議是給如何成為大牛用的。
那應該看什麼呢?即使看《MySQL開發與運維》或者類似的介紹MySQL的書也是不靠譜,因為它有相當多一部分知識在實際工作中並不會用到,本答案是針對如何找工作的,而不是如何成高手的。首先應該去面試,去做筆試題,每去一家公司,就把筆試題拍下來,面試的時候就記錄面試官問的問題,這樣就知道企業對於MySQL的需求是什麼了,回來著重看那些知識點,在這裡我幫你歸納
1.說說主從複製的原理?告訴我你怎麼做主從的?
2.你們資料庫是怎麼備份恢復的?
3.你知道二進位日誌有多少種嗎?某某參數是什麼意思?
4.你知道常用的存儲引擎有哪幾種嗎?區別是什麼?
5.你知道不同MySQL版本有什麼特性嗎?
6.你們公司是怎麼做高可用的?給我講一下原理?
7.你管理的資料庫有多少條記錄,有多大?
8.你是怎麼優化SQL語句的?給我講一個具體例子?
......
先收集問題,然後再學習,先了解客戶需求,再開始動手,而不是先準備一堆操作系統,資料庫原理,再去找工作,我當時本末倒置了,而且曲線救國,後來開始重點研究這些問題,我面試過30+ 招DBA的企業,以上問題基本都會問到,我後來閉著眼都能回答得很好,這些面試題遠遠比看一本書要縮減範圍很多,二八法則,20%的關鍵內容,80%是沒什麼卵用內容,抓住主要矛盾
3. 不懂改簡歷
畢業後從沒跳槽,總想著『誠實』,實際上是害怕被揭穿,於是我陷入了這麼一個困境,我在簡歷上寫沒有任何MySQL經驗,於是,我海投了非常多的簡歷,一個面試邀請都沒有,沒有MySQL工作,我就沒經驗,沒經驗,企業又不要我。
當時我本著學習的心,私信了幾個資料庫大V,跟他們說,我沒有任何資料庫經驗,我是自學的,我很想到你們公司學習,能不能給我一個機會,我錢可以不要,或者我把每月拿的工資都給你,讓我當個DBA助理或者DBA下手,除了一個大V說剛好我朋友招DBA,我幫你轉發簡歷以外,其他的沒有任何回應
其實就像溫國兵說的數據就是一個企業的心臟,救命稻草,沒有一個大企業會放心、隨隨便便把DBA的工作交給一個沒有經驗的人的。除非你確實很有本事,很有能耐,無所謂你是不是應屆畢業生之類的。
確實站在企業的角度講,要一個不要錢的實習生,要是把資料庫文件rm掉怎麼辦呢?企業寧可要1個15K的,也不要15個1K的, 然而那些基本資料庫操作我已經很熟練了,就因為沒有相關工作經驗而不要我,TMD,而DBA這個職位坑爹的地方在於,我去招聘網看,幾乎沒有初級DBA,實習DBA,DBA助理這樣的職位,而是直接來一個3年工作經驗的DBA..... 我擦,給不給我活路,難道3年是從天而降的嗎?又回到了應屆畢業生困境
我糾結是否要寫一些自己沒有過的MySQL管理經驗,我畢竟是要吃飯的人,於是就寫了一些假的項目,假的工作經驗,但是內心衝突很多,正如一個知乎問題簡歷要不要造假的回答說出了我當時的心聲
老老實實說根本就不會有面試!!!
我就是一直堅定著自己什麼樣就說什麼樣,投了幾天的簡歷,連個面試的機會都沒有!
我同學造假, 高薪走了!
但是真正讓我釋懷的是,我看到HR的招聘,寫著精通MySQL,精通Java,精通XX這樣字眼,3年工作經驗,我就想,HR不是睜眼說瞎話嗎?有多少程序員敢說自己到了精通的地步,還有一些薪水,加班,然後聯想到過去領導畫大餅,但沒有兌現。我心理就舒坦,既然企業的招聘和對待員工的方式都是不誠實的,如果我還用誠實的方式去回應,我一定會吃虧,於是我就開始改簡歷了,你要什麼經驗,我就寫什麼經驗,你要什麼技能,我就寫什麼技能(儘管我不會),但我刷刷刷得到各種面試機會,於是我可以採取第二步了,通過面試來學習
那種釋懷的感覺像,當前女友傷害過我,分手時很糾結,但最後還是很容易忘記了,你打我一拳,我對你忘記,就是扯平了。真正讓我念念不忘的,是一個很好的女孩子,我卻傷害她,現在每每想起都內疚。對於企業也是如此,你畫大餅,我改簡歷,我心理平衡了
當然並不是改簡歷得到面試機會就完事了,因為我沒有實踐經驗,所以出現過很多次被面試官問得啞口無言,比如「這個東西你到底做過沒做過?難道你們團隊沒有用XXX嗎?」 之類的,覺得非常丟臉挫敗,但還是忍受著,回去就填補缺漏,回去修改簡歷,填補缺漏,然後再進行下一次的面試,我一共面試了差不多30+,大概有5個offer左右,挑選了自己喜歡的一家去了
4.真實DBA的工作
真實的DBA工作,和面試的又不一樣,說句難聽點的,就是面試官問的題目,大多是網上的面試題,而不是實際工作的面試題,剛做DBA的時候,發現一些東西自己又是不懂的,不過沒關係,填補缺漏唄,這個比準備簡歷更苦逼,不過一旦懂了其實不過如此,反正人生就是缺啥不啥,我下面詳細介紹一下具體工作要用到的命令和技巧,內容雖然不多,但都是最實在的
1. 所有開發要建表,加索引,改表,開許可權,添加防火牆,都是通過DBA來操作的,統一管理,所以掌握好這些命令語句即可,其實就算不記得百度下就可以了,非常簡單,這是日常性的也是最頻繁的操作,偶爾運營會讓你導數據,比如說要6月份的XX數據,那就mysqldump唄
2.新業務來了,得搭建環境,企業一般用的是主主,也就是Master-Master,這個也很簡單,在主從基礎上反過來做一次即可,至於配置文件的參數,按照以前舊的伺服器配置即可,以後再慢慢研究每個參數的意義,網上一大堆主從搭建的步驟,在虛擬機搭建幾次就回了
3.資料庫要是掛了怎麼辦?要添加監控,一般開關實例,重啟實例不難吧,添加監控,要是空間快慢了就刪除點二進位日誌 purge binary logs to "日誌名"
4.至於備份恢復啊,本來公司就有備份,按照它的方式去備份即可,恢復的話其實很少用到,不過也就是全量恢復+增量恢復,網上例子一大堆
5.然後就難一點的,開發招你優化SQL語句,注意explain和百度一些加索引的技巧,上面4點對於一個菜鳥來說都是比較容易上手的,但SQL優化是比較難的,不過慢慢補就可以了
基本上就是我那個MySQL DBA職位的工作介紹了,我覺得DBA有一個比運維和開發都要好的地方,他是一個常規任務不多,但是爆發力強的職位,平常建表開許可權,能用你多少時間?運維要三班倒值班,開發的任務是寫不完的,相比之下,DBA是某個時間點特別忙,比如搭建新環境時候,做數據恢復的時候,比如出故障的時候,其他時候相比下來是閑的,這就讓你有機會去學習新的東西
我覺得最一個程序員最糟糕的狀態就是每天做同樣的事情,不斷的重複,這樣沒進步,一定要抽出點時間,不斷提升自己,不斷學習,剛好DBA這個職位可以做到,建一個賬戶就敲4,5行命令,如果在web界面滑鼠點點點是不是方便很多,於是我開始學習python了
關於學習方法,對於新人來說,看書不是一種好的方式,因為信息量太大,最好是看視頻,一般開課的都是比較有經驗的人,你看著一個資深DBA,在視頻上一步步給你裝資料庫,一辺裝還一辺給你講解,告訴你要注意的地方,如果在生活中,你能夠找到這樣的機會嗎?如果報錯了,還能讓你看他怎麼排查錯誤。話說回來,看書也是一種知識的補充,但無論是看文檔,看書,看視頻,都要記住一樣東西,二八法則,真正有用的東西,只佔了20%,剔除掉無用的80%,所以一定要,挑重點,挑重點,挑重點,挑重點,挑重點,挑重點,挑重點,挑重點,挑重點,挑重點,不求甚解,熟練使用之前,不要去碰原理性的東西,否則苦海無邊,你配置個主從複製的ip授權,要是也想往下鑽,看《計算機網路》什麼的,牛年馬月你才能當上DBA
希望能給一些DBA新人一些啟發
————更新 2017.01.06
開始以為知乎er都會因為我寫假簡歷而鄙視我反對我,卻收到幾個贊同,那我就繼續更新吧,上面寫的是一些總結,下面就寫一些我工作情況
面試吹牛加運氣,我進入了一家很不錯的公司,領導按照面試時的期望要求我,實際上遠遠超出了我的水平,在以前的司,我是在windows平台寫SQL的,很少有機會摸linux,腳本能力也很弱
一個任務,領導給我半天時間,我半天過了,沒搞出來,他問我,我說還沒行,一天後他又問,兩天後他又問…我還是搞不出來。一個星期不到,我就被領導約談話——我擦,你到底行不行,你他媽不像有幾年經驗的…
當時非常慌張,以為被揭穿了,很羞愧,領導很火大,但還是委婉的跟我說,我要改變工作態度,不能懶懶散散,公司不養做不了事的人。
雖然領導懷疑,但其實他還是不知道我之前沒做過DBA,把我不能做事歸因為我態度問題,因為面試時他知道我上家公司很輕鬆,每天閑著。我也說自己態度沒轉變過來,以後會端正態度,其實根本不是態度問題,而是能力問題,我態度好得不得了,因為DBA工作來之不易啊
當時一個想法就是,還是踏踏實實積累資料庫經驗,再做DBA,否則被人揭穿後再踢走多悲劇啊,不過轉念也想,要是真的踢走我,我這份經驗也是很寶貴的,因為知道了DBA是幹嘛的,回去加強一下弱項就可以在下家的面試更好了,何況我工資上萬了,能呆一天是一天。但我找下家公司時,辭職理由是被辭退好像很難解釋…
所以那三個月過得非常煎熬,擔心自己不能轉正,但現在回顧當初確實有點多慮了,其中一個原因,領導如果辭退我,就是向領導的領導說明他我看錯人,考核不出來一個水貨,眼光不行,自己打臉。另外一個原因就是熟悉一個生產的環境是需要時間,重新招一個新人,又得重新熟悉,在熟悉期間其實是很少輸出的,時間成本問題了。所以只要我不是完全做不了事情,領導是不會炒我的
我估計當時在領導眼裡是40到50分左右,但這也有個好處就是領導覺得我很差,對我的期望降低了,也不要求我做那些超出我水平的任務了,挺開心的
我還是能幹點DBA基本的活,比如建表授權清空間導數據這些,因為放假那段時間有看那本《資料庫運維》的書,還有就是公司剛好有資料庫操作文檔,其實有了文檔,很多東西都好辦,常用的命令都是那幾個,以後我會整理出來
但當時連慢查詢都不太會優化
先這樣,下次再更新同樣我也是做了好幾年開發之後才轉行做DBA的,我認為做一個好的DBA,除了相應的技術外,個人的性格對這個職業的發展有很大影響。DBA通常要面臨問題很多時候比一般的技術人員更多,更煩,更緊急,工作過程中的壓力更大。你需要抗得住壓力,靜得下心情,耐得住寂寞,受得起挑戰。你需要積累豐富的專業知識來解決隨時出現的各種問題;需要鍛煉老練的溝通技巧來跟程序員討價還價,因為有時候優化資料庫意味著需要程序員改變他們的習慣或者干更多的工作,需要隨時保持艱苦的學習來接受各種新技術,否則就會落伍於社會。
在ITPUB上有一篇精華帖,總結DBA該如何找到第一份工作
早年DBA都是從其他職位轉型而來,因為那時DBA是稀缺職位,d.c.b.a曾經說過,那時候你只要會安裝Oracle,那麼你就算是一個DBA。隨著行業的發展,DBA也趨於正規化,有了更多的工作機會,然而對人的要求也更高了。
樓上說的對,DBA要求的知識非常多,除了資料庫的知識外,還要求操作系統、網路、腳本、存儲等各方面的知識,因為競爭激烈,所以越是優秀的人越容易被賞識,相較開發,DBA的崗位算是少的,所以就體現出要求多且崗位少的情況。
首先我想說,如果你確定你想要走DBA這條路,那麼專業知識不可少。然後去看看有些公司是願意培養新人DBA的,有這樣的機會就去試試。如果實在沒有而其他公司的DBA崗位又進不去,可以試試和DBA相關的一些崗位,例如系統工程師(SA),因為SA的工作範疇和DBA是有一定交集的,一般來說也都在一起工作,平日可以補DBA的知識從而轉型
我只是名即將畢業的大學生,雖然我也找到了第一份DBA工作,但也全憑運氣,總歸一句,要有紮實的專業基礎,然後才有底氣去面對面試官,加油……做一個DBA並不難,資料庫只是一個工具,關鍵是需要確定,是否真的適合做一個DBA. 即使DBA,也有產品DBA,開發DBA之分.
說說我吧。目前還是大四學生,已經找到一份DBA工作。
由於很早以前就想從事DBA的工作,因此,很早就開始學習資料庫了,最開始學的是oracle,把oracle官方文檔中的concept看了一下(當然作為oracle DBA,這個文檔必須得反覆看),還有tom那本書也是經典,當然,看書的時候要多做實驗,理論聯繫實際嘛,多上itpub看問題。後來把ocp的考試教材認真看了遍,把題庫裡邊的題目仔細看了,就去把ocp考了(雖然這考試背題庫很好過,但是畢竟看重的是學習的過程,其中的知識點很多,算是對學習的檢驗吧)。
ps. DBA需要的知識很多,不僅僅是資料庫方面的知識,基本上,計算機專業的各方各面都要懂。
最後,理論聯繫實踐很重要,多做實驗。
我oracle開發4年,想轉DBA。面試了兩家公司,都想讓我進去做開發,可是我鐵了心想做管理。我們公司伺服器都在各省現場,公司一個專職DBA所有的都搞定。我跟領導申請要做管理,結果我要跟的那個DBA又轉到深圳去了,悲催。所以平時也只是自己學習、測試、總結,在現場伺服器上搗鼓的經驗比較少,也就是平時遠程在linux或unix伺服器裝個資料庫、擴個lv、建個表空間、優化下SQL這些。為人勤奮踏實,做事用心,有強烈願望想做DBA,自學能力較好,現在可能不會但是我可以學,這樣的有公司願意要嗎?
畢業就做DBA,
1.資料庫基礎知識學得算還好
2.女生比較細心
3.看運氣和機遇
4.才開始不要太看重工資,要看在公司能學到些什麼,能養活自己 就好。
祝好運。
我想做mysql dba,之前在工廠里做IT運維的,就是網管,雖然年齡有點大,但是學習的心還是很足的,我相信我可以找到第一份DBA的工作。
我是從系統管理員轉來的,
卻是dba 的就業門檻很高, 那個老闆也不會輕易把最核心的東西,交給一個外人打理.
很多時候,都是從公司內部培養.看樓上所有,感覺很勵志,一隻考研狗默默路過
開發基礎是必須的。 打好資料庫基礎,及一些大型項目解決方案
受益匪淺呢~~
推薦閱讀:
※如何選擇Web 前端和後端的技術發展方向?
※如何申請勞動仲裁?
※Android開發還是cocos2dx遊戲開發呢?
※國企和央企有什麼區別?
※*-造價這個行業真的好?