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 8.0.24 安装配置方法图文教程
May 12 MySQL
MySQL中的布尔值,怎么存储false或true
Jun 04 MySQL
MySQL如何解决幻读问题
Aug 07 MySQL
MySQL对数据表已有表进行分区表的实现
Nov 01 MySQL
一篇文章看懂MySQL主从复制与读写分离
Nov 07 MySQL
MySQL表类型 存储引擎 的选择
Nov 11 MySQL
MySQL常见优化方案汇总
Jan 18 MySQL
MySQL 开窗函数
Feb 15 MySQL
MySQL数据库如何给表设置约束详解
Mar 13 MySQL
MySQL 分区表中分区键为什么必须是主键的一部分
Mar 17 MySQL
Mysql 8.x 创建用户以及授予权限的操作记录
Apr 18 MySQL
delete in子查询不走索引问题分析
Jul 07 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 session有效期session.gc_maxlifetime
2011/04/20 PHP
二招解决php乱码问题
2012/03/25 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
Track Image Loading效果代码分析
2007/08/13 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
jquery插件splitScren实现页面分屏切换模板特效
2015/06/16 Javascript
javascript动画算法实例分析
2015/07/31 Javascript
微信小程序 购物车简单实例
2016/10/24 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
荐书|您有一份JavaScript书单待签收
2017/07/21 Javascript
Vue列表页渲染优化详解
2017/07/24 Javascript
Vue 通过自定义指令回顾v-内置指令(小结)
2018/09/03 Javascript
vue中keep-alive组件的入门使用教程
2019/06/06 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
python多线程操作实例
2014/11/21 Python
Python中的字典遍历备忘
2015/01/17 Python
详解Python多线程Selenium跨浏览器测试
2017/04/01 Python
JS设计模式之责任链模式实例详解
2018/02/03 Python
深入浅析Python传值与传址
2018/07/10 Python
将python运行结果保存至本地文件中的示例讲解
2019/07/11 Python
Python list与NumPy array 区分详解
2019/11/06 Python
kafka-python 获取topic lag值方式
2019/12/23 Python
python连接PostgreSQL过程解析
2020/02/09 Python
解决Opencv+Python cv2.imshow闪退问题
2020/04/24 Python
Python程序慢的重要原因
2020/09/04 Python
彻底搞懂python 迭代器和生成器
2020/09/07 Python
HTML5实现签到 功能
2018/10/09 HTML / CSS
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
什么是规则表达式
2012/05/03 面试题
路政管理求职信
2014/06/18 职场文书
公司合作意向书范文
2014/07/30 职场文书
廉洁自律承诺书2015
2015/01/22 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL