MySQL 數據庫增量數據恢復案例

 MySQL 數據庫增量數據恢復案例

1、場景概述

  1. MySQL數據庫每日零點自動全備
  2. 某天上午10點,小明莫名其妙地drop了一個數據庫
  3. 咱們須要經過全備的數據文件,以及增量的binlog文件進行數據恢復

2、主要思想

  1. 利用全備的sql文件中記錄的CHANGE MASTER語句,binlog文件及其位置點信息,找出binlog文件增量的部分
  2. 用mysqlbinlog命令將上述的binlog文件導出爲sql文件,並剔除其中的drop語句
  3. 經過全備文件和增量binlog文件的導出sql文件,就能夠恢復到完整的數據

3、過程示意圖

QQ截圖20160802163433

4、操做過程

1. 模擬數據mysql

 

 

2. 全備命令git

 

 

3. 繼續插入數據github

 

 

此時,全備以後到誤操做時刻之間,用戶寫入的數據在binlog中,須要恢復出來sql

4.查看全備以後新增的binlog文件數據庫

 

 

這是全備時刻的binlog文件位置,即mysql-bin.000003的107行,所以在該文件以前的binlog文件中的數據都已經包含在這個全備的sql文件中了vim

5. 移動binlog文件,並讀取sql,剔除其中的drop語句ide

 

 

在恢復全備數據以前必須將該binlog文件移出,不然恢復過程當中,會繼續寫入語句到binlog,最終致使增量恢復數據部分變得比較混亂spa

6. 恢復數據日誌

 

 

5、小結

  • 適合人爲SQL語句形成的誤操做或者沒有主從複製等的熱備狀況宕機時的修復
  • 恢復條件要全備和增量的全部數據
  • 恢復時建議對外中止更新,即禁止更新數據庫
  • 先恢復全量,而後把全備時刻點之後的增量日誌,按順序恢復成SQL文件,而後把文件中有問題的SQL語句刪除(也可經過時間和位置點),再恢復到數據庫



相關文章
相關標籤/搜索