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分库分表与分区的入门指南
Apr 22 MySQL
MySQL 使用事件(Events)完成计划任务
May 24 MySQL
MySQL 8.0 Online DDL快速加列的相关总结
Jun 02 MySQL
Mysql systemctl start mysqld报错的问题解决
Jun 03 MySQL
MySQL开启事务的方式
Jun 26 MySQL
MySQL窗口函数的具体使用
Nov 17 MySQL
浅谈MySql整型索引和字符串索引失效或隐式转换问题
Nov 20 MySQL
MySQL RC事务隔离的实现
Mar 31 MySQL
delete in子查询不走索引问题分析
Jul 07 MySQL
MySql统计函数COUNT的具体使用详解
Aug 14 MySQL
SQL Server数据库的三种创建方法汇总
May 08 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
第四节 构造函数和析构函数 [4]
2006/10/09 PHP
php heredoc和phpwind的模板技术使用方法小结
2008/03/28 PHP
php中根据变量的类型 选择echo或dump
2012/07/05 PHP
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
yii2实现Ueditor百度编辑器的示例代码
2018/11/02 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
菜鸟javascript基础整理1
2010/12/06 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
探讨JavaScript语句的执行过程
2016/01/28 Javascript
jquery实现手机端单店铺购物车结算删除功能
2017/02/22 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
微信小程序引用公共js里的方法的实例详解
2017/08/17 Javascript
JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】
2017/09/04 Javascript
Koa2 之文件上传下载的示例代码
2018/03/29 Javascript
React组件重构之嵌套+继承及高阶组件详解
2018/07/19 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
小程序自定义弹框效果
2020/11/16 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
Python中for循环控制语句用法实例
2015/06/02 Python
python 多线程实现检测服务器在线情况
2015/11/25 Python
Python 正则表达式入门(初级篇)
2016/12/07 Python
详解python实现小波变换的一个简单例子
2019/07/18 Python
Flask之pipenv虚拟环境的实现
2019/11/26 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
前端实现打印图像功能
2019/08/27 HTML / CSS
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
研发工程师岗位职责
2014/04/28 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
优秀团支部申报材料
2014/12/26 职场文书
清洁工个人总结
2015/03/04 职场文书
2015年学校安全工作总结
2015/04/22 职场文书
资金申请报告范文
2015/05/14 职场文书
2016年“节能宣传周”活动总结
2016/04/05 职场文书
Python中的嵌套循环详情
2022/03/23 Python