目录
一、相关命令
二、开启binlog
三、演示数据恢复
MySql学习专栏
1. MySQL基础架构详解
2. MySQL索引底层数据结构与算法
3. MySQL5.7开启binlog日志,及数据恢复简单示例
4. MySQL日志模块
1. 查看是否开启 binlog日志(默认不开启,log_bin值为OF)及日志位置
show variables like '%log_bin%';
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;
修改配置文件/etc/my.cnf,增加如下配置:
log_bin=mysql-bin
binlog-format=ROW #选择row模式
server-id = 1
expire_logs_days=5 #日志过期时间为5天
说明:
1. 查看当前日志文件
show master status;
当前记录日志文件mysql-bin.000001,初始位置2389。
2. 新建数据库zlp-mall,新建表emp,并准备数据如下
3. 再次查看记录位置,发现记录位置已改变
show master status;
4. 查看mysql-bin.000001日志文件的事件信息 ,开始、结束操作位置等
show binlog events in 'mysql-bin.000001';
5. 查看记录日志的详细信息,可以看到sql语句
mysqlbinlog --base64-output=decode-rows -v mysql-bin.000001;
6. 重新开启新日志
7. 开始演示恢复表操作,首先删除表
8. 查看建表位置
root@bd40fdb77dad:/var/lib/mysql# mysqlbinlog --base64-output=decode-rows -v mysql-bin.000001;
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