背景:
因業務需求在下午四點備份了數據庫文件:back1600.sql;
後來在五點半的時候誤執行了back1600.sql,導致在16:00到17:30之間所有操作過的數據全部還原到四點以前
後來在網上查找了各種資料,最後找到了解決辦法:
利用mysqlbinlog恢復Mysql數據
1:確保Mysql日誌啓動
查看辦法
mysql>show variables like 'log_bin';
未啓動的話(你就悲劇鳥,這篇文章也不用看了~~~),找到Mysql的配置文件my.ini,添加
log-bin = D:/MySQL/log-bin/logbin.log
重啓mysql,重啓後會在D:/MySQL/log-bin目錄下生成logbin.000001 和 logbin.index 兩個文件
2:保存數據到my.sql
D:\MySQL\MySQL Server 5.1\bin\mysqlbinlog --stop-date="2012-07-03 17:30:00" --result-file="D:\my.sql" D:/MySQL/log-bin/logbin.000001 | mysql -uroot -proot
利用mysqlbinlog 導出2012-07-03 17:30:00之前的數據,保存到D:\my.sql
3:恢復數據
mysql> source D:\my.sql
OK,數據恢復到2012-07-03 17:30:00以前了!
後記:
數據庫一定要啓用日誌