前几天因为一个应用系统需要更新,不小心手一抖把自己的博客的数据库给删了,数据库也没有备份,当时心里那个毛焦火辣啊,还好在网上说可以用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的事件开始读