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
MySQL 数据丢失排查案例
May 08 MySQL
sql注入教程之类型以及提交注入
Aug 02 MySQL
Node-Red实现MySQL数据库连接的方法
Aug 07 MySQL
MySQL数据库超时设置配置的方法实例
Oct 15 MySQL
Mysql关于数据库是否应该使用外键约束详解说明
Oct 24 MySQL
MYSQL 表的全面总结
Nov 11 MySQL
mysql5.6主从搭建以及不同步问题详解
Dec 04 MySQL
MySQL创建定时任务
Jan 22 MySQL
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
Apr 20 MySQL
MySQL 数据表操作
May 04 MySQL
面试官问我Mysql的存储引擎了解多少
Aug 05 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
php读取EXCEL文件 php excelreader读取excel文件
2012/12/06 PHP
php实现memcache缓存示例讲解
2013/12/04 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
微信公众号OAuth2.0网页授权问题浅析
2017/01/21 PHP
javascript 类方法定义还是有点区别
2009/04/15 Javascript
基于jquery的气泡提示效果
2010/05/31 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
jquery连缀语法如何实现
2012/11/29 Javascript
jQuery实现id模糊查询的小例子
2013/03/19 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
2016/05/12 Javascript
JS 循环li添加点击事件 (闭包的应用)
2016/12/10 Javascript
jQuery实现多张图片上传预览(不经过后端处理)
2017/04/29 jQuery
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
浅谈Python类里的__init__方法函数,Python类的构造函数
2016/12/10 Python
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
Python利用turtle库绘制彩虹代码示例
2017/12/20 Python
Centos下实现安装Python3.6和Python2共存
2018/08/15 Python
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
2018/12/27 Python
python实现批量视频分帧、保存视频帧
2019/05/31 Python
让Python脚本暂停执行的几种方法(小结)
2019/07/11 Python
通过 Django Pagination 实现简单分页功能
2019/11/11 Python
利用python在excel中画图的实现方法
2020/03/17 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
python中的unittest框架实例详解
2021/02/05 Python
AC Lens:购买隐形眼镜
2017/02/26 全球购物
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
Noon埃及:埃及在线购物
2019/11/26 全球购物
会议接待欢迎词
2014/01/12 职场文书
酒吧创业计划书
2014/01/18 职场文书
纪律教育学习心得体会
2014/09/02 职场文书
小学生九一八纪念日83周年演讲稿500字
2014/09/17 职场文书
企业团队精神心得体会
2016/01/19 职场文书
解决vue自定义组件@click点击失效问题
2022/04/30 Vue.js