快速還原mysql資料

2022-03-18 19:43:39 字數 1627 閱讀 3909

一般來說資料庫集群會是主從架構:

或者主主架構:

如果此時主庫宕機,可以:

乙個從庫頂上,重建集群

流量遷移到另乙個主庫

來保證資料的安全性與服務的可用性。

但是,如果人為不小心執行了「刪全庫」操作,命令會同步給其他從(主)庫,導致所有庫上的資料全部丟失,這下怎麼辦呢?

可以問問自己,當這種情況發生的時候:

能不能恢復資料?(應該沒有公司不能)

多久能夠恢復資料?

保證資料的安全性是dba第一要務。

常見的資料庫安全性策略是:全量備份+增量備份。

全量備份:定期(例如乙個月)將庫檔案全量備份

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

如果不小心誤刪了全庫,可以這麼恢復:

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

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

(3)將最近一次增量備份後,到執行「刪全庫」之前的binlog找到,重放

恢復完畢。

為了保證方案的可靠性,建議定期進行恢復演練。

方案優點:能夠找回資料

方案缺點:恢復時間非常長

有沒有更優,更快恢復的方案呢?

使用1小時延時從庫,可大大加速「刪全庫」恢復時間。

什麼是1小時延時從?

增加乙個從庫,這個從庫不是實時與主庫保持同步的,而是每隔1個小時同步一次主庫,同步完之後立馬斷開1小時,這個從庫會與主庫保持1個小時的資料差距。

當「刪全庫」事故發生時,只需要:

(1)應用1小時延時從

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

快速恢復完畢。

方案優點:能夠快速找回資料

潛在不足:萬一,萬一,萬一,1小時延時從正在連上主庫進行同步的一小段時間內,發生了「刪全庫」事故,那怎麼辦咧?

使用雙份1小時延時從庫,可以避免上述「萬一,萬一,萬一」的事故發生。

什麼是雙份1小時延時從?

如圖所示,兩個1小時延時從,他們連主庫同步資料的時間「岔開半小時」。

這樣,即使乙個延時從連上主庫進行同步的一小段時間內,發生了「刪全庫」事故,依然有另乙個延時從保有半小時之前的資料,可以實施快速恢復。

方案優點:沒有萬一,都能快速恢復資料

潛在不足:資源利用率有點低,為了保證資料的安全性,多了2臺延時從,降低了從庫利用率

1小時延時從也不是完全沒有用,對於一些「允許延時」的業務,可以使用1小時延時從,例如:

(1)運營後台,產品後台

(2)bi進行資料同步

(3)研發進行資料抽樣,調研

但需要注意的是,畢竟這是從庫,只能夠提供「唯讀」服務喲。

保證資料的安全性是dba第一要務,需要進行:

(1)全量備份+增量備份,並定期進行恢復演練,但該方案恢復時間較久,對系統可用性影響大

(2)1小時延時從,雙份1小時延時從能極大加速資料庫恢復時間

(3)個人建議1小時延時從足夠,後台唯讀服務可以連1小時延時從,提高資源利用率

參考

快速備份,還原資料庫。

備份資料庫,backup database csq to disk d csq.bak with format,name 放款前 資料庫離線 alter database csq set offline with rollback immediate 還原由backup備份的資料庫 restore ...

MySQL 資料備份與還原

一 資料備份 1 使用mysqldump命令備份 mysqldump命令將資料庫中的資料備份成乙個文字檔案。表的結構和表中的資料將儲存在生成的文字檔案中。mysqldump命令的工作原理很簡單。它先查出需要備份的表的結構,再在文字檔案中生成乙個create語句。然後,將表中的所有記錄轉換成一條ins...

MySQL 資料備份與還原

1 使用mysqldump命令備份 mysqldump命令將資料庫中的資料備份成乙個文字檔案。表的結構和表中的資料將儲存在生成的文字檔案中。mysqldump命令的工作原理很簡單。它先查出需要備份的表的結構,再在文字檔案中生成乙個create語句。然後,將表中的所有記錄轉換成一條insert語句。然...