主要職責
狹義
通常意義上的數據庫管理員是一個負責管理和維護數據庫服務器的人,數據庫管理員負責全面管理和控制數據庫系統,包括數據庫的
安裝、監控、備份、恢復等基本工做。數據庫管理員的主要職責有如下幾個方面:
設計數據庫設計,包括字段、表和關鍵字段;
資源在輔助存儲設備上是怎樣使用的,怎樣增長和刪除文件及記錄,以及怎樣發現和補救損失。
2.
監視監控數據庫的警告日誌,按期作備份刪除。監控數據庫的平常會話狀況。
碎片、剩餘表空間監控,及時瞭解表空間的擴展狀況、以及剩餘空間分佈狀況。監視對象的修改。按期列出全部變化的對象安裝和升級數據庫服務器(如Oracle、MicrosoftSQLserver),以及應用程序工具。
數據庫設計系統存儲方案,並制定將來的存儲需求計劃。
制定數據庫備份計劃,災難出現時對數據庫信息進行恢復。維護適當介質上的存檔或者備份數據。備份和恢復數據庫。
聯繫數據庫系統的生產廠商,跟蹤技術信息。
3.備份對數據庫的備份監控和管理數據庫的備份相當重要,對數據庫的備份策略要根據實際要求進行更改,數據的平常備份狀況進行監控。
4.修改密碼:規範數據庫用戶的管理按期對管理員等重要用戶密碼進行修改。對於每個項目,應該創建一個用戶。DBA應該和相應的項目管理人員或者是程序員溝通,
肯定怎樣創建相應的數據庫底層模型,最後由DBA統一管理,創建和維護。任何數據庫對象的更改,應該由DBA根據需求來操做。
5.SQL語句:對SQL語句的書寫規範的要求一個SQL語句,若是寫得不理想,對數據庫的影響是很大的。因此,每個程序員或相應的工做人員在寫相應的SQL語句時,應該嚴格按照
《SQL書寫規範》一文,最後要有DBA檢查才能夠正式運行。
6.最終用戶服務和協調:數據庫管理員規定用戶訪問權限和爲不一樣用戶組分配資源。若是不一樣用戶之間互相抵觸,數據庫管理員應該可以協調用戶以最優化安排。
7.數據庫安全:數據庫管理員可以爲不一樣的數據庫管理系統用戶規定不一樣的訪問權限,以保護數據庫不被未經受權的訪問和破壞。例如,容許一類用戶只能檢索數據,而另外一類用戶可能擁有更新數據和刪除記錄的權限。
廣義
可是廣義上的DBA職責比這個大得多,須要覆蓋產品
從需求設計、測試到交付上線的整個生命週期,在此過程當中不只要負責數據庫管理系統的
搭建和運維,更要參與到前期的數據庫設計,
中期的數據庫測試和後期的數據庫容量管理和性能優化。
對於初創公司,DBA的工做可能由運維工程師來兼任,
從申請域名開始,到服務器上架,配置網絡設備,部署操做系統,安裝數據庫,設計和部署監控,防止漏洞和攻擊等等。而大型公司對DBA工做的要求愈來愈高,如下從各個維度來看DBA工做的職責。
產品生命週期維度
DBA負責了業務數據庫從設計、測試到部署交付的全生命週期管理
,各個階段的職責包括:
1. 產品發佈前
這個階段DBA的職責是數據庫准入,主要包括:
1)
產品的業務熟悉;
2)
產品數據庫設計評審:包括
架構的合理性評估,存儲容量和性能是否知足需求,是否須要緩存,是否須要冗餘備份等,同時須要提供
數據庫schema設計的合理性建議以使產品可以知足上線發佈並穩定運行的基本要求;
3)
資源評估,包括所需的
服務器資源、網絡資源以及資源的分佈等,
同時把關產品對資源預算申請的合理性,控制服務成本;
4)
資源就位,
將申請的服務器及基礎環境/域名準備就位。
2. 產品發佈
這個階段DBA負責數據庫發佈的具體工做,將具體的數據庫安裝部署和初始化完成後並對外提供服務。對於已在線數據庫的升級也屬於發佈範疇,這個時候的產品發佈通常要保障在線發佈,在不中斷對外服務的狀況下完成數據庫的升級。對於大型複雜的變動也存在停止服務發佈完成後再從新提供服務的狀況,但這種狀況須要DBA經過儘量的技術手段來避免。
3. 產品運行維護
這個階段的工做重點包括:
1)
監控:對數據庫服務運行的狀態進行實時的監控,包括
數據庫會話、數據庫日誌、數據文件碎片、表空間監控、用戶訪問監控等,隨時發現數據庫服務的運行異常和資源消耗狀況;輸出重要的平常數據庫服務運行報表以評估數據庫服務總體運行情況,發現數據庫隱患;
2)
備份:制定和實施數據庫備份計劃,災難出現時對數據庫信息進行恢復,維護適當介質上的存檔或者備份數據。對數據庫的備份策略要根據實際要求進行更改,數據的平常備份狀況進行監控。
3)
安全審計:爲不一樣的數據庫管理系統用戶規定不一樣的訪問權限,以保護數據庫不被未經受權的訪問和破壞。例如,容許一類用戶只能檢索數據,而另外一類用戶可能擁有更新數據和刪除記錄的權限。
4)
故障處理:對數據庫服務出現的任何異常進行及時處理,儘量避免問題的擴大化甚至停止服務。這以前DBA須要針對各種服務異常,如機房/網絡故障、程序bug等問題制定處理的預案,問題出現時能夠自動或手動執行預案達到止損的目的。
5)
容量管理:包括數據庫規模擴張後的
資源評估、擴容、機房遷移、流量調度等規劃和具體實施。
4.
數據庫性能優化
產品對外提供服務最重要的一點是用戶體驗,用戶體驗中很是重要的是產品的
可用性和響應速度。而如何用最合理的資源支持產品提供高可用和高速度的用戶體驗,這也是DBA的重要職責。
技術分工
產品的整個生命週期裏數據庫管理員的職責重要而普遍,這催生了各個縱向的運維技術方向,凡是關係到數據庫
質量、效率、成本、安全等方面的工做,及涉及到的技術、組件,主要包括:
-
數據庫監控技術:包括
監控平臺的研發、應用,
服務監控準確性、實時性、全面性的保障。
-
數據庫故障管理:包括服務的故障預案設計,預案的
自動化執行,故障的總結並反饋到產品/系統的設計層面進行優化以提升產品的穩定性。
-
數據庫容量管理:測量服務的容量,規劃服務的機房建設,擴容、遷移等工做。
-
數據庫性能優化:從各個方向,包括
SQL優化、參數優化、應用優化、客戶端優化等,提升數據庫的性能和響應速度,改善用戶體驗。
-
數據庫
安全保障:包括數據庫的
訪問安全、防攻擊、權限控制等。
-
數據庫自動部署:部署平臺/工具的研發,及平臺/工具的使用,作到安全、高效的發佈服務。
-
數據庫集羣管理:包括數據庫的
服務器管理、分佈式集羣管理等。
-
數據庫模型設計:包括
數據庫邏輯和物理模型的設計,如何實現
性能最優,架構可擴展,服務可運維等。
能力要求
數據庫管理員以技術爲基礎,經過技術保障數據庫提供更高質量的服務。DBA工做的職責及在業務中的位置決定了DBA須要具有更加廣博的知識和深刻的技術能力。在數據庫環境的管理與維護中,技術任務可歸結成許多不一樣的分類。下面列出了一名DBA應掌握的一些技術(排名不分前後)。
1.理解數據備份/恢復與災難恢復
恢復已損壞的數據庫是每個DBA應掌握的最重要的技能。DBA須要徹底理解數據庫全部可能的備份與恢復方法,以及不一樣備份方法與不一樣恢復策略的對應關係。此外,DBA還須要與業務部門合做,一塊兒確認業務需求,明確用戶可以容忍的數據丟失底線。此外,業務用戶還須要肯定在系統故障狀況下,他們的業務可以維持多長時間。理解這些需求能夠幫助DBA開發出一個知足業務用戶要求的備份/恢復方法。一個優秀的DBA要按期測試備份與恢復流程,保證他們有能力恢復業務數據,知足企業所規定的業務數據丟失與恢復要求。
2.工具集的使用
所謂工具集,指是的他們要有一組用於執行不一樣DBA任務的腳本。這個工具集應該包含不一樣的小代碼片斷,它們能夠快速診斷問題或執行一個特定的任務。這些工具腳本應該按DBA的活動類型歸類,如備份、索引維護、性能優化、容量管理等。因爲老是會執行新任務、發現新問題或找到其餘人開發的好用腳本,所以一個優秀的DBA會不斷地給這個工具集增長新腳本。此外,他還應該瞭解網上哪裏可以找到一些免費的工具和腳本。一個好的DBA知道何時能夠利用其餘人編寫的腳本,從而節省本身的時間和改進本身的工具集。
3.
知道如何快速尋找答案
數據庫
天天會面臨各類各樣故障的挑戰,從硬件到網絡,從性能壓力到程序bug,DBA都要從容應對,一一排除。
即便是數據庫大牛,也不多是無所不知的,
所以每一個DBA一方面須要不斷修煉本身,積累操做系統、網絡、硬件、存儲系統、分佈式計算等理論基礎,
另外一方面還要有快速尋找新問題解決方法的能力。若是一個數據庫實例不能按預期方式運轉,那麼快速尋找新問題的解決方法也是一個重要能力。
一個好的DBA知道如何快速地在網上查找一個未知問題的解決方法。此外,他們也可能已經知道了一些很是不錯的網站,也知道業界專家會提供一些好建議,同時知道何時應該忽略一些很差的建議。你可能想象不到,確實有一些建議不值得參考。
4.知道如何監控和優化數據庫性能
對於任何數據庫產品,性能都尤爲重要,它會直接影響產品的響應速度和用戶體驗。對於一個DBA來講,性能優化通常須要佔用50%的工做時間,所以DBA須要知道如何監控和優化數據性能。
以SQL Server舉例,性能是一個關鍵的問題,所以DBA須要知道如何修復故障和監控性能問題。有許多第三方性能監控工具能夠幫助DBA優化性能。若是DBA只使用第三方工具,而不會使用SQL Server自帶的原生工具來監控性能,那麼相信很快就會出現問題。雖然使用第三方工具來監控性能也很不錯,可是DBA必定要理解SQL自帶的一些原生工具,如
SQL Server Profiler、Database Engine Tuning Advisor、Dynamic ManagementViews、系統/擴展的存儲過程、Extended Events等。許多第三方工具實際上在使用這些底層的原生工具。所以,理解這些自帶的原生工具將有利於加強DBA使用第三方工具的經驗。
5.研究新版本
在技術領域中,沒有什麼是一成不變的。每隔兩三年,主流數據庫廠商都會發佈一個大版本的更新。DBA應該緊跟新版本所做的修改,它們可能有許多變化方法,最好的方法是早晚介入這個過程。測試版開放後立刻下載和安裝,儘快掌握第一手使用經驗。一名好的DBA老是走在學習排頭兵,老是會第一時間安裝和測試新版本。這樣他們就能夠儘早理解新特性,而後提出一些合理的新建議,幫助組織更好地利用新版本數據庫。
6.
理解代碼最佳實踐方法
DBA應該瞭解如何編寫高效的代碼。有許多糟糕的編碼實踐方法會致使拙劣的性能。一名好的DBA要可以理解和識別這些糟糕的編碼實踐方法,知道如何修改這些爛代碼,讓它們變成高效代碼。此外,他們還要記錄下寫代碼的最佳實踐方法,而且將這些實踐方法分享給其餘人。
7.持續不斷地學習
數據庫及其組件涉及面很是廣。DBA很難理解一個技術的方方面面。DBA須要持續學習如何管理數據庫。這個學習過程有不少方法。其中之一就是參加正式培訓。可是,並不是人人都有這樣充裕的事件和金錢,也並不是人人都可以放下手頭工做專門出去參加正式的培訓。可是,還有許多其餘方法能夠得到培訓,並且大多數仍是免費的。一名好的DBA必定要訂閱一些按期發佈數據庫新技巧和新文章的社區網站。此外,他還應該加入一些用戶組織,能夠在週末參加一些當地的免費沙龍活動。
8.數據庫安全性
安全性是一個熱門話題。DBA應該徹底掌握如何實現數據庫的安全訪問。他們應該理解操做系統身份驗證和數據庫身份驗證的區別,以及它們各自的使用場合。他們應該理解如何使用數據庫角色來管理不一樣類型用戶的安全配置。他們應該理解鏈接數據庫的端口與協議。此外,他們還應該理解如何加密整個數據庫,或者加密一個數據庫中一個表的某一個字段,同時理解關於加密數據的各類問題。
9.數據庫設計
決定數據庫性能的一個關鍵問題是數據庫設計。DBA須要理解關於數據庫設計的各個方面。他們要可以理解設計好壞的區別。他們須要理解爲何使用正確的
外鍵約束、主鍵、檢查約束和使用數據類型可以保持
數據庫的數據完整性和實現高效的數據查詢與更新。
10.
索引設計
數據庫索引是
提升應用程序檢索和更新數據速度的重要環節。DBA須要知道索引的工做原理。他們應該知道
聚簇索引和非聚簇索引的區別,知道這些索引的物理存儲方式。DBA應該知道如何在執行計劃中使用這些索引。他們應該理解如何找到索引的使用統計、理解索引碎片及如何發現丟失的索引。他們應該知道如何維護索引,以及索引統計信息對於查詢引擎的重要做用。
11.容量監控與規劃
數據庫每每要使用大量的資源,包括
CPU、內存、I/O及磁盤空間。DBA應該理解如何監控數據庫所須要的不一樣主機資源的用量。他們應該可以理解這些資源在不一樣時間的使用狀況,以及利用歷史使用數據來規劃將來的容量需求。在監控過程當中,DBA應該可以預見到容量規劃會在未來何時出現問題,而後採起必要的措施保持數據庫不會由於容量限制而出現中斷。
12.數據庫許可證
不一樣的產品有許多不一樣的許可證受權方式。並且,同一款產品自己又有許多不一樣的版本。DBA應該理解所負責的數據庫版本的不一樣受權模式。他們應該可以提供指導如何經過合理購買受權來減小數據庫總擁有成本,以及如何合理利用受權方法來下降將來版本的升級成本。
13.儘量實現自動化
DBA天天都須要執行許多的平常任務。其中一些任務須要天天執行,而另外一些則每週、每個月或每一年執行。一名好的DBA須要理解如何高效地安排本身的時間。其中一種方法是創建工做流程,這些平常任務的自動執行。經過實現平常任務的自動化執行,DBA就能夠用更多的時間去關注於數據庫環境管理中遇到的嚴重問題。
職業性格
DBA須要跟各類人員打交道,這些人員多是銷售商、用戶、開發人員或者管理人員。這說明:DBA必須具備下面的個性特色:
-
自信心:足夠的自信心可以幫助DBA在重要緊急時刻果斷下決定,而不是不知所措地看着事故發生
-
好奇心:幾乎全部的數據庫系統都在不停地更新。但並非全部的更新都有技術文檔。對於好的DBA來講,好奇心是必需的。沒有好奇心和求知慾的DBA老是等待有人告訴他們答案。而一個求知慾強的DBA將安裝最新版本的數據庫系統,並當即開始搜尋那些哪怕是細微的功能和性能上的差別和加強,從而改進本身的工做。應試時一個必然問及的問題是:你手頭有哪些參考資料?你如何使用它們?毫無疑問,若是你只回答了數據庫的文檔,或者你甚至沒有讀過他們,你的"股票市值"將大大降低。好奇心會驅使DBA們理解數據字典(Data Dictionary)、管理工具(Tools)或者其餘支持包(Packages)。
-
堅韌的意志力和沉着的心態:DBA經常會碰到棘手的問題。尋找答案是一個須要堅韌意志力、能夠經受摔打的個性特色。同時面對緊急狀況時要能處亂不驚,保持平和的心態冷靜處理問題。
-
自我驅動:自我驅動對每一個人都是很重要的,對DBA尤爲如此。DBA要能想辦法使問題出現,而不是等待問題的出現。自驅力強的DBA經常設法取得或者本身寫一些必要的腳本(Script)來監控包括數據
表大小(Table Size)、表空間使用(Tablespace Usage)等項目,這些項目若是被忽視,他們將遇到麻煩。應試的時候DBA們經常被問及在PL/SQL、SQL或者SQL*PLUS方面的經驗,這些問題將把你從歷來沒有編寫過本身須要的腳本的那些DBA們區分開。
-
良好的溝通能力、具備團隊合做精神:DBA的工做須要跨部門、跨工種接觸不少工程師,善於溝通、團隊協做可以起到良好做用。不少時候,開發者、管理者、用戶,他們會提出毫無道理的需求,DBA們須要老練地引導、修正它們的要求,說服他們。
-
工做認真細緻,勤于思考:最後說說注意細節,這種性格傾向很是重要。注意細節的DBA們衣着整潔,有本身的日程安排,在應試前對應聘的單位作過調查。注意細節的DBA們深刻了解數據庫的內核,並能理解視圖、表之間的關係。
-
時間管理能力:數據庫運維的工做很是繁瑣,所以須要將碎片化的時間充分利用起來。
職業等級
DBA的等級並非很嚴格的。按照對數據庫的掌握狀況,我簡單地分紅三個等級:
初級Primary、中級Intermediate和高級Senior。
初級DBA又稱爲DBBS,是英文Database Baby Sitter的縮寫。初級DBA經常是兼職的,他們每每同時是程序員或者兼任其餘的工做。初級DBA每每把我的簡歷寫得很棒,參與了不少和數據庫有關的項目或工做。可是,這些項目或者工做每每是:第三方軟件供應商已經安裝並配置了數據庫,他們只作一些監控的工做。他們能處理一些簡單的問題,但大多數時候他們嚮應用軟件供應商求救。初級DBA更喜歡圖形化的數據庫管理或者監控工具,他們喜歡Access這樣的桌面數據庫簡單易用,並把這些小型數據庫的經驗簡單地應用到大型數據庫相關的工做中。
初級DBA是最好區分的。而中級DBA和高級DBA就不太好區分。他們的差異在於經驗的不一樣和個性特色、能力方面的差別。中級DBA比較多,他們能夠勝任高級DBA的大部分工做,包括:
一、數據庫安裝;
二、數據庫配置和管理;
三、權限設置和安全管理;
四、監控和性能調節;
五、備份和恢復;
六、解決通常的問題;
中級DBA每每從業一年左右,熟悉某種操做系統環境下的數據庫。由於對中級DBA來說,Windows NT和Unix是有很大差異的。中級DBA對SQL比較熟悉,他們本身購買了幾本數據庫方面的書籍,並深刻鑽研。中級DBA每每同時兼任數據庫程序員,他們的工做對性能、穩定性、安全性的追求基本上不是很高,每每配合高級DBA作一些例行工做。
高級DBA在國內是很是少的。他們可以熟練閱讀數據庫方面的英文資料,而且都熟悉不少種操做平臺下的幾種大型數據庫。他們知道各類不一樣數據庫在不一樣環境下的優點和劣勢,並能在數據庫平臺和數據庫環境的選擇方面作出決策。他們通常通曉系統架構和數據庫設計,並能對數據庫進行各類級別的優化。高級DBA通常都配有助手,他們更偏向作決策和計劃。高級DBA每每在銀行業、保險業、在線交易等對穩定性、安全性、性能都要求比較高的關鍵業務處理領域大顯身手。
不少時候,是否取得數據庫專家認證證書並非很重要。不少數據庫廠商的培訓只要你去了都會得到證書。有不少的公司提供商業化的培訓,他們的服務質量也有好有劣。因此證書並非特別地有意義。
行業競爭力
1. 薪酬競爭力
1)影響因素:經驗和能力決定DBA的等級,熟悉的數據庫系統決定DBA的領域,個性特色和潛力決定你的升值空間。
2)縱向對比:DBA做爲專項領域的高質量人才,薪酬競爭力較高,市場需求旺盛,尤爲是
中高階DBA,每每緊缺程度高於軟件研發工程師。
3)第三方薪酬調查報告,僅供參考:
《2013年數據庫工程師薪酬調查報告
》
《Database Administrator Salary
》
2. 市場需求
1)數據庫運維行業的市場價值:參考ITOM(IT Operation Management) 2013年的市場規模是190億美金
2)人員需求:因爲業務規模較大,中大型公司比較緊缺中高階DBA,而初創公司因爲其新生的業務特色,比較緊缺初級和中級DBA。
職業前景
數據庫做爲整個系統的一部分,它的表現直接受服務器、操做系統、存儲、網絡、應用程序中SQL語句的質量、數據庫設計的質量、以及其它諸多因素的影響,這些因素加在一塊兒很是複雜,經驗起着很是重要的做用。所以一個好的DBA除了知識做爲基礎,經驗的多寡、見識的薄廣,每每決定了是否合格與優秀。
優秀的DBA不只關心本身運維的數據庫系統的原理和發展,並且緊跟業界數據庫前沿技術,並關注數據庫領域的頂級會議。其中包括國際著名的數據庫三大會議SIGMOD、VLDB、ICDE,還有知名數據庫公司Percona主辦的Percona Live和Oracle主辦的Open World,以及國內知名的DBA盛會中國數據庫技術大會(DTCC)等。
從另一個角度說,DBA工做領域對實踐經驗和獨立工做能力要求較高,沒有通過大量的動手實踐是很難勝任DBA相關工做的
。正是因爲上述緣由,其職場現狀是DBA職位不易進入,而用人單位很難找到合適的從業人員,人員缺口很是大。
也正是因爲上述緣由,隨着工做年限的增加,
DBA的經驗在增長,就像醫生同樣,其價值會愈來愈高,能夠逐步成長爲資深DBA、系統架構師、信息主管(CIO)等等,而不會出現許多軟件開發從業人員在必定年齡後面臨的轉行問題。
另外,從職業前景看,從事DBA有着更多的職場機遇
。通常而言,系統中的軟硬件都是IBM、HP、Oracle等業界一流廠商提供的,在與廠商談判、合做、測試、實施、維護、優化等等過程當中,會產生許多極佳的職場機遇,這一點是從事開發工做很難比擬的。
從DBA的工資統計數據看,隨着工做經驗的積累,DBA工資的增加幅度會遠大於其它的計算機方向。
從工做的穩定性上看,系統的複雜性和經驗的重要性已經決定了DBA職位的不可替代性。
從知識的積累、更新和替代角度看,數據庫的根基始終沒變,變的是不斷加強的功能和不斷擴展的應用範圍。所以,在不一樣時期所學的知識和得到的經驗是疊加和累積的關係。
所以,
DBA職業是一個高挑戰和高回報的職業,有必定能力的和聰明的技術人員應該挑戰自我,進入這個被二十多年事實不斷證實的愈來愈有前景的職業
。