1. 程式人生 > >Mysql 二進位制日誌恢復資料

Mysql 二進位制日誌恢復資料

前幾天因為一個應用系統需要更新,不小心手一抖把自己的部落格的資料庫給刪了,資料庫也沒有備份,當時心裡那個毛焦火辣啊,還好在網上說可以用binlog恢復資料,還好還好,哈哈。

原文地址:小時刻個人技術部落格:http://small.aiweimeng.top/index.php/archives/30.html

下面記錄下二進位制日誌恢復過程:
前提是需要開啟mysql二進位制日誌。
開啟方法:
1.在mysql配置檔案中新增配置項:【配置檔案一般在/etc/my.conf

#選項新增
[mysqld]
#日誌檔名稱,未指定位置,預設資料檔案位置
log-bin=mysql-bin

重啟mysql服務。

2.一些操作
  檢視日誌檔案

mysql> show binary logs;   或者 show master logs;

 檢視正在寫入的日誌檔案:

mysql> show master status;

 檢視當前binlog檔案內容:

mysql> show binlog events;  
# 可以指定日誌檔案檢視show binlog events in 'mysql-bin.000001';

刪除所有二進位制日誌,並從新開始記錄

mysql> show master status;
# 重新開始
mysql> reset master; 

匯出二進位制日誌檔案

# 匯出sql檔案
mysqlbinlog  binlog.000001 >1.sql 
# 按時間匯出
mysqlbinlog --start-datetime="2016-12-20 11:25:56" --stop-datetime="2016-12-20 14:20:10" mysql-bin.000001 > /data/test01.log 
# 按事件位置匯出
mysqlbinlog --start-position=203  --stop-position=203 mysql-bin.000001 > /data/test02.log 

資料恢復

1.完整恢復

mysql localhost mysql-bin.000001 | mysql -uroot -p

 2.時間點的恢復

mysqlbinlog --stop-date='2016-12-02 9:59:59' mysql-bin.000001 | mysql -uroot -p

mysqlbinlog --start-datetime="2016-12-20 11:25:56" --stop-datetime="2016-12-20 14:20:10" mysql-bin.000001 | mysql -u root -p

3.位置恢復,通過檢視日誌檔案資訊,確認6259-6362為誤操作點 

mysqlbinlog --start-position=5786 --stop-position=6254 mysql-bin.000001 | mysql -uroot -p

mysqlbinlog --start-position=6363 mysql-bin.000001 | mysql -uroot -p #從6259的事件開始讀