移動(dòng)端接入數(shù)據(jù)庫故障自愈的初步實(shí)現(xiàn)
對(duì)于節(jié)假日,難得的假期,尤其是外出的時(shí)候碰上幾個(gè)數(shù)據(jù)庫報(bào)警,那些報(bào)警又屬于不得不處理的時(shí)候,真是讓人上火,所以也想了一些辦法來盡可能杜絕和避免這種情況。
一般來說是這樣的幾種策略:
1)提前在節(jié)假日的時(shí)候把報(bào)警的閾值調(diào)低,然后提前處理一波
2)在假期中期,主動(dòng)進(jìn)行巡檢分析,至少在可控的時(shí)間里碰到問題提前處理比臨時(shí)出現(xiàn)問題緊急解決要好得多。
3)多人互備,通常這種情況比較苦逼,得背著電腦到處跑,還得注意電腦電源,網(wǎng)絡(luò)
當(dāng)然也有一些機(jī)制可以借鑒,大體也是兩類:
1)對(duì)于一些通??煽氐奶幚韱栴},可以設(shè)定周期性任務(wù)進(jìn)行提前處理,比如數(shù)據(jù)庫的binlog增長較快,可以設(shè)置周期性任務(wù)來清理,通常定制化,本地化程度較高
2)對(duì)于一些可以預(yù)見的問題,可以設(shè)置處理動(dòng)作腳本,然后周期性掃描,一旦發(fā)現(xiàn)問題就觸發(fā)處理機(jī)制,所以這種模式通常是會(huì)碰到報(bào)警/報(bào)警恢復(fù)的周期性交替。
當(dāng)然這些策略還不是上策,畢竟不夠通用,有的時(shí)候問題還具有差異性,需要差異化處理。
舉個(gè)例子來說,磁盤報(bào)警,如果磁盤報(bào)警在80%,那么問題其實(shí)緊急度還沒那么高,處理機(jī)制優(yōu)先處理磁盤空間能搞定最好,如果達(dá)到了90%,磁盤空間的清理改進(jìn)空間就很有限了,就需要清理數(shù)據(jù)庫日志等,如果繼續(xù)增長問題的緊急度就會(huì)逐步升級(jí),就需要接入業(yè)務(wù)邏輯,從一些日志表的數(shù)據(jù)來入手了。
大多數(shù)情況下的問題,通常通過系統(tǒng)空間清理和binlog的清理能夠減緩問題的進(jìn)一步升級(jí),所以能夠緩沖幾個(gè)小時(shí)的時(shí)間也是很難得的。
和移動(dòng)端的接入,也是和開發(fā)同事進(jìn)行了深入溝通后集成起來的,這是一套已經(jīng)穩(wěn)定運(yùn)行許久的功能模塊,這方面我們還算是接入相對(duì)晚了。
移動(dòng)端對(duì)于磁盤報(bào)警的處理,我定義的處理流程如下:
在觸發(fā)報(bào)警后,在移動(dòng)端可以對(duì)每個(gè)處理動(dòng)作進(jìn)行處理,后端會(huì)有相應(yīng)的API和腳本進(jìn)行調(diào)用,返回相應(yīng)的數(shù)據(jù)參數(shù)。
整個(gè)流程中,對(duì)于報(bào)警類別的定義和處理流程的編排是相對(duì)核心的步驟。
拆分下來,最細(xì)粒度的是每一個(gè)處理動(dòng)作的定義。
后續(xù)基本能夠放心的外出,在收到臨時(shí)的報(bào)警后,心里也會(huì)波瀾不驚了。
無論如何,這都是故障自愈的一個(gè)好的開始。
本文轉(zhuǎn)載自微信公眾號(hào)「楊建榮的學(xué)習(xí)筆記」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系楊建榮的學(xué)習(xí)筆記公眾號(hào)。