天天看點

資料庫運維做些什麼

一. 資料庫生命周期

結合軟體生命周期、項目的開展,資料庫的生命周期,大緻可分為這麼幾個階段。

資料庫運維做些什麼

1. 規劃

在立項後,對于資料庫平台的軟硬體選型,以及大緻的資料庫架構。

1.1 配置多少台伺服器,伺服器的記憶體大小/磁盤空間、IOPS/CPU核數/網絡帶寬等;

1.2 選擇的作業系統與資料庫産品,及相應版本;

1.3 整體架構,比如是否考慮:HA,Scale out, load balance, 讀寫分離等政策。

2. 開發

開發的工作,通常是在測試環境上進行的,開發結束後搬到生産環境。

2.1 資料庫設計;

2.2 SQL程式設計及調試;

2.3 開發過程中的SQL優化。

3. 實施

開發的資料庫程式到生産環境的部署。到這裡,基本是項目上線了。後面就進入了運維階段。

二. 運維做些什麼

從上面的圖來看,運維是項目上線後的工作。看看從項目上線開始,運維都做了什麼。

1.  部署環境

1.1 資料庫安裝(如果伺服器太多,可以選擇靜默安裝);

1.2 參數配置(執行個體、資料庫參數);

1.3 權限配置設定(登入、資料庫使用者權限)。

2. 備份/還原

對于資料庫來說,有個可用的備份是非常重要的,防止有資料損壞,使用者誤操作等造成的資料丢失。保證了資料的存在,運維才有意義,否則其他工作做的再好也是白搭。

3. 監控

對于運維來說,首先要保證資料庫的運作,然後就是運作中系統的性能。是以監控主要分為這兩點:

3.1 資料庫運作狀态,有沒有什麼資料庫中斷或異常、錯誤或警告?

3.2 資料庫性能,有沒有什麼性能問題或者性能隐患?

4. 故障處理

在監控過程中發現,或者系統使用者回報出來的資料庫錯誤或者警告,進行診斷并修複。

5. 性能優化

在監控過程中發現,或者系統使用者回報出來的資料庫性能問題,進行優化。

6. 容災

容災隻是手段,最終還是為了保證系統的可用性,通常選擇的政策有:故障轉移叢集、鏡像、日志傳送、異地備份等。

如果在實施時,已經部署了容災政策,那麼這時隻要做一些狀态監視即可。

也有系統是在上線一段時間之後,才補充部署容災政策的。

7. 更新/遷移

7.1 更新

通常是在本機進行,硬體不變,比如:更換作業系統、資料庫的版本、打更新檔;

7.2 遷移

通常是需要更新硬體,比如:更換新的伺服器,是以把資料庫搬到新的伺服器上;

也有在本機“遷移”,隻是為了移動資料庫檔案的位置。

7.3 遷移+更新

不過很多時候,都是在遷移中做更新,也就是換了新的伺服器,也換了軟體版本。

8. 健康檢查

通常叫做巡檢或者HealthCheck。可能是每天、每月、每年的。

事實上如果把巡檢的内容做到每天、每小時、甚至每X分鐘,那就是一個準實時的系統監控。

9. 系統使用者回報的資料庫問題

使用者回報出來的任何資料庫問題,需要DBA去做處理,即便有時診斷出來并非資料庫的問題。

從廣義上來看,除去資料庫開發外的其他任務,都應該算在運維職責之内。

問:那麼資料庫運維到底都有哪些日常任務?

答:把上面的每項任務要做的事情一個個羅列出來就可以了。

比如,資料庫運作狀态監控包括:資料庫服務是否中斷、磁盤空間、錯誤日志檢查、資料庫一緻性檢查、作業運作狀态、索引碎片檢查等等。

後面會逐個分解各項任務的詳細清單。

三. 運維過程中的問題解決

運維過程中遇到問題時,如果能夠通過自己/他人的經驗解決,那麼固然好;

但如果沒有解決思路的話,通常是這樣去查:

1. 查日志:作業系統/資料庫/應用程式日志中,有沒有相關的錯誤/資訊提示;

2. 查錯誤号:官方文檔/網友分享中,有沒有解決方案;

3. 如果都沒有找到,那麼就中獎了,自己分析不出就團隊分析,團隊分析不出找官方支援,當然有的時候,官方支援也不是一定能解決。

注意:對于線上系統,這麼慢慢查下去,時間可能消耗太久,會影響使用者體驗。通常是優先快速解決問題,那怕隻是用臨時應急方案,以保證系統的可用性,然後再去分析根本原因,徹底解決,以防止下次再發生。