Mysql 二進位制日誌恢復資料
阿新 • • 發佈:2018-12-25
前幾天因為一個應用系統需要更新,不小心手一抖把自己的部落格的資料庫給刪了,資料庫也沒有備份,當時心裡那個毛焦火辣啊,還好在網上說可以用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的事件開始讀