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 16 MySQL
MySQL时间盲注的五种延时方法实现
May 18 MySQL
解析MySQL binlog
Jun 11 MySQL
为什么代码规范要求SQL语句不要过多的join
Jun 23 MySQL
MySQL的安装与配置详细教程
Jun 26 MySQL
MySQL配置主从服务器(一主多从)
Aug 07 MySQL
mysql中int(3)和int(10)的数值范围是否相同
Oct 16 MySQL
MySQL悲观锁与乐观锁的实现方案
Nov 02 MySQL
mysql 索引的数据结构为什么要采用B+树
Apr 26 MySQL
MySQL GTID复制的具体使用
May 20 MySQL
深入理解MySQL中MVCC与BufferPool缓存机制
May 25 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的简单采集数据入库程序
2014/07/30 PHP
php多个文件及图片上传实例详解
2014/11/10 PHP
PHP图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
2020/06/06 PHP
javascript 打开页面window.location和window.open的区别
2010/03/17 Javascript
推荐40款强大的 jQuery 导航插件和教程(上篇)
2012/09/14 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
js实现索引图片切换效果
2015/11/21 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
BootStrap与validator 使用笔记(JAVA SpringMVC实现)
2016/09/21 Javascript
功能强大的jquery.validate表单验证插件
2016/11/07 Javascript
微信小程序 Toast自定义实例详解
2017/01/20 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
webpack构建换肤功能的思路详解
2017/11/27 Javascript
基于vue中css预加载使用sass的配置方式详解
2018/03/13 Javascript
Vue中使用 setTimeout() setInterval()函数的问题
2018/09/13 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
2019/03/15 Javascript
微信小程序缓存支持二次开发封装实现解析
2019/12/16 Javascript
浅析vue cli3 封装Svgicon组件正确姿势(推荐)
2020/04/27 Javascript
JavaScript array常用方法代码实例详解
2020/09/02 Javascript
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
2017/09/08 Python
利用Python找出序列中出现最多的元素示例代码
2017/12/08 Python
在NumPy中创建空数组/矩阵的方法
2018/06/15 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
python实现大转盘抽奖效果
2019/01/22 Python
python3.6下Numpy库下载与安装图文教程
2019/04/02 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
pycharm软件实现设置自动保存操作
2020/06/08 Python
就业协议书的作用
2014/04/11 职场文书
平安建设汇报材料
2014/12/29 职场文书
Pygame Draw绘图函数的具体使用
2021/11/17 Python
微信小程序纯CSS实现无限弹幕滚动效果
2022/09/23 HTML / CSS