通过下面的命令查询日志的状态
show variables like '%log_bin%';
on 打开,off关闭,当前是打开的
如果没有打开,在my.cnf文件设置开启他
log_bin_basename 就是存储binlog日志文件的目录文件
这个.000结尾的都是存储的增删改sql,不纪录查询sql
执行下面的命令可以查看所有binlog日志的文件信息
show master logs;
这个命令可以查询最新的binlog日志文件,和最后一个位置Position
show master status;
使用cat命令的时候,会显示乱码
我们使用下面的命令来查看日志
SHOW binlog EVENTS in 'mall-mysql-bin.000011';
我们先看下当前的数据
我们删除一部分数据,在看下
我们来重新生成一个日志文件,用于备份之后的操作数据增删改sql,在查看一下
flush logs;
可以看到12就创建了
我们从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中执行上面的命令
可以看到数据已经恢复了
删除数据库请慎重操作
我们也可以对数据库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
执行之后,我们的数据也恢复了
我们删除binlog日志文件的时候,不能通过rm -rf 去删除,这样删除会报错。
要通过命令的方式来删除
我们先查看下当前的日志文件
show binary logs;
我们来看下部分删除,删除000014之前的数据,000014不会被删除
purge master logs to 'mall-mysql-bin.000014';
可以看到数据已经被删除了
要想删除全部日志文件可以使用下面的命令,但是慎用,一旦删除,就无法在恢复数据了
慎用,慎用,慎用 重要的事情说三遍
reset master;
可以看到数据已经被删除了,又从001开始了