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 相关文章推荐
MySQL8.0.24版本Release Note的一些改进点
Apr 22 MySQL
详解MySQL数据库千万级数据查询和存储
May 18 MySQL
MySQL官方导出工具mysqlpump的使用
May 21 MySQL
Mysql官方性能测试工具mysqlslap的使用简介
May 21 MySQL
MySQL系列之三 基础篇
Jul 02 MySQL
MySQL一些常用高级SQL语句
Jul 03 MySQL
面试中老生常谈的MySQL问答集锦夯实基础
Mar 13 MySQL
MySQL 主从复制数据不一致的解决方法
Mar 18 MySQL
mysql使用instr达到in(字符串)的效果
Apr 03 MySQL
MySQL 逻辑备份 into outfile
May 15 MySQL
MySQL数据库表约束讲解
Jun 21 MySQL
mysql序号rownum行号实现方式
Dec 24 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
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
PHP支付系统设计与典型案例分享
2016/08/02 PHP
PHP实现上传图片到 zimg 服务器
2016/10/19 PHP
PHP实现的策略模式简单示例
2017/08/25 PHP
php 处理png图片白色背景色改为透明色的实例代码
2018/12/10 PHP
Jquery 最近浏览过的商品的功能实现代码
2010/05/14 Javascript
JS下拉缓冲菜单示例代码
2013/08/30 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
2015/06/18 Javascript
jquery性能优化高级技巧
2015/08/24 Javascript
jquery过滤特殊字符',防sql注入的实现方法
2016/08/17 Javascript
AngularJs 动态加载模块和依赖
2016/09/15 Javascript
Bootstrap和Java分页实例第一篇
2016/12/23 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
vue组件库的在线主题编辑器的实现思路
2020/04/03 Javascript
JS实现小米轮播图
2020/09/21 Javascript
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
python的多重继承的理解
2017/08/06 Python
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
详解Python学习之安装pandas
2019/04/16 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
GNC健安喜官方海外旗舰店:美国著名保健品牌
2017/01/04 全球购物
Fanatics英国官网:美国体育电商
2018/11/06 全球购物
整个世界的设计师家具在哈恩:Designathome
2019/03/25 全球购物
Solaris操作系统的线程机制
2015/07/28 面试题
2015年元旦促销方案书
2014/12/09 职场文书
市场营销计划书
2015/01/17 职场文书
倡议书怎么写?
2019/04/11 职场文书
学习计划是什么
2019/04/30 职场文书
TensorFlow的自动求导原理分析
2021/05/26 Python
Pytorch可视化的几种实现方法
2021/06/10 Python
Python anaconda安装库命令详解
2021/10/16 Python
分享CSS盒子模型隐藏的几种方式
2022/02/28 HTML / CSS