天天看點

十條運維經驗,幫你遠離故障

1. 確定變更可以復原

佛說:“每次創傷都是一次成熟”。這是運維人員的真實寫照。從某種意義上講,運維是一份不斷犯錯、不斷積累經驗的工作。以前沒有經曆的東西,總是不定期的給你痛擊。是以請保護好變更的現場,使得變更有回頭的機會。

2. 小心破壞性的操作

什麼是破壞性的操作?比如:對 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'

3. 設定好指令提示

在操作之前,先弄清楚所在的是主庫還是備庫?目前目錄是什麼?哪個schema?session?時間? 比如,對Oracle來講:

idle> set sqlprompt 'RAC-node1-primary@10g>>'

RAC-node1-primary@10g>>

當然,你也可以在glogin.sql裡面對其設定。

對Linux而言,可通過設定PS1來知道目前目錄、登陸使用者名和主機資訊等。

4. 備份并驗證

人非聖賢,豈能無過?是機器總有計劃内或計劃外崩潰的一天。怎麼辦?備份!!!

備份的學問很大,按照不同的次元可以分冷備和熱備、實時和非實時、實體和邏輯。

OLTP 7*24 線上業務,DB 就需要有實時熱備。這樣就可以了嗎?開發人員的一個不帶任何條件的 delete 還是會誤删所有資料。

是以,此時你除了實時備份還需要有非實時的備份。

備份有了,可以高忱無憂了嗎?不行!尚須驗證備份的有效性。總有那麼幾次備份無法保證100%恢複。簡單的驗證就是找個空庫并恢複出來。

5. 對生産環境永保敬畏之心

會計人員在從業之前,都有個職業操守的訓練。同理這也應該是運維人員進入行業前首先需要具備的素養。比如:于Oracle而言,你可以跑一個RDA巡檢DB的健康狀況。

對Linux而言,是否有password aging,隔離外網等。

6. 交接和休假最容易出故障,變更請謹慎

接手别人的工作要一而再,再而三的确認變更方案。請教人并不見得就是能力不行的表現。休假前最好各種可以做好的事情,最好能夠準備一份文檔,指明在什麼情況下怎麼做和聯系哪些人。在别人放假的時候接手工作,“能拖則拖”,實在需要執行,必須不厭其煩的跟原運維者确認各個操作細節。

7. 搭建報警,及時擷取出錯資訊;搭建性能監控,預測趨勢

運維人員賴于生存的工具就是報警和監控。

報警可以讓你及時知道系統出現了什麼異常,以便及時跟進和把故障扼殺于搖籃。

監控可以讓你了解系統的曆史性能資訊,以曆為鑒,可以知興替和早做優化。

報警和優化是衣寬帶水的好兄弟,它們相鋪相成、互相促進。

8. 自動切換需謹慎

例如,Oracle存儲級的HA方案:Data Guard。主庫送出了一筆訂單,結果發生了switchover,這筆訂單沒有同步到備庫。

那麼賣家損失了一個銷售單。這對客戶和公司都是損失。

9. 仔細一點、偏執一點、檢查、檢查、再檢查

1)做一個變更的時候,會先提前一兩周發送郵件并電話手機通知相關人;

2)在測試機上寫好腳本,召集大家review操作步驟和腳本;

3)測試完成以後拷貝到生産環境;

4)登入對應機器,“打開、關閉、打開、關閉”該腳本。

5)跟相關人員再次确認執行的操作、順序、時間點、可能的影響和復原是否都準備好了;

6)執行前還要退出這個機器,然後再登入進去,“打開,關閉”腳本;

7)最後才在背景運作腳本,同時在另外一個視窗登入,随時ps和檢視結果輸出。

10. 簡單即是美

這有點禅的意境,和GNU/Linux的思想不謀而合。

我們總是面臨各種誘惑:新的系統架構、新的更智能的指令和工具、最新的硬體平台、功能更全的HA軟體。。。

你可以線上下安裝、測試;怎麼搞都行。但是如果想要在生産環境下使用起來,請三思!!

能夠使用系統内置指令的話,就不用考慮其他要專門下載下傳安裝的軟體了。

腳本本身就能完成的功能,就沒有必要專門找一個功能豐富的軟體來做。

linux本身自帶的字元界面比那些複雜的圖形界面要簡潔友善。