Mysql 二进制日志恢复数据

前几天因为一个应用系统需要更新,不小心手一抖把自己的博客的数据库给删了,数据库也没有备份,当时心里那个毛焦火辣啊,还好在网上说可以用binlog恢复数据,还好还好,哈哈。
下面记录下二进制日志恢复过程:
前提是需要开启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的事件开始读
添加新评论