mysql5.7使⽤binlog恢复数据的⽅法
第⼀步:保证mysql已经开启binlog
show variables like '%log_bin%';
log_bin 为 on是开启。
第⼆步:进⼊binlog⽂件⽬录,到⼆进制⽇志⽂件
mysql> show binary logs; #获取binlog⽂件列表
mysql> show master status; #查看当前正在写⼊的binlog⽂件
mysql> reset master; 重置binlog
第三步:通过mysqlbinlog⼯具命令查看数据库增删改查记录(必须切换到mysqlbinlog⽬录才有效)或者直接指定binlog
truncate的数据如何恢复
例⼦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 >
/
例⼦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 > /
例⼦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
图⽚和例1、例2内容⼀样看到了truncate操作和记录点就可以做恢复操作了!
第四步:测试利⽤bin_log恢复数据
登录mysql
测试:
1、 reset master; 重置binlog并重新⽣成记录⽇志
2、测试某个表插⼊⼀条数据然后不⼩⼼删除了。
3、查看bin-log 命令:show binlog events in ‘mysql-bin.000001';
如上图
我们看到删除点在928到 1294 ;之前的新增的数据在154到520
/usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.000001 --start-position 154 --stop-position 520 | mysql -uroot -p g_shoptest
执⾏完毕之后去看看删除那条数据吧⼜回来了
binlog命令
1.最长⽤的就是回复指定数据端的数据了,可以直接恢复到数据库中:
mysqlbinlog --start-date="2021-3-12 14:00:00" --stop-date="2021-3-12 14:03:00" mysql_bin.000001 |m
ysql -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 > /
到此这篇关于mysql5.7使⽤binlog 恢复数据的⽅法的⽂章就介绍到这了,更多相关mysql binlog 恢复数据内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。