在MYSQL维护或者开发上,多多少少都会因为一些问题造成一些失误的操作而导致数据出错,如果没有备份,快照的话,那问题是很大的,特别是在生产环境中。所以说数据就是金钱,有备份风险就少一些。
下面的方法,是没有备份,快照的情况下进行数据恢复的,前提下Mysql要开启Binlog的设置,要不然只能找专业的数据恢复公司来操作了。
下面的方法是恢复就需要用到Mysql binlog这些文件。文件中记录着数据库的所有操作,是将数据库之前所执行的语句重新执行一次,以达到恢复效果
方法一:使用到sqlbinlog工具
具体步骤:
1、先找到binlog文件,一般都是在mysql的data文件夹中,结尾以.00000X等形式结束。
2、寻找需要还原的时间点 使用语句 #mysqlbinlog [文件名]
例(MySQLbinlog xxbin.000001)来查看内容,然后找到对应的具体时间
3、导出sql语句,使用语句 #mysqlbinlog [文件名] > sql文件路径
例(mysqlbinlog xxxbin,00001 > a.sql | mysql -u root -p )
如果需要指定时间导出--start--date -stop=' ' --date=' ' 来导出指定时间执行的语句
例:sqlbinlog --start-stop='2015-11-22 10:00:00' xxbin.000001>a.sql | mysql -u root -p
这句意思是导出在2015-11-22 10点之前的语句,反之start是导出时间之后的。 start和stop可以同时使用。
如果存在多个bin文件,则按照需要导出。
4、使用mysql将导出的语句执行一次。
参考:https://www.cnblogs.com/zhoujinyi/archive/2012/12/26/2834897.html
方法二:使用开源工具binlog2sql快速回滚
安装
pip install -r requirements.txt
详情的操作方法可以参考:
https://www.jb51.net/article/99553.htm
https://www.cnblogs.com/paul8339/p/8505964.html
https://www.jianshu.com/p/6432188bc3d9
方法三:使用美团开源工具MySQL闪回工具--MyFlash
美团开源的这个工具,是能对得到它的闪回的,操作方法和bing2sql差不多。不过只支持5.6与5.7
详情操作方式可参考:
https://www.cnblogs.com/lijiaman/p/12770415.html
https://blog.csdn.net/weixin_41407372/article/details/78813389