運(yùn)維操作規(guī)范十大原則_第1頁
運(yùn)維操作規(guī)范十大原則_第2頁
運(yùn)維操作規(guī)范十大原則_第3頁
運(yùn)維操作規(guī)范十大原則_第4頁
運(yùn)維操作規(guī)范十大原則_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、運(yùn)維平安:遠(yuǎn)離故障的十大原那么故障是運(yùn)維人員永遠(yuǎn)的痛。相信每一個(gè)運(yùn)維人員的KPI中都有一項(xiàng):可用性??捎眯愿呔褪遣怀龉收?,各個(gè)公司對(duì)可用性和故障評(píng)級(jí)的標(biāo)準(zhǔn)都不相同,但是防止故障的方法卻是殊途同歸。我們?cè)趺捶乐构收?,沃趣科技簡單列舉了以下幾條,與大家共勉!1、變更要有回滾,在同樣的環(huán)境測(cè)試過2、對(duì)破壞性的操作謹(jǐn)慎小心3、設(shè)置好命令提示 4、備份并驗(yàn)證備份有效性5、對(duì)生產(chǎn)環(huán)境存有敬畏之心6、交接和休假最容易出故障,變更請(qǐng)謹(jǐn)慎7、搭建報(bào)警,及時(shí)獲得出錯(cuò)信息。搭建性能監(jiān)控,了解歷史,獲得趨勢(shì),預(yù)測(cè)未來8、自動(dòng)切換需謹(jǐn)慎9、仔細(xì)一點(diǎn),偏執(zhí)一點(diǎn),檢查,檢查,再檢查10、簡單即是美。第1條,變更要

2、有回滾,在同樣的環(huán)境測(cè)試過。也是運(yùn)維最繁瑣,最苦逼的地方,所有的變更都必須有回滾的方法,在同樣的環(huán)境下測(cè)試過。沒有做過的東西,總是會(huì)在你意想不到的地方給你一次痛擊,在阿里巴巴的這么多年運(yùn)維經(jīng)驗(yàn)告訴我們,所有沒有做過的變更,出錯(cuò)的概率最大。所以我們需要給變更以回滾的可能,在各個(gè)步驟可能出錯(cuò)的情況下,考慮回滾到最初狀態(tài)。優(yōu)秀的運(yùn)維人員對(duì)不考慮回滾的的操作都是敬而遠(yuǎn)之的。從某種意義上來說,運(yùn)維是一門經(jīng)驗(yàn)的學(xué)科,是一門試錯(cuò)的學(xué)科。第2條,對(duì)破壞性的操作謹(jǐn)慎小心。破壞性的操作有哪些列?對(duì)數(shù)據(jù)庫來說有:DROP Table, Drop database, truncate table, delete al

3、l data;這些操作做完了以后幾乎無法考慮怎么把數(shù)據(jù)都回滾回去了。就算回滾,代價(jià)也是非常大的。你執(zhí)行這樣的語句非常簡單,但是回滾恢復(fù)數(shù)據(jù)缺非常困難。Linux的命令rm可以-r(recursive)遞歸的刪除某一個(gè)目錄,-f(force)強(qiáng)制刪除,但是你有沒有刪錯(cuò)過文件。我們遇到過一個(gè)文件名中末尾有空格的情況,而有的同事rm -r習(xí)慣性的會(huì)在文件名后面加,這樣就成了rm -r aa *,所有當(dāng)前目錄的數(shù)據(jù)都被刪除掉了!經(jīng)過這次故障以后我們給rm做了別名:alias rm='rm -i'這樣在刪除數(shù)據(jù)時(shí),rm命令會(huì)提示你,是否確認(rèn)刪除該文件。同樣的cp和mv也可以有同樣的選項(xiàng):

4、alias cp='cp -i'alias mv='mv -i'第3條,設(shè)置好命令提示。讓你時(shí)刻知道你在操作哪個(gè)數(shù)據(jù)庫,讓你知道你在哪個(gè)目錄下。MySQL字符客戶端允許你設(shè)置提示符,默認(rèn)的提示符就是一個(gè)光禿禿的mysql >,為了讓你清楚的知道你當(dāng)前是以哪個(gè)用戶名,哪個(gè)IP可能是localhost,或者具體的物理IP,你當(dāng)前操作的是哪個(gè)schema,以及當(dāng)前的時(shí)間,你可以設(shè)置數(shù)據(jù)庫的提示符為:prompt=uh : d r:m:s> “。它可以直接寫在my f的mysql下,這樣你每次連上MySQL就默認(rèn)顯示如下:root

5、 : woqutech 08:24:36>具體prompt可以設(shè)置哪些提示,你可以參考 :/dev.mysql /doc/refman/5.6/en/mysql-commands.html中的列表而linux命令提示符也允許你設(shè)置的。有兩個(gè)地方可以設(shè)置。第一個(gè):PS1。這個(gè)是每次shell提示你輸入命令的信息,默認(rèn)為:$或者#,只會(huì)提示你是超級(jí)用戶還是普通用戶。有經(jīng)驗(yàn)的運(yùn)維者會(huì)設(shè)置export PS1='ne1;37meme1;31mueme1;31meme1;31mhem e4mpwdeme1;37meme1;36memn$' 這樣你就可以知道你當(dāng)前的目錄,登錄的用戶名

6、和主機(jī)信息了,例如提示符如下:rootwoqu-lsv-01 /home/mysql#你可以查看 :/ /tips/howto-linux-unix-bash-shell-setup-prompt.html獲得具體的PS1設(shè)置顏色,設(shè)置各個(gè)提示內(nèi)容的介紹。第二個(gè)提示符就是PROMPT_COMMAND。這個(gè)是設(shè)置你連到具體的數(shù)據(jù)庫以后標(biāo)簽頁標(biāo)題上顯示的內(nèi)容,Windows用戶可能會(huì)用securtCRT,Mac用戶可能會(huì)用iTerm2,開多個(gè)標(biāo)簽頁的話,如果每個(gè)標(biāo)簽頁的標(biāo)題上內(nèi)容一樣,我們切來切去就有可能在錯(cuò)誤的標(biāo)簽頁上做操作,設(shè)置了這個(gè)以后,這個(gè)問題概率就會(huì)小很多。比方

7、我們的機(jī)器上設(shè)置為PROMPT_COMMAND='echo -ne "0330;$USER$HOSTNAME%.*:$PWD007"'對(duì)應(yīng)的標(biāo)簽頁如下列圖 關(guān)于提示符的設(shè)置,更多請(qǐng)參考:修改 mysql/oracle/bash/vimrc/cmd 提示符格式與顏色 第4條,備份并驗(yàn)證備份有效性。是人總會(huì)出錯(cuò),是機(jī)器總可能會(huì)有突然崩潰的那一天。怎么辦我們需要準(zhǔn)備備份。備份的學(xué)問很大。按照不同的緯度可以分為:冷備份和熱備份;實(shí)時(shí)備份和非實(shí)時(shí)備份;物理備份和邏輯備份?;ヂ?lián)網(wǎng)企業(yè)為了提供7*24小時(shí)不間斷的效勞,數(shù)據(jù)庫就需要有實(shí)時(shí)熱備份。在主庫出現(xiàn)問題的情

8、況下能夠由備庫提供效勞。備庫時(shí)候有效,數(shù)據(jù)是否一致,主庫出現(xiàn)問題的時(shí)候怎么切換都需要運(yùn)維人員認(rèn)真考慮。是不是有了這些就夠了列?不行,應(yīng)用程序也是人寫的,曾經(jīng)出現(xiàn)過程序一不小心delete語句沒有帶任何條件,導(dǎo)致一個(gè)表中所有的數(shù)據(jù)都被刪除的慘狀。所以你除了實(shí)時(shí)的備份,還需要有非實(shí)時(shí)的備份,在你的數(shù)據(jù)出現(xiàn)邏輯錯(cuò)誤之后能夠從備份數(shù)據(jù)中恢復(fù)出來?,F(xiàn)在很多人在研究MySQL模仿oracle的flashback功能,利用binlog來恢復(fù)數(shù)據(jù)。但是這樣的話,binlog_format必須設(shè)置為row并且對(duì)于DDL操作也無法回滾。它是為快速解決局部數(shù)據(jù)被錯(cuò)誤刪除的解決方案,但是無法代替非實(shí)時(shí)備份的作用。非實(shí)

9、時(shí)備份有可以分為在線延時(shí)備份和離線備份。在線延時(shí)備份是搭建數(shù)據(jù)庫的一定時(shí)間延遲的熱備份,比方MySQL就可以搭建一個(gè)延遲一天的slave,一直保持著備庫與主庫的延遲在一天??梢岳胮t-slave-delay工具來實(shí)現(xiàn)這個(gè)功能。另外,離線備份是目前大家用的比擬多的,可以利用mysqldump進(jìn)行邏輯備份或者xtrabackup進(jìn)行物理備份。為了空間的原因和快速恢復(fù)考慮,你還可以利用xtrabackup進(jìn)行增量的物理備份。備份有了,是否就可以高枕無憂了?還是不行。你需要驗(yàn)證備份的有效性。沒有一個(gè)備份能夠保證它備份出來的數(shù)據(jù)能夠100%恢復(fù)出正確的數(shù)據(jù),特別是物理備份的概率相對(duì)來說,更低,xtra

10、backup備份一個(gè)月總有那么幾次來大姨媽,不能給你很好的效勞。所以,備份并不只是備份,它還包括備份的驗(yàn)證,它如果不能恢復(fù)出正確的數(shù)據(jù),就只是浪費(fèi)空間而已。備份的驗(yàn)證最簡單的就是找一個(gè)空閑的庫,來恢復(fù)出來,mysql啟動(dòng)以后檢查局部數(shù)據(jù)。如果不需要這么嚴(yán)謹(jǐn),對(duì)于xtrabackup來說,你至少得驗(yàn)證它apply-log能夠恢復(fù)上去吧?同樣,備庫的數(shù)據(jù)一致性也需要經(jīng)常檢查一下,mysql的replication并不保證100%的數(shù)據(jù)一致性,你可以去翻翻mysql statement復(fù)制的bug列表,有些數(shù)據(jù)在主備不同的環(huán)境上分別執(zhí)行,數(shù)據(jù)就會(huì)不一樣??梢钥紤]用percona的工具pt-table

11、-checksum來檢查主備不一致,用pt-table-sync來同步主備數(shù)據(jù)。第5條,對(duì)生產(chǎn)環(huán)境存有敬畏之心。這應(yīng)該是運(yùn)維者進(jìn)入行業(yè)首先需要具備的素質(zhì)。但是我們還是需要把它拿出來強(qiáng)調(diào)一下。有時(shí)機(jī)的話,你可以梳理一下:· 你的生產(chǎn)環(huán)境上有哪些賬戶,這些賬戶是否都確實(shí)需要登錄到機(jī)器上來?這些賬戶即包括linux用戶還包括數(shù)據(jù)庫賬戶。· 你的root用戶是否開放給了某些用戶,這些用戶平安嗎?· 你的用戶密碼是否經(jīng)常修改,是否加密不讓具體的操作人員直接看到,密碼強(qiáng)度時(shí)候足夠,密碼重試次數(shù)到達(dá)一定次數(shù)是否黑名單;· 你的生產(chǎn)環(huán)境和線下環(huán)境是否隔離,數(shù)據(jù)庫是否和外

12、網(wǎng)隔離?· 是否一些工作明明能夠在開發(fā)庫和測(cè)試庫做,卻被放到生產(chǎn)環(huán)境上去了。· 是否有專門的人負(fù)責(zé)線上應(yīng)用的發(fā)布,從而防止開發(fā)人員直接接觸生產(chǎn)環(huán)境這些都是你防止出現(xiàn)csdn密碼泄漏,在業(yè)界的名聲一落千丈的法寶。第6條,交接和休假最容易出故障,變更請(qǐng)謹(jǐn)慎。這個(gè)是經(jīng)驗(yàn)之談。我們?cè)诳偨Y(jié)故障的情況時(shí),發(fā)現(xiàn)在公司部門有變化時(shí),工作交接(不管是休假,工作職責(zé)變化還是離職),故障的出現(xiàn)頻率會(huì)比正常情況下多50%以上。有人說,這是因?yàn)闄C(jī)器或者應(yīng)用是有感情的,舍不得離開的運(yùn)維者。我們不談感情,簡單的理性分析一下。公司或者部門難免會(huì)做一些調(diào)整,變化是世界上唯一不變的事情。而運(yùn)維人員是一線做事情

13、的人,部門調(diào)整或者領(lǐng)導(dǎo)的更換可能導(dǎo)致工作的著重點(diǎn)不同,做事的方式和評(píng)測(cè)的標(biāo)準(zhǔn)變了,適應(yīng)過程中難免會(huì)出現(xiàn)一些考慮不周到的地方,出故障也是情理之中了。而工作交接,對(duì)運(yùn)維人來說,其實(shí)是一個(gè)非常費(fèi)時(shí)費(fèi)力的事情,你需要把所有平常做的工作都梳理清楚,甚至包括你的一些經(jīng)意不經(jīng)意的操作習(xí)慣,這樣的話,下一個(gè)人才可能接手的下來。比方:你可能認(rèn)為備庫正常情況下沒有訪問,于是讓某些并不重要的任務(wù)(一個(gè)月一次抽取局部數(shù)據(jù)到線下測(cè)試?)直接連備機(jī)IP進(jìn)行操作。下一個(gè)人接手,認(rèn)為備機(jī)就是備機(jī),操作起來不會(huì)有任何問題,結(jié)果下一次任務(wù)抽取就是一個(gè)故障出來了。再舉一個(gè)我們遇到了事例吧:同事A出國休假了,休假期間估計(jì)聯(lián)系不上,他

14、留了文檔,并告誡說某幾個(gè)庫和表是比擬核心和容易出問題的,沒有特殊情況最好等他回來再做變更。正好,休假期間,開發(fā)人員找到同事B,要求他重置一個(gè)字段的某一位bit,并打包票說這個(gè)bit沒有用,同事B拒絕,并背上了不配合的罵名。同事A回來嚇了一身冷汗,原來這個(gè)字段已經(jīng)被另外一個(gè)離職的開發(fā)使用了。所以,運(yùn)維部門和運(yùn)維人員對(duì)變化需要盡量放平心態(tài);接手別人的工作要一而再,再而三確實(shí)認(rèn)變更方案。請(qǐng)教人并不見得就是能力不行的表現(xiàn);休假前最好各種可以做好的事情,最好能夠準(zhǔn)備一份文檔,指明在什么情況下怎么做和聯(lián)系哪些人。在別人放假的時(shí)候接手工作,“能拖那么拖,實(shí)在需要執(zhí)行:必須不厭其煩的跟原運(yùn)維者確認(rèn)各個(gè)操作細(xì)節(jié)

15、。第7條,搭建報(bào)警,及時(shí)獲得出錯(cuò)信息。搭建性能監(jiān)控,了解歷史,獲得趨勢(shì),預(yù)測(cè)未來。運(yùn)維的最高境界不是故障來了,泰山崩于前而不驚,蒼老師勾引你而抗日;而是沒有故障,讓故障消失在萌芽之中。請(qǐng)給那些默默無聞,每天想著我們的系統(tǒng)還存在哪些隱患,怎么解決,怎么及早發(fā)現(xiàn)的運(yùn)維人員鼓掌。他們是最可愛的人。而他們賴以生存的工具就是報(bào)警和監(jiān)控。Oracle開展了這么多年,awr和相關(guān)的性能參數(shù)都相比照擬全;MySQL現(xiàn)在也已經(jīng)迎頭趕上,配套的工具越來越多。報(bào)警可以讓你及時(shí)知道系統(tǒng)出現(xiàn)了什么異常。比方slave io報(bào)警,在數(shù)據(jù)庫replication異常的時(shí)候就會(huì)提醒你:IO線程出現(xiàn)了問題,可能是網(wǎng)絡(luò)問題,主數(shù)

16、據(jù)庫問題等,slave sql報(bào)警會(huì)提醒你replication的SQL線程出現(xiàn)了問題,可能是主備不一致,slave被停掉了,存儲(chǔ)過程在備機(jī)有異?;蛘咂渌麊栴}。這樣你收到報(bào)警就可以及時(shí)跟進(jìn),而不至于主備長時(shí)間不一致,主庫壞掉了想要切換到備庫的時(shí)候卻不能切換。性能監(jiān)控可以讓你了解系統(tǒng)的歷史性能信息。分析故障發(fā)生時(shí)的各種現(xiàn)象,確認(rèn)故障的真正原因;了解變化趨勢(shì),發(fā)現(xiàn)故障的苗頭,及早優(yōu)化和調(diào)整。比方你如果使用了PCI-E的Flash卡,你可以監(jiān)控logical_written_bytes,logical_read_bytes,physical_written_bytes,physical_read_b

17、ytes以便獲得flash卡的每秒的邏輯讀寫和物理讀寫字節(jié)數(shù)。對(duì)于MySQL你可以監(jiān)控Com_delete+Com_delete_multi, Com_insert+Com_insert_select,Com_update+Com_update_multi,Com_select來獲得每秒的MySQL DML刪除,插入,更新和查詢的次數(shù)。報(bào)警和性能監(jiān)控其實(shí)不不完全獨(dú)立的,很多性能的監(jiān)控項(xiàng)也可以報(bào)警出來。比方linux的iostat中的await_time可以作為性能監(jiān)控采集起來獲得系統(tǒng)IO響應(yīng)時(shí)間的變化曲線,當(dāng)該值到達(dá)20以上的時(shí)候,也可以報(bào)警出來,讓運(yùn)維人員跟進(jìn)是磁盤陣列中壞了一塊,還是異常的

18、數(shù)據(jù)拷貝影響了系統(tǒng)的IO性能等。nagios和cacti是目前MySQL領(lǐng)域使用最廣泛的報(bào)警和性能展示系統(tǒng)。percona最新推出percona-monitor-plugins( :/ percona /software/percona-monitoring-plugins)就是基于他們倆的。第8條:自動(dòng)切換需謹(jǐn)慎?,F(xiàn)在數(shù)據(jù)庫的HA很多都是進(jìn)行自動(dòng)切換的,這樣運(yùn)維人員深夜起來手工切換到備庫的時(shí)機(jī)就會(huì)少很多。切換也會(huì)快速很多。但是,它帶來的副作用也不容無視?,F(xiàn)在業(yè)界使用的HA軟件非常多,heartbeat由于很多SA兼作DBA的運(yùn)維比擬熟悉,在MySQL自動(dòng)切換也是不少的。一般來說,它會(huì)通過my

19、sqladmin ping來探測(cè)MySQL是否存活,如果發(fā)現(xiàn)異常,那么他就會(huì)切換VIP和MySQL資源到備庫。但是此時(shí)備庫的數(shù)據(jù)延遲是否為0,主庫crash之后binlog的數(shù)據(jù)是否全部都同步到備庫上去了,備庫的read_only是否關(guān)閉,這些heartbeat都不管。我們想象一下,主庫上應(yīng)用提交了一筆訂單,結(jié)果發(fā)生了切換,這筆訂單沒有同步到備庫上,賣家也就損失了一個(gè)銷售單,對(duì)客戶,對(duì)公司都是非常大的影響。當(dāng)然,自動(dòng)切換也不能全盤否認(rèn),它能夠更快速的將應(yīng)用切換到新的熱備份備庫上,應(yīng)用的不可用時(shí)間大大縮短。只是我們要好好利用這一把雙刃劍,仔細(xì)評(píng)估它的影響,降低或者去除副作用,讓它為我們效勞。第9

20、條,仔細(xì)一點(diǎn),偏執(zhí)一點(diǎn),檢查,檢查,再檢查。之前我跟一個(gè)資深的運(yùn)維學(xué)習(xí)線上操作的時(shí)候,覺得這家伙有點(diǎn)變態(tài),他在做一個(gè)變更的時(shí)候,會(huì)先提前一兩周發(fā)送郵件并 的通知相關(guān)人;在測(cè)試機(jī)上寫好腳本,召集大家review操作步驟和腳本;測(cè)試完成以后拷貝到生產(chǎn)環(huán)境;登錄對(duì)應(yīng)機(jī)器,“翻開,關(guān)閉,翻開,關(guān)閉該腳本;跟相關(guān)人員再次確認(rèn)執(zhí)行的操作,順序,時(shí)間點(diǎn),可能的影響和回滾是否都準(zhǔn)備好了;執(zhí)行前還要退出這個(gè)機(jī)器,然后再登錄進(jìn)去,“翻開,關(guān)閉腳本;最后才在后臺(tái)運(yùn)行腳本,在另外一個(gè)窗口登錄著,隨時(shí)ps和查看結(jié)果輸出。期間姿勢(shì)端正,呼吸急促而均勻,眼神凝重。操作的人不覺得累,倒是一邊學(xué)習(xí)的人很累。當(dāng)我做到一定程度,我

21、也開始這樣了。醫(yī)學(xué)上,這種好似叫做強(qiáng)迫癥。唉,提前通知會(huì)讓大家都有準(zhǔn)備,也防止了臨時(shí)相關(guān)人員過來說這個(gè)操作和其他操作有依賴需要調(diào)整操作時(shí)間的問題; 召集大家review步驟和腳本是為了讓大家一起來看看整個(gè)過程中還有哪些依賴沒有考慮到或者哪些細(xì)節(jié)沒有注意到,三個(gè)臭皮匠頂一個(gè)諸葛亮在運(yùn)維來說是金科玉律;“翻開,關(guān)閉,翻開,關(guān)閉是為了一再確認(rèn)腳本拷貝過來是否正確,目錄時(shí)候正確,思考在測(cè)試環(huán)境運(yùn)行和在生產(chǎn)環(huán)境運(yùn)行有什么不一樣的;退出再登錄機(jī)器是為了確認(rèn)我登錄的機(jī)器確實(shí)沒有錯(cuò);在后臺(tái)運(yùn)行是擔(dān)憂網(wǎng)絡(luò)突然中斷,我的腳本運(yùn)行到一半怎么辦;調(diào)整呼吸和端正姿勢(shì)是為了對(duì)這個(gè)操作的敬重,對(duì)自己工作和運(yùn)維工作的尊重。以MySQL 使用flash卡為例吧。flash算是一個(gè)比擬新的事務(wù),提供的IO比普通磁盤是幾個(gè)數(shù)量級(jí)的提升。要想在生產(chǎn)環(huán)境使用,首先我們需要對(duì)他進(jìn)行詳盡的評(píng)估和破壞性測(cè)試,設(shè)置各種參數(shù),考慮他們?cè)诟鞣N場景下使用的配置;24小時(shí)不間斷的進(jìn)行半個(gè)月讀寫操作,中途突然掉電;高并發(fā),高吞吐量下的測(cè)試;溫度濕

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論