mysql5.7使用binlog 恢复数据的方法

2022-05-15 0 274

第一步:保证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 恢复数据内容请搜索NICE源码以前的文章或继续浏览下面的相关文章希望大家以后多多支持NICE源码!

免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

NICE源码网 MySql mysql5.7使用binlog 恢复数据的方法 https://www.niceym.com/37643.html