MySQL5.7开启binlog日志,及数据恢复简单示例

目录

一、相关命令

二、开启binlog

三、演示数据恢复


MySql学习专栏

1. MySQL基础架构详解

2. MySQL索引底层数据结构与算法

3. MySQL5.7开启binlog日志,及数据恢复简单示例

4. MySQL日志模块

 

 

一、相关命令

1. 查看是否开启 binlog日志(默认不开启,log_bin值为OF)及日志位置

show variables like '%log_bin%';

  MySQL5.7开启binlog日志,及数据恢复简单示例_第1张图片

2. 查看产生的 日志文件。

show binary logs;

 

3. 查看当前使用的日志文件,即记录操作的最后一个日志文件

show master status;

 

4. 查看日志事件信息 ,开始、结束操作位置等

show binlog events;

 

5. 查看mysql-bin.000001日志文件的事件信息 ,开始、结束操作位置等

show binlog events in 'mysql-bin.000001';

 

6. 产生新日志,后面的操作会写到新日志中,日志名mysql-bin.00000X+1

flush logs;

7. 清空所有的日志,从mysql-bin.000001开始重新记录日志

 reset master;

8. 查询mysql-bin.000001中记录的操作,不显示sql,要进入到mysql的安装目录中

mysqlbinlog mysql-bin.000001;

9. 查询mysql-bin.000001中记录的操作,会显示sql语句, 要进入到mysql的安装目录中

mysqlbinlog --base64-output=decode-rows -v mysql-bin.000001;

  

二、开启binlog

  修改配置文件/etc/my.cnf,增加如下配置:

log_bin=mysql-bin  
binlog-format=ROW          #选择row模式
server-id = 1
expire_logs_days=5         #日志过期时间为5天 

说明:

  1.   看准log_bin是下划线,不是横杠,mysql-bin是定义的 产生日志的文件名前缀。
  2.   server-id的值随便指定 ,集群环境下不能重复。
  3.     配置完成后,需要重启数据库,此时/var/lib/mysql下已经产生日志文件mysql-bin.index、mysql-bin.000001

、演示数据恢复

1. 查看当前日志文件

show master status;

  MySQL5.7开启binlog日志,及数据恢复简单示例_第2张图片

  当前记录日志文件mysql-bin.000001,初始位置2389。 

2. 新建数据库zlp-mall,新建表emp,并准备数据如下

MySQL5.7开启binlog日志,及数据恢复简单示例_第3张图片

  

3. 再次查看记录位置,发现记录位置已改变

show master status;

  MySQL5.7开启binlog日志,及数据恢复简单示例_第4张图片

4. 查看mysql-bin.000001日志文件的事件信息 ,开始、结束操作位置等

show binlog events in 'mysql-bin.000001';

  MySQL5.7开启binlog日志,及数据恢复简单示例_第5张图片

 

5. 查看记录日志的详细信息,可以看到sql语句

mysqlbinlog --base64-output=decode-rows -v mysql-bin.000001;

  MySQL5.7开启binlog日志,及数据恢复简单示例_第6张图片

6. 重新开启新日志

  MySQL5.7开启binlog日志,及数据恢复简单示例_第7张图片

7. 开始演示恢复表操作,首先删除表 

  MySQL5.7开启binlog日志,及数据恢复简单示例_第8张图片

8. 查看建表位置

root@bd40fdb77dad:/var/lib/mysql#  mysqlbinlog --base64-output=decode-rows -v mysql-bin.000001;

  MySQL5.7开启binlog日志,及数据恢复简单示例_第9张图片

9. 执行恢复语句,查询结果,表及数据恢复完成。

/usr/bin/mysqlbinlog --start-position=2200  -database=zlp-mall  /var/lib/mysql/mysql-bin.000001 /usr/bin/mysql -u root -p zlp123456 -v zlp-mall

 

  

  备注:本篇主要目的是演示binlog的相关命令,其中数据恢复的例子单纯为了演示,实际工作中要复杂的多,相关文章请参考后面的文章

 

参考文档

1. https://www.cnblogs.com/javasl/p/13043971.html

2. https://www.cnblogs.com/YCcc/p/10825870.html

 

 

你可能感兴趣的:(mysql,mysql,binlog,数据恢复)