MySQL被我弄坏了,跑路是不是最佳选择?
Posted zzzzhi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL被我弄坏了,跑路是不是最佳选择?相关的知识,希望对你有一定的参考价值。
昨天在开发一个新功能的时候,在开发环境,对一部分录入了好几天的数据进行了清洗,但是由于数据类型不对,导致数据的精度发生了变化,于是准备恢复备份数据。
但是,当打开备份数据的时候却发现,只导出了50条数据,因为是通过工具导出的数据,心里瞬间一万个XXX。
怎么办?跑路?
如果能跑路,我是想的。
重新录入?
我可是一万个拒绝的,毕竟这样又得花上好长的时间了。
通过一番
研究发现,也不是完全没有办法,咋们可以用binlog日志文件去恢复数据,那么接下来我们就看看怎么操作吧。
命令SHOW VARIABLES LIKE 'log_%';
如果log_bin为ON为开启,只有开启了binlog才能通过binlog恢复数据
我们可以看到上面有很多个binlog文件,最后一个则是最新的日志文件,当我们误操作的时候,需要马上停止对mysql的写操作,避免记录了更多的binlog数据,可以通过命令
flush logs;
创建一个新的binlog文件,如果是线上环境,需要立马禁止各个账户的写操作。
命令SHOW BINLOG EVENTS IN 'mysql-bin.000090';
上面几条记录,我创建了一个名为test的表和插入了三条数据,最后模拟误删了整个表。
先看看恢复命令mysqlbinlog,该操作是相当于把之前的增删改查数据重新操作一次,我们只要不操作最后一次的误操作既可以达到恢复数据的效果。
--no-defaults 解决unknown variable 'default-character-set=utf8mb4'unknown variable 'default-character-set=utf8mb4'错误
--start-position=N 从日志中等于N的位置开始读
--stop-position=N 从日志中等于和大于N的位置停止读
因为重新执行插入数据部分的记录就是从458到1361,所以命令如下
mysqlbinlog --no-defaults --start-position=458 --stop-position=1361 "D:\Program Files\mysql-8.0.15-winx64\data\mysql-bin.000090" | mysql -u root -p
赶紧收藏这篇文章吧,下次误操作的时候,就不用跑路了!
以上是关于MySQL被我弄坏了,跑路是不是最佳选择?的主要内容,如果未能解决你的问题,请参考以下文章
麦田厦门下区信息数据爬取
无语啊,sublime给我弄乱玩,玩坏了,而且安装插件也安装不了
无法通过 phpMyAdmin 访问数据库
撤销对 origin/master 的提交
除非显式注释,否则不会发现 CDI bean
intellij idea中用java打开文件中文怎么变成乱码了?我用的是UTF-8啊