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


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

一、場景概述

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

二、主要思想

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

三、過程示意圖

QQ截圖20160802163433

四、操作過程

1. 模擬數據

 

 

2. 全備命令

 

 

3. 繼續插入數據

 

 

此時,全備之后到誤操作時刻之間,用戶寫入的數據在binlog中,需要恢復出來

4.查看全備之后新增的binlog文件

 

 

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

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

 

 

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

6. 恢復數據

 

 

五、小結

  • 適合人為SQL語句造成的誤操作或者沒有主從復制等的熱備情況宕機時的修復
  • 恢復條件要全備和增量的所有數據
  • 恢復時建議對外停止更新,即禁止更新數據庫
  • 先恢復全量,然后把全備時刻點以后的增量日志,按順序恢復成SQL文件,然后把文件中有問題的SQL語句刪除(也可通過時間和位置點),再恢復到數據庫






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM