說說DBA職責和目標

數據庫管理員(Database Administrator,簡稱DBA),是從事管理和維護數據庫管理系統(DBMS)的相關工做人員的統稱,他屬於運維工程師的一個分支,主要負責業務數據庫從設計、測試到部署交付的全生命週期管理。html

在大公司DBA一般分爲高級DBA、中級DBA、初級DBA,他們的職責是不一樣的。mysql

高級DBA:他們可以熟練閱讀數據庫方面的英文資料,而且都熟悉不少種操做平臺下的幾種大型數據庫。他們知道各類不一樣數據庫在不一樣環境下的優點和劣勢,並能在數據庫平臺和數據庫環境的選擇方面作出決策。他們通常通曉系統架構和數據庫設計,並能對數據庫進行各類級別的優化。高級DBA通常都配有助手,他們更偏向作決策和計劃。高級DBA每每在銀行業、保險業、在線交易等對穩定性、安全性、性能都要求比較高的關鍵業務處理領域大顯身手。ios

 

中級DBA:從業一年左右,熟悉某種操做系統環境下的數據庫,好比window server 2008或者目前經常使用的Linux(Ubuntu、Debian、CentOS)。由於對中級DBA來說,Windows NT和Unix是有很大差異的。中級DBA對SQL比較熟悉,他們本身購買了幾本數據庫方面的書籍,並深刻鑽研。中級DBA每每同時兼任數據庫程序員,他們的工做對性能、穩定性、安全性的追求基本上不是很高,每每配合高級DBA作一些例行工做。程序員

 

初級DBA:sql

初級DBA又稱爲DBBS,是英文Database Baby Sitter的縮寫。初級DBA經常是兼職的,他們每每同時是程序員或者兼任其餘的工做。初級DBA每每參與了不少和數據庫有關的項目或工做。可是,這些項目或者工做每每是:第三方軟件供應商已經安裝並配置了數據庫,他們只作一些監控的工做。他們能處理一些簡單的問題,但大多數時候他們嚮應用軟件供應商求救。初級DBA更喜歡圖形化的數據庫管理或者監控工具,他們喜歡Access這樣的桌面數據庫簡單易用,並把這些小型數據庫的經驗簡單地應用到大型數據庫相關的工做中。數據庫

初級DBA是最好區分的。而中級DBA和高級DBA就不太好區分。他們的差異在於經驗的不一樣和個性特色、能力方面的差別。中級DBA比較多,他們能夠勝任高級DBA的大部分工做,包括:
一、數據庫安裝;
二、數據庫配置和管理;
三、權限設置和安全管理;
四、監控和性能調節;
五、備份和恢復;
六、解決通常的問題;

 

今天我主要說說我公司的DBA。我所在的公司是一個初創型公司,自建立到如今已經有一年了,我並非公司的第一批員工。初創公司的好處是最鍛鍊人,最能成長一我的。可是弊端也很多如下我從這麼幾個方面談談初創公司的弊端?安全

(1)升職加薪沒有一個完善的制度,徹底是由所在部門的經理或者其餘高層人士拍板決定,很長時間可能會停留在固定的薪資而不變;服務器

(2)沒有公積金,初創公司通常資金有限能最大程度減小成本就減小成本(固然了,也不排除有部分公司會有,可是就我目前認識的朋友中,有好幾個在創業公司,基本上是沒有公積金的,有的是等兩年到三年相關的有穩定的收入,而後纔給員工公積金;架構

(3)初創公司沒有固定的收入來源,除了老闆注入的資金外,基本就沒有了,除了中途來一個投資人,注入資金,否則很長一段時間是由老闆本身墊付工資及其五險等等;框架

(4)解僱的風險,通常狀況下,初創公司不多會跟員工籤合同,籤合同是一件很麻煩的事情,不籤合同能夠適當下降風險;

(5)開發流程不是很是合理和人員調配不是十分合理,每每一人兼任多個崗位,一旦溝通方面有問題,可能使項目開發進度延遲;

(6)加班是沒有工資的(不僅僅是初創公司,不少中小型公司都是這樣的);

不過好的方面也是十分突出的,這裏就說一點,那就是對於我的的各方面能力提高是很是有幫助的,好比就我我的,從開發到運維,再到測試,再到DBA。有的時候還得兼任下產品宣傳工做。有時還得出差調調設備之類的。不光光鍛鍊一我的的學習能力,同時鍛鍊一我的的溝通能力及其心理素質抗壓能力等。

 

下面進入正題:

做爲一名DBA以如今我所在的公司爲例,我打算應該統一下規範,而不是各打各的想怎麼改就怎麼改。想怎麼改就怎麼改的痛苦我已經體會過一次了,不想再體會了。

如下是個人想法和將要實踐的:

做爲一名DBA,他的職責應該要作到這些:

(1)安裝和升級數據庫服務器,以及應用程序工具;

(2)數據庫設計系統存儲方案,並制定將來的存儲需求計劃;

(3)一旦開發人員設計了一個應用,就須要DBA來建立數據庫存儲結構,建立數據庫對象;

(4)根據開發人員的反饋信息,必要的時候,修改數據庫的結構;
(5)登記數據庫的用戶,維護數據庫的安全性

(6)控制和監控用戶對數據庫的存取訪問;

(7)監控和優化數據庫的性能;

(8)保證數據庫的使用符合知識產權相關法規;

(9)維護適當介質上的存檔或者備份數據;

(10)制定數據庫備份計劃,災難出現時對數據庫信息進行恢復;

針對上述說的我進行細化:

針對(1),主要考慮數據庫更新升級,性能上的提高或者是bug修補,做爲dba須要關注數據庫技術前沿,目前應用比較廣的是MySQL,例如阿里的淘寶使用的就是MySQL。
關於安裝或升級可參考例子:https://www.cnblogs.com/sunofsummer/p/6381206.html。

針對(2),本着業務可擴展性原則,做爲DBA必需要熟悉整個業務架構和業務邏輯,以CSDN爲例,最初的CSDN是沒有多樣性的功能,例如學院、招聘等等。並且就是沒有廣大的用戶羣體,當用戶羣體增加到必定的程度時,由一百萬到一千萬時,數據庫的設計尤爲重要,不只僅須要主從複製,以保證數據的一致性,還得分庫分表。

針對(3),不少小公司是沒有DBA的,通常狀況由開發組長進行表的設計,同時其組員也能夠參與設計甚至自主設計。這樣存在一個重大的弊端是,當人數過多時,你改這個字段,我改那個字段,你新增這個表,我新增或者刪除另一個表,當業務愈發複雜,同時表之間關係耦合性強,那麼對於整個系統而言是一次毀滅性的打擊。最理想的狀態是,開發人員與業務人員溝通好,並編寫一個業務需求設計文檔和表設計文檔,而後由DBA進行審覈,DBA有時須要同業務人員及開發人員溝通。

針對(4)需求變更是常有的事情,需求變更一般伴隨着代碼的修改,代碼的修改通常涉及實體、接口、sql(這裏以ssm框架實現的項目爲例)。實體對應表結構,接口對應着業務邏輯,sql是操做數據庫的專用語言。

針對(5),數據庫的安全性尤爲重要相當重要,前段時間的華住就是一個例子。通常鏈接數據庫有這麼幾個要素?
a.創建鏈接:
b.加載驅動;
c.操做數據庫的用戶和密碼;
通常狀況下,查看訪問數據庫用戶,可經過show processlist命令查看 若是有未知的用戶和IP訪問,這時就必須引發重視了。

 

針對(6),最近的順豐某位程序員不當心刪庫,主要緣由在於該程序員,根本緣由在於制度上的不完善。做爲DBA,特別是高級DBA必需要控制用戶操做權限。

針對(7),實時監控的工具備zabbix和nagios,監控的目的是爲了確保mysql運行是不是正常的。同時也是爲了修改配置優化I/O,有一個實時監控做爲一個衡量標準,比較優化先後是怎麼樣的。

針對(8),相關的知識產權法律仍是要懂的,不懂法是一件很可怕的事情,因此這裏要強調一下,程序員仍是得多多瞭解一下法律,之因此強調是由於程序員大多比較老實本分,性格比較內向,可是每每也是容易被罪惡傷害的一方,好比以前WePhone創始人被逼自殺。因此說前車可鑑在此,IT的小夥伴們要多多注意。

針對(9),維護適當介質上的存檔或者備份數據,這裏要說一下,適當的存檔分門別類爲的是,之後若是查找起來或者是恢復起來有一個依據和標準,特別是備份,萬一由於某某不慎操做致使數據丟失,若是沒有實時備份的話,那麼就挺坑爹的。做爲DBA,其數據備份和恢復是必要的手段。

針對(10),其實和(9)的道理是同樣的。

做爲DBA的核心目標:保證數據庫管理系統的穩定性、安全性、完整性和高性能。

 

另外稍微說一下,
數據庫開發工程師與數據庫管理員的區別,區別以下所示:

(1)數據庫開發工程師的主要職責是設計和開發數據庫管理系統和數據庫應用軟件系統,側重於軟件研發;

(2)DBA的主要職責是運維和管理數據庫管理系統,側重於運維管理;

 

小結:

今天主要側重點在於DBA的職責和目標,DBA同運維也同樣,有些時候仍是很容易淪爲專業背鍋戶的。接下來我將會側重寫怎麼作會更好。

我目前用的比較多的是MySQL。個人不少朋友,他們的公司也是用MySQL。MySQL博大精深,在此推薦一本書《高性能MySQL》。這本書是MySQL的創始團隊寫的,很不錯很好,不過閱讀起來可能會有必定的難度,專業DBA手頭必需書,同時也是全棧工程師手頭必備書。建議有使用MySQL開發一年以上的大中型應用的朋友們,均可以看看。我相信大家看到這本書必定會有很多的啓發的。

相關文章
相關標籤/搜索