通过下面的命令查询日志的状态
show variables like '%log_bin%';
on 打开,off关闭,当前是打开的
![](https://img-blog.csdnimg.cn/img_convert/5b82d033d22f674137e5d46b2e4c80b7.png)
如果没有打开,在my.cnf文件设置开启他
![](https://img-blog.csdnimg.cn/img_convert/762181f54843e13d47ce7fe95b7676d8.png)
log_bin_basename 就是存储binlog日志文件的目录文件
![](https://img-blog.csdnimg.cn/img_convert/8431b0c750ca8dea656e9ea71d3e8305.png)
这个.000结尾的都是存储的增删改sql,不纪录查询sql
执行下面的命令可以查看所有binlog日志的文件信息
show master logs;
![](https://img-blog.csdnimg.cn/img_convert/a630b5d33ec092b82108705422bc23bb.png)
这个命令可以查询最新的binlog日志文件,和最后一个位置Position
show master status;
![](https://img-blog.csdnimg.cn/img_convert/5e55aecc42757a2c22ed4289d047c3aa.png)
使用cat命令的时候,会显示乱码
![](https://img-blog.csdnimg.cn/img_convert/914e5bb895cc4c7f85a31a67a5a5e6d8.png)
我们使用下面的命令来查看日志
SHOW binlog EVENTS in 'mall-mysql-bin.000011';
![](https://img-blog.csdnimg.cn/img_convert/98262f2bdd09b547564e7eb93047b395.png)
我们先看下当前的数据
![](https://img-blog.csdnimg.cn/img_convert/8d58104aa07fe8829ec1f24a056f6d1d.png)
我们删除一部分数据,在看下
![](https://img-blog.csdnimg.cn/img_convert/e4c87a6512200fd0487122e7c1e4dbc7.png)
我们来重新生成一个日志文件,用于备份之后的操作数据增删改sql,在查看一下
flush logs;
可以看到12就创建了
![](https://img-blog.csdnimg.cn/img_convert/2bbab8b2fee0ad30d61698634b78666c.png)
我们从End_log_pos的1200位置来恢复数据
db1 你的数据库的名字
mall-mysql-bin.000011 之前的日志文件
/usr/bin/mysqlbinlog --stop-position=1200 --database=db1 /var/lib/mysql/mall-mysql-bin.000011 | /usr/bin/mysql -uroot -p123456 -v db1
在linux中执行上面的命令
![](https://img-blog.csdnimg.cn/img_convert/8a36531071897e6aa239044dfdd57cce.png)
可以看到数据已经恢复了
![](https://img-blog.csdnimg.cn/img_convert/a63f2c22e8b508956e1e541b7fb7e3a6.png)
删除数据库请慎重操作
我们也可以对数据库db1删除,删除之后,重新创建一个db1数据库的名字
--start-position 开始的位置 不写就是从最早的开始
--stop-position 结束的位置
在执行操作之前,看一下日志的文件内容,是否有建表语句,确定好之后,在操作
/usr/bin/mysqlbinlog --start-position=398 --stop-position=1294 --database=db1 /var/lib/mysql/mall-mysql-bin.000015 | /usr/bin/mysql -uroot -p123456 -v db1
执行之后,我们的数据也恢复了
![](https://img-blog.csdnimg.cn/img_convert/89336934a575c77ecbf58379594503aa.png)
我们删除binlog日志文件的时候,不能通过rm -rf 去删除,这样删除会报错。
要通过命令的方式来删除
我们先查看下当前的日志文件
show binary logs;
![](https://img-blog.csdnimg.cn/img_convert/c8e4bf2ca2d3c22f46ff47d368eede96.png)
我们来看下部分删除,删除000014之前的数据,000014不会被删除
purge master logs to 'mall-mysql-bin.000014';
![](https://img-blog.csdnimg.cn/img_convert/980b788f0cb4fa83eba16f2e67d1ac8d.png)
可以看到数据已经被删除了
![](https://img-blog.csdnimg.cn/img_convert/1951722cd01b9aca943370923ff7cb97.png)
要想删除全部日志文件可以使用下面的命令,但是慎用,一旦删除,就无法在恢复数据了
慎用,慎用,慎用 重要的事情说三遍
reset master;
![](https://img-blog.csdnimg.cn/img_convert/0148b10ee468fe91fa844612ae649d44.png)
可以看到数据已经被删除了,又从001开始了
![](https://img-blog.csdnimg.cn/img_convert/f05ec86f5875d0a1daa5f9c622ce7d50.png)