運維工作經驗總結:逃離系統故障的十個心得
系統故障,對于 DBA或是運維人員來說,都是心中永遠的痛。而避免故障的原則卻是殊途同歸,現列如下,與君共勉。
一、變更要能回滾、先在同樣的環境測試過
佛說:每次創傷、都是一次成熟、這便是運維人員的真實寫照。從某種意義上講、運維是一門經驗的學科、是一門試錯的學科。沒有做過的東西、總是會給你不期而遇的痛擊,請保護現場,讓變更有回頭的機會。
二、對破壞性的操作謹慎小心
什么是破壞性的操作?
比如:對 Oracle 而言:truncate table_name、delete table_name、drop table_name,這些語句執行起來輕松簡單也愜意極了、但記住!即便數據可被回滾、代價也是非常大!
對 Linux 而言:rm -r 所有當前及其子目錄的所有數據都將被刪除。經歷過這種故障的人、大多會給 rm 上個別名
alias rm='rm -i'
同理、cp 和 mv 也可以有同樣的選項:
alias cp='cp -i' alias mv='mv -i'
三、設置好命令提示
在操作之前、先理清你所在的是主庫、備庫?當前目錄?哪個 schema?session?時間?
比如:
對 Oracle 來講:
[plain] view plaincopy idle> set sqlprompt 'RAC-node1-primary@10g>>' RAC-node1-primary@10g>>
當然、你也可以在 glogin.sql 里面設置。
- 對于 Linux 而言、bash 環境的提醒可設置 PS1 來知道當前目錄、登陸用戶名和主機信息等;
- 對 PS1 更多理解、請見:man PS1
四、備份并驗證備份的有效性
人非圣賢、豈能無過?是機器總有計劃內或計劃外崩潰的一天。怎么辦?備份!!!備份的學問很大、按照不同的維度可以分:冷備和熱備;實時和非實時;物理和邏輯。OLTP 7*24 在線業務、DB 就需要有實時熱備。這樣就可以了嗎?
如果開發人員的一個不帶任何條件的 delete 誤刪所有數據,此時你除了實時、還需要有非實時的備份、把 DB 從邏輯錯誤中恢復出來。
備份有了、可以高忱無憂了嗎?不行!尚須驗證備份的有效性。一個總有那么幾次、備份無法保證 100% 恢復,簡單的驗證就是找個空庫恢復出來。
五、對生產環境永保敬畏之心
會計人員在從業之前、都有個職業操守的訓練。同理、這也應該是運維人員進入行業首先需要具備的素養。
比如:
- 于 Oracle 而言、你可以跑一個 RDA 巡檢 DB 的健康狀況;
- 于 Linux 而言、是否有 password aging、隔離外網等。
六、交接和休假最容易出故障、變更請謹慎
- 接手別人的工作要一而再,再而三的確認變更方案。請教人并不見得就是能力不行的表現;
- 休假前***各種可以做好的事情,***能夠準備一份文檔,指明在什么情況下怎么做和聯系哪些人;
- 在別人放假的時候接手工作,“能拖則拖”,實在需要執行:必須不厭其煩的跟原運維者確認各個操作細節。
七、搭建報警、及時獲取出錯信息;搭建性能監控、預測趨勢
運維人員賴于生存的工具就是報警和監控。
- 報警可以讓你及時知道系統出現了什么異常、以便及時跟進、把故障扼殺于搖籃;
- 監控可以讓你了解系統的歷史性能信息、以歷為鑒、可以知興替嘛、早做優化。
報警和優化是衣寬帶水的好兄弟、相鋪相成、互相促進。
八、自動卻換需謹慎
比如:Oracle 存儲級的HA方案:Data Guard,主庫提交了一筆訂單,結果發生了 switchover,這筆訂單沒有同步到備庫,那么賣家損失了一個銷售單、對客戶、對公司都是損失。
九、仔細一點,偏執一點,檢查,檢查,再檢查
有這么一個人:
① 他在做一個變更的時候,會先提前一兩周發送郵件并電話手機通知相關人
② 在測試機上寫好腳本,召集大家 review 操作步驟和腳本
③ 測試完成以后拷貝到生產環境
④ 登錄對應機器,“打開,關閉,打開,關閉”該腳本
⑤ 跟相關人員再次確認執行的操作,順序,時間點,可能的影響和回滾是否都準備好了
⑥ 執行前還要退出這個機器,然后再登錄進去,“打開,關閉”腳本
⑦ ***才在后臺運行腳本,同時在另外一個窗口登錄著,隨時ps和查看結果輸出
期間姿勢端正,呼吸急促而均勻,眼神凝重。操作的人不覺得累,倒是一邊學習的人很累。
十、簡單即是美
這有點禪的意境、和 GNU/Linux 的思想不謀而合。
我們總是面臨各種誘惑:新的系統架構,新的更智能的命令和工具,***的硬件平臺,功能更全的HA軟件...你可以在線下安裝,測試,怎么做都行。但是如果想要在生產環境下使用起來、請三思!!
- 能夠使用系統內置命令的話,就不用考慮其他要專門下載安裝的軟件了
- 腳本本身就能完成的功能,就沒有必要專門找一個功能豐富的軟件來做
- Linux本身自帶的字符界面比那些復雜的圖形界面要簡潔方便
......
***祝大家運維工作一帆風順,多福多壽,不出故障。