这篇文章给大家介绍如何在mysql5.7中使用binlog 恢复数据,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
show variables like '%log_bin%'; log_bin 为 on是开启。
mysql> show binary logs; #获取binlog文件列表 mysql> show master status; #查看当前正在写入的binlog文件 mysql> reset master; 重置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
图片和例1、例2内容一样 看到了truncate操作 和记录点 就可以做恢复操作了!
登录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 |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
*问题为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 恢复数据就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。