mysql誤刪 mysql資料庫誤刪除後怎麼辦?

2021-10-25 14:31:02 字數 2160 閱讀 9890

在日常運維工作中,對於資料庫的備份是至關重要的!資料庫對於**的重要性使得我們對 mysql 資料庫的管理不容有失!然而是人總難免會犯錯誤,說不定哪天大腦短路了,誤操作把資料庫給刪除了,怎麼辦?

下面,就 mysql 資料庫誤刪除後的恢復方案進行說明。

一、工作場景

mysql資料庫每晚12:00自動完全備份。

某天早上上班,9點的時候,一同事犯暈drop了乙個資料庫!

需要緊急恢復!可利用備份的資料檔案以及增量的binlog檔案進行資料恢復。

二、資料恢復思路

利用全備的sql檔案中記錄的change master語句,binlog檔案及其位置點資訊,找出binlog檔案中增量的那部分。

用mysqlbinlog命令將上述的binlog檔案匯出為sql檔案,並剔除其中的drop語句。

通過全備檔案和增量binlog檔案的匯出sql檔案,就可以恢復到完整的資料。

三、例項說明

首先,要確保mysql開啟了binlog日誌功能。在/etc/my.cnf檔案裡的[mysqld]區塊新增:

然後重啟mysql服務

1.在ops庫下建立一張表customers

2.現在進行全備份

引數說明:

-b:指定資料庫

-f:重新整理日誌

-r:備份儲存過程等

-x:鎖表

–master-data:在備份語句裡新增change master語句以及binlog檔案及位置點資訊

3.再次插入資料

4.此時誤操作,刪除了test資料庫

此時,全備之後到誤操作時刻之間,使用者寫入的資料在binlog中,需要恢復出來!

5.檢視全備之後新增的binlog檔案

這是全備時刻的binlog檔案位置,即mysql-bin.000002的106行,因此在該檔案之前的binlog檔案中的資料都已經包含在這個全備的sql檔案中了

6.移動binlog檔案,並匯出為sql檔案,剔除其中的drop語句,檢視mysql的資料存放目錄,有下面可知是在/var/lib/mysql下

將binlog檔案匯出sql檔案,並vim編輯它刪除其中的drop語句

注意:在恢復全備資料之前必須將該binlog檔案移出,否則恢復過程中,會繼續寫入語句到binlog,最終導致增量恢復資料部分變得比較混亂

7.恢復資料

檢視資料庫,看看ops庫在不在

此時恢復了全備時刻的資料。接著,使用002bin.sql檔案恢復全備時刻到刪除資料庫之間,新增的資料

再次檢視資料庫,發現全備份到刪除資料庫之間的那部分資料也恢復了!!

以上就是mysql資料庫增量資料恢復的例項過程!

最後,總結幾點:

本案例適用於人為sql語句造成的誤操作或者沒有主從複製等的熱備情況宕機時的修復

恢復條件為mysql要開啟binlog日誌功能,並且要全備和增量的所有資料

恢復時建議對外停止更新,即禁止更新資料庫

mysql表誤刪回覆 恢復mysql資料庫誤刪資料

前言 某一天,天朗氣清 突然傳來訊息 資料庫被刪庫了!這簡直不亞於8級大 呀 一找原因,伺服器宕機造成了資料庫資料丟失。於是,通過日誌恢復資料的救援開始了。正文在資料庫開啟binlog功能 找到 etc my.cnf並編輯 沒有my.cnf的時候就找my.ini 新增 log bin mysql b...

MySQL 刪庫跑路?誤刪資料庫後恢復資料

背景 我把庫刪了!還沒有備份!以下的所有操作,需要基於mysql的binlog檔案。如果連binlog檔案都沒了,就不用繼續看下去了。環境 windows 10 mysql 5.7 還是 8.0 好像都可以 總之,一定一定定期備份!同時開啟binlog檔案!具體思路 0.冷靜。立即終止所有資料庫的操...

mysql資料庫效能資料 MYSQL資料庫效能優化

1.選取最適用的字段屬性 表中字段的寬度設得盡可能小 char 的上限為 255 位元組 固定占用空間 varchar 的上限 65535 位元組 實際占用空間 text 的上限為 65535。盡量把字段設定為 not null,執行查詢的時候,資料庫不用去比較 null 值。2.使用連線 join...