即使刪了全庫,保證半小時(shí)恢復(fù)

2018-09-06 17:09 更新
近期一篇《就這樣把根目錄刪了?。?!》引發(fā)了廣泛的討論,《如何防止根目錄被刪》匯總了7種防刪方案。還有同學(xué)評(píng)論中反饋“不小心把庫刪了”,如何快速恢復(fù)刪掉的數(shù)據(jù)庫,是今天要討論的話題。

【高可用數(shù)據(jù)庫架構(gòu)】

一般來說數(shù)據(jù)庫集群會(huì)是主從架構(gòu)

主從架構(gòu)
或者主主架構(gòu): 
主主架構(gòu)

如果此時(shí)主庫宕機(jī),可以:

(1)一個(gè)從庫頂上,重建集群

(2)流量遷移到另一個(gè)主庫

來保證數(shù)據(jù)的安全性與服務(wù)的可用性。


但是,如果人為不小心執(zhí)行了“刪全庫”操作,命令會(huì)同步給其他從(主)庫,導(dǎo)致所有庫上的數(shù)據(jù)全部丟失,這下怎么辦呢?

可以問問自己,當(dāng)這種情況發(fā)生的時(shí)候

(1)能不能恢復(fù)數(shù)據(jù)?(應(yīng)該沒有公司不能)

(2)多久能夠恢復(fù)數(shù)據(jù)?

保證數(shù)據(jù)的安全性是DBA第一要?jiǎng)?wù)。


【全量備份+增量備份】

常見的數(shù)據(jù)庫安全性策略是:全量備份+增量備份。

全量備份
全量備份:定期(例如一個(gè)月)將庫文件全量備份

增量備份
增量備份:定期(例如每天)將binlog增量備份

如果不小心誤刪了全庫,可以這么恢復(fù)

(1)將最近一次全量備份的全庫找到,拷貝回來(文件一般比較大),解壓,應(yīng)用

(2)將最近一次全量備份后,每一天的增量binlog找到,拷貝回來(文件較多),依次重放

(3)將最近一次增量備份后,到執(zhí)行“刪全庫”之前的binlog找到,重放

恢復(fù)完畢。

為了保證方案的可靠性,建議定期進(jìn)行恢復(fù)演練。


方案優(yōu)點(diǎn)能夠找回?cái)?shù)據(jù)

方案缺點(diǎn)恢復(fù)時(shí)間非常長(zhǎng)

有沒有更優(yōu),更快恢復(fù)的方案呢?


【1小時(shí)延時(shí)從】

使用1小時(shí)延時(shí)從庫,可大大加速“刪全庫”恢復(fù)時(shí)間。

1小時(shí)延時(shí)從

什么是1小時(shí)延時(shí)從?

如圖所示,增加一個(gè)從庫,這個(gè)從庫不是實(shí)時(shí)與主庫保持同步的,而是每隔1個(gè)小時(shí)同步一次主庫,同步完之后立馬斷開1小時(shí),這個(gè)從庫會(huì)與主庫保持1個(gè)小時(shí)的數(shù)據(jù)差距。

當(dāng)“刪全庫”事故發(fā)生時(shí),只需要:

(1)應(yīng)用1小時(shí)延時(shí)從

(2)將1小時(shí)延時(shí)從最近一次同步時(shí)間到,將執(zhí)行“刪全庫”之前的binlog找到,重放

快速恢復(fù)完畢。


方案優(yōu)點(diǎn)能夠快速找回?cái)?shù)據(jù)

潛在不足:萬一,萬一,萬一,1小時(shí)延時(shí)從正在連上主庫進(jìn)行同步的一小段時(shí)間內(nèi),發(fā)生了“刪全庫”事故,那怎么辦咧?


【雙份1小時(shí)延時(shí)從】

使用雙份1小時(shí)延時(shí)從庫,可以避免上述“萬一,萬一,萬一”的事故發(fā)生。

雙份1小時(shí)延時(shí)從

什么是雙份1小時(shí)延時(shí)從?

如圖所示,兩個(gè)1小時(shí)延時(shí)從,他們連主庫同步數(shù)據(jù)的時(shí)間“岔開半小時(shí)”。

這樣,即使一個(gè)延時(shí)從連上主庫進(jìn)行同步的一小段時(shí)間內(nèi),發(fā)生了“刪全庫”事故,依然有另一個(gè)延時(shí)從保有半小時(shí)之前的數(shù)據(jù),可以實(shí)施快速恢復(fù)。


方案優(yōu)點(diǎn):沒有萬一,都能快速恢復(fù)數(shù)據(jù)

潛在不足:資源利用率有點(diǎn)低,為了保證數(shù)據(jù)的安全性,多了2臺(tái)延時(shí)從,降低了從庫利用率


【提高從庫效率】

提高從庫效率

1小時(shí)延時(shí)從也不是完全沒有用,對(duì)于一些“允許延時(shí)”的業(yè)務(wù),可以使用1小時(shí)延時(shí)從,例如:

(1)運(yùn)營后臺(tái),產(chǎn)品后臺(tái)

(2)BI進(jìn)行數(shù)據(jù)同步

(3)研發(fā)進(jìn)行數(shù)據(jù)抽樣,調(diào)研

但需要注意的是,畢竟這是從庫,只能夠提供“只讀”服務(wù)喲。


【總結(jié)】

保證數(shù)據(jù)的安全性是DBA第一要?jiǎng)?wù),需要進(jìn)行:

(1)全量備份+增量備份,并定期進(jìn)行恢復(fù)演練,但該方案恢復(fù)時(shí)間較久,對(duì)系統(tǒng)可用性影響大

(2)1小時(shí)延時(shí)從,雙份1小時(shí)延時(shí)從能極大加速數(shù)據(jù)庫恢復(fù)時(shí)間

(3)個(gè)人建議1小時(shí)延時(shí)從足夠,后臺(tái)只讀服務(wù)可以連1小時(shí)延時(shí)從,提高資源利用率


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)