mysql5.7使用binlog 恢复数据的方法


Posted in MySQL onJune 03, 2021

第一步:保证mysql已经开启binlog

show variables like '%log_bin%';
log_bin 为 on是开启。

mysql5.7使用binlog 恢复数据的方法

第二步:进入binlog文件目录,找到二进制日志文件

mysql5.7使用binlog 恢复数据的方法

mysql> show binary logs; #获取binlog文件列表
mysql> show master status; #查看当前正在写入的binlog文件
mysql> reset master; 重置binlog

mysql5.7使用binlog 恢复数据的方法

第三步: 通过mysqlbinlog工具命令查看数据库增删改查记录(必须切换到mysqlbinlog目录才有效)或者直接指定binlog

例子1:查询2021-3-12 14:00:00到2021-3-12 14:03:00 数据库为 g_xinxiangshop的操作日志,输入如下命令将数据写入到一个备用的txt文件中

/usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_xinxiangshop --start-datetime=“2021-3-12 14:00:00” --stop-datetime=“2021-3-12 14:03:00” /usr/local/mysql/data/mysql-bin.000001 > /tmp/binlog.txt

例子2:查询2021-3-12 14:00:00到2021-3-12 14:03:00 数据库为 g_xinxiangshop的操作日志,并且过滤出 只包括 g_user表数据的操作记录 ,输入如下命令将数据写入到一个备用的txt文件中

/usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_xinxiangshop --start-datetime=“2021-3-12 14:00:00” --stop-datetime=“2021-3-12 14:03:00” /usr/local/mysql/data/mysql-bin.000001 | grep g_user > /tmp/binlog.txt

例子3:查询2021-3-15 15:25:00到2021-3-15 15:35:00 数据库为 g_shoptest 的操作日志,并输出到屏幕上
/usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_shoptest --start-datetime=“2021-3-15 15:25:00” --stop-datetime=“2021-3-15 15:35:00” /data/mysql/mysql-bin.000001 |more

mysql5.7使用binlog 恢复数据的方法

图片和例1、例2内容一样 看到了truncate操作 和记录点 就可以做恢复操作了!

第四步:测试利用bin_log恢复数据

登录mysql
测试

1、 reset master; 重置binlog并重新生成记录日志

mysql5.7使用binlog 恢复数据的方法

2、 测试某个表 插入一条数据 然后不小心删除了。

mysql5.7使用binlog 恢复数据的方法

mysql5.7使用binlog 恢复数据的方法

3、 查看bin-log 命令:show binlog events in ‘mysql-bin.000001';

mysql5.7使用binlog 恢复数据的方法

如上图
我们看到删除点在928到 1294 ;之前的新增的数据 在154到520

mysql5.7使用binlog 恢复数据的方法

/usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.000001 --start-position 154 --stop-position 520 | mysql -uroot -p g_shoptest

执行完毕之后 去看看删除那条数据吧 又回来了

mysql5.7使用binlog 恢复数据的方法

binlog命令

1.最长用的就是回复指定数据端的数据了,可以直接恢复到数据库中:

mysqlbinlog --start-date="2021-3-12 14:00:00" --stop-date="2021-3-12 14:03:00" mysql_bin.000001 |mysql -uroot -p123456

2.指定开始\结束位置,从上面的查看产生的binary log我们可以知道某个log的开始到结束的位置,我们可以在恢复的过程中指定回复从A位置到B位置的log.需要用下面两个参数来指定:

  • --start-positon="50" //指定从50位置开始
  • --stop-postion="100"//指定到100位置结束

/usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.000001 --start-position 7903538 --stop-position 7904498|mysql -uroot -p123456

**常见错误 ERROR: Error in Log_event::read_log_event(): ‘Found invalid event in binary log', data_len: 31, event_type: 35

*问题为mysqlbinlog版本所导致

查看当前os使用的mysqlbinlog

shell> which mysqlbinlog
/usr/bin/mysqlbinlog

查看mysql当前使用的mysqlbinlog

±--------------±------------------+
| Variable_name | Value |
±--------------±------------------+
| basedir | /usr/local/mysql/ |
±--------------±------------------+

mysql> show variables like ‘basedir';

对比两个版本

shell> /usr/bin/mysqlbinlog --version
shell> /usr/local/mysql/bin/mysqlbinlog --version

解决此问题指定mysqlbinlog路径即可

/usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_xinxiangshop --start-datetime=“2021-3-12 14:00:00” --stop-datetime=“2021-3-12 14:03:00” /usr/local/mysql/data/mysql-bin.000001 > /tmp/binlog.txt

到此这篇关于mysql5.7使用binlog 恢复数据的方法的文章就介绍到这了,更多相关mysql binlog 恢复数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL学习总结-基础架构概述
Apr 05 MySQL
Windows10下安装MySQL8
Apr 06 MySQL
详解Mysql和Oracle之间的误区
May 18 MySQL
mysql主从复制的实现步骤
Oct 24 MySQL
Linux7.6二进制安装Mysql8.0.27详细操作步骤
Nov 27 MySQL
SQL基础查询和LINQ集成化查询
Jan 18 MySQL
MySQL实现字段分割一行转多行的示例代码
Jul 07 MySQL
MySQL中正则表达式(REGEXP)使用详解
Jul 07 MySQL
MySQL提升大量数据查询效率的优化神器
Jul 07 MySQL
MySQL常用慢查询分析工具详解
Aug 14 MySQL
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
Sep 23 MySQL
MySQL8.0无法启动3534的解决方法
zabbix监控mysql的实例方法
Mysql实现主从配置和多主多从配置
Jun 02 #MySQL
Navicat连接MySQL错误描述分析
MySQL不使用order by实现排名的三种思路总结
Jun 02 #MySQL
MySQL连接查询你真的学会了吗?
Jun 02 #MySQL
SQL注入的实现以及防范示例详解
Jun 02 #MySQL
You might like
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
2006/12/06 PHP
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
php echo()和print()、require()和include()函数区别说明
2010/03/27 PHP
php ci框架验证码实例分析
2013/06/26 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
PHP设计模式之装饰者模式代码实例
2015/05/11 PHP
php简单计算年龄的方法(周岁与虚岁)
2016/12/06 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
如何实现修改密码时密码框显示保存到cookie的密码
2013/12/10 Javascript
javascript计时器事件使用详解
2014/01/07 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
javascript中checkbox使用方法简单实例演示
2015/11/17 Javascript
js实现加载页面就自动触发超链接的示例
2017/08/31 Javascript
vue全局使用axios的方法实例详解
2018/11/22 Javascript
微信小程序实现页面浮动导航
2019/01/28 Javascript
VuePress 快速踩坑小结
2019/02/14 Javascript
Vue实现一个图片懒加载插件
2019/03/11 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
JS实现在线ps功能详解
2019/07/31 Javascript
Javascript confirm多种使用方法解析
2020/09/25 Javascript
Vue中使用JsonView来展示Json树的实例代码
2020/11/16 Javascript
[01:07:02]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第三场 2月26日
2021/03/11 DOTA
基于python requests库中的代理实例讲解
2018/05/07 Python
python中int与str互转方法
2018/07/02 Python
python使用selenium登录QQ邮箱(附带滑动解锁)
2019/01/23 Python
Python类反射机制使用实例解析
2019/12/30 Python
opencv+python实现均值滤波
2020/02/19 Python
keras 多gpu并行运行案例
2020/06/10 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
2021/01/13 Python
日本小田急百货官网:Odakyu
2018/07/19 全球购物
中专毕业生自荐信
2013/11/16 职场文书
运动会入场口号
2014/06/07 职场文书
社区党员公开承诺书
2014/08/30 职场文书
超市店长竞聘书
2015/09/15 职场文书
5分钟教你docker安装启动redis全教程(全新方式)
2021/05/29 Redis