DBA 的那些事

來源:互聯網
上載者:User

      說起DBA,全稱是Database Administrator,不是Doctor of Business Administration,千萬不要誤解,那可是天壤之別!儘管如此,很多人依然認為有著神秘的面紗,高深莫測,花環簇擁,是收入豐厚的一族人。實則不然,DBA說白了就一修理工。修理啥呢,不是車床機床,也不是修理啥精密儀器,修理的是資料庫,僅此而已。DBA這個行業同樣也經曆了由萌芽,發展到鼎盛的過程。尤其是近2年海量資料的井噴以及新資料庫時代,雲資料時代,DBA 2.0時代的興起。以及最近所謂後DBA時代的說法。說到DBA的工作,我們先得搞清當前幾類常用的資料庫。主要有兩大陣營,一類是SQL,學過電腦的人應該都知道,傳統資料庫,諸如Oracle,DB2,MySQL,SQL serer等主流資料庫。面對的是那些傳統行業,比如證券,銀行,電信等使用的居多。另一類是NoSQL,諸如Hadoop,MongoDB,CouchDB等,主要用於互連網行業,如線上社交系統,Amazon 的Dynamo等。對於當前這兩大陣營,貌似有劃江而治之勢。讓人不免眼花繚亂。究竟何去何從,應當更多或更深的思考,這是一個比較大的話題,暫且不表。本文主要描述一下傳統DBA的那些事,也就是DBA的工作範圍與職責,更多的圍繞Oracle展開。本文主要從六個方面來簡要描述DBA的工作。

 

一、資料庫的整體設計與規劃
      有如建造一座豪華的宮殿一樣,宮殿尚未動工之前,其選址,結構布局,空間利用,方位設計等必須先有一套完整的方案。資料庫的規劃與設計同樣如此。良好的資料庫結構描述設計直接影響到基於該資料庫業務系統的整體效能。而這個架構設計又來源於對業務有詳盡的需求分析,從而對現實需求進行綜合、歸納與抽象並形成完整的E-R圖,再由E-R圖轉換為相應的邏輯模式(表、視圖定義等,考慮範式要求)。同時也根據業務的初期、中期及後期考慮合理的資料庫儲存規劃以及根據資料庫負載、重要程度考慮使用單一實例資料庫、叢集、複製、鏡像等等高可用策略。當然,對於資料庫運行平台環境等也是一個比較重要的選擇。大多數情況下,資料庫的整體設計對大多數DBA而言沒有機會來接觸或實戰,尤其是設計E-R圖以及表、視圖定義等,這部分通常都是由專業資料庫設計人員或開發人員來完成。因此本文對此也是初步描述。如果有機會參與,不要放過。

 

二、安裝升級、遷移部署
1、安裝資料庫。這個是最起碼的要求了。就好比那些個developer,最開始的代碼,第一句是"hello world"一樣。這個是你必須會的,要掌握的。如果是SQL server安裝部署就相對簡單,全部圖形化介面搞定,而且美觀賴看,功能也很強大,電信移動也有在用。這類資料庫容易上手,這也是Microsoft的強項之一。唯一的缺憾就是不能垮平台。與之相比的複雜的安裝部署那就是Oracle,DB2,MySQL等這幾類資料庫了。先得把整個環境搭建好,諸如核心參數,環境變數,rmp package之類的搞定,沒得一個安裝參考手冊,有得你整。尤其是部署生產環境,每一個參數都得結合其資料環境考量規劃。這個需要一定的經驗。預設值有時候不一定能滿足現狀。儘管如此,跨平台特性則成為這幾類資料庫被廣泛使用的重要原因之一。管得你Windows,Linux,還是Unix,都有對你胃口的。


2、升級資料,更新patch等等也是司空見慣之事。那個Bug多的是難以數計。有道是,白天監控資料庫,夜晚挑燈戰bug。這個部分比較重要的是需要考慮更新patch等之後產生的影響以及做好回退措施。誰都難以絕對保證明地球明天照樣轉。所以得靠自己把握。


3、資料庫遷移。這種情形也是常見之事。隨著業務的增加,對效能要求的提高,以及更新換代,需要升級不得不實施資料庫遷移。老牛拉破車總是入不敷出,影響業務。遷移也是一個比較耗大的工程,尤其是大型資料庫,上TB級的。比如使用匯入匯出,儘管操作命令一樣,但大型資料庫你得考慮的更多。諸如考慮使用並行,如何最佳化這個過程的效能,整一steps完全有必要。

 

三、監控資料庫
      除了合理的部署資料庫之外,透過對資料庫不同部分、組件的即時監控,我們可以及時採取補救措施以及防患於未然的策略來保障資料庫持續、穩定、健康平穩運行。因此系統監控對於DBA而言,同樣重要。下面先描述資料庫層級的監控,後描述系統層級監控。這些部分通常包括以下內容:
      資料庫警示日誌的即時監控,絕大部分Oracle錯誤資訊都會記錄於此。因此監控警示日誌顯得尤為重要。
      資料庫執行個體狀態監控
      資料庫監聽器的即時監控
      資料表空間的使用率即時監控
      閃回區或歸檔日誌監控(如果有使用到閃回區,歸檔主要是針對歸檔空間空間問題,如不足,如用hang住)
      Database Backup或恢複監控
      無效對象的監控與處理
      作業系統CPU/IO/Memory監控
      對於監控工具的選擇Oracle OEM提供了完美的圖形化介面以及設定閥值來實現自動預警。當然也可以自己編寫shell指令碼來定時完成。對於SQL server同樣可以基於GUI來完成。比較好的工具大家可以藉助於Toad,Spotlight,Myora等優秀工具獲得包括sga,pga,top SQL,instance等等更為詳細的資訊。除了即時監控之外,定期巡檢也是有必要的。這就好比機器或汽車,得進行週期性保養。這樣子可以發現隱性的或未決的問題,以及如何改善當前資料庫。

 

四、保證資料庫完整性
      不求有功,但求無過。這個對於DBA來說是最起碼的一點。很多時候我們無意中不小心的rm,drop等等有時候會帶來災難性的後果。永遠不要有機會給上司開國際玩笑,那就是你不小心的整壞了生產資料庫,而且還沒有備份,這就丟大了。因此DBA的細心,資料庫的定期備份是至關重要的。尤其是對於那些資料庫是企業核心命脈的企業,每一步操作都儘可能思前想後。對於資料庫的備份方式有多種多樣,而且有諸多第三方備份方式。即便如此,每種資料庫內建的備份方式是必須要掌握的。對於SQL server而言,內建的圖形化備份設計基本上可以滿足絕大多數需求。需要搞清資料庫的復原模式以及全備,增量等方式,當然掌握bcp命令也是很有必要的。對於Oracle,datapump,冷備,熱備,rman備份幾種最好都全部掌握,多多益善。資料庫的備份策略主要依賴於對資料丟失的容忍度來決定。也就是說合理的備份策略基於資料庫恢複所需要的所有相關的東東。因此備份策略應具體情形具體分析。週期性監控資料庫的備份以及做災備測試等來確保資料庫的備份與恢複是完整無誤的。

 

五、效能最佳化與調整
      業務運行緩慢,客戶抱怨不斷。這是DBA們經常頭疼的問題。儘管整體效能並不完全取決於資料庫,但資料庫仍然是至關重要的一環。而且效能的問題從整個業務需求分析,資料庫結構描述設計的那一刻起直至資料庫生命週期的終結。尤其是隨著業務量的不斷增加導致的效能問題日漸顯現並表現的異常突出。正因此,對於一個優秀的DBA來講,僅僅從資料庫層面來把控效能是遠遠不夠的;對儲存,作業系統,網路,業務的瞭解與掌握才能對效能調整做到有的放矢,應用自如。深圳有句展現特區精神的口號,時間就是金錢,效率就是生命。同樣適用於線上交易資料庫系統。下面僅僅從資料庫層面來談談效能調整與最佳化涉及到的方面。
      作業系統核心參數最佳化與調整
      基於不同的特性使用raid部署不同類型檔案
      分開儲存資料和索引檔案以及均衡I/O
      調整資料庫以及執行個體層級初始化參數
      使用分區表處理海量資料以及滑動視窗歸檔
      消除行連結與行遷移
      使用索引、提示或物化視圖調整SQL訪問負載
      調整最佳化器統計資訊
      通過調整PL/SQL以提供效能
      使用並行技術提高效能

 

六、Troubleshooting
      天有不測風雲,人有旦夕禍福。資料庫啟動並執行過程中總難免出現這樣或那樣的問題。一是由於資料庫軟體及運行環境等產生的各種bug或隱性問題,二是人為的問題通常也不在少數。因此,如何快速定位並解決這些問題也是衡量一個DBA水平的重要指標。處理這些棘手的問題,需要DBA有大量的知識和經驗的積累。尤其是對資料庫理論以及資料庫體繫結構應該有較深刻的認識,把握其本體,何愁不能應用自如呢?在這裡只說明Troubleshooting是DBA經常面對的問題,並未描述如何Troubleshooting。下面列出幾類較為較為常見的需要Troubleshooting的問題。
      警示日誌中的異常處理
      監聽器相關的異常處理
      Database Backup恢複期間的異常處理
      Oracle job運行異常的處理
      資料庫突發的異常處理,如資料庫hang,某個時間段效能低下                         --Author:Leshami
      叢集管理中的異常處理                                                                                    --Blog    :http://blog.csdn.ne/leshami
      DataGuard資料庫記錄傳送,恢複等異常處理
      使用者報告的異常處理
      資料庫安全的異常處理

     

      上面主要從6個方面簡要的描述了DBA的工作及其職責範圍,當然還有更多的細小的問題在此不再贅述。
      總之DBA的工作也很繁瑣,需要沉著冷靜應對,三思而後行,儘可能地從整體出發,從全域出發來考慮問題。

                                                                                                                                                                           2014年2月 深圳

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.