mysql如何通过binlog恢复数据

Mysql 938浏览 评论


| 前言


为了给广大喜欢phpbloger,喜欢一俊的朋友更加友好的使用phpbloger,因此我打算在服务器上配置一个测试环境给大家使用,并且完善昨天写的安装程序,也刚好在线上做一波测试,不了在执行install的第三部也就是配置数据库这一步,手残导致数据库名称和服务器生产环境的数据库名称填写成一致了,导致把生产环境的数据替换诚本地的数据了,蛋疼的结果!只能想办法恢复数据了,下面我说下方法,希望能够解决和我遇到同样窘境的小伙伴!


| 方法一 :快照回滚


服务器如果开启了快照的话,直接回滚一下就可以解决,由于我没有设置导致此法不同,好气的有木有!


| 方法二 :binlog 前提是开启了binlog


如果数据库没有开启binlog就比较的蛋疼了,我也不知道怎么才能搞回来,估计没戏,我们下面说如何通过binlog恢复数据

  • 连接数据库

mysql -uroot -ptangyijun520
  • 查看是否有binlog文件

 show master logs;

image.png

  • 讲binlog导出成sql

mysqlbinlog --no-defaults --database=ecard --start-datetime='2017-05-18 09:38:00' /data/mysql/mysql-bin.000005 > log.sql

这里的话容易出错,很多环境运行会出错包括我在内,我的方法是直接全部导出,然后在手动的把错误执行的sql语句删除,在直接导入到数据库即可

我的方法:

mysqlbinlog --no-defaults  /data/mysql/mysql-bin.000005 > log.sql #直接导出到root下了
  • 下载log.sql文件

  • 修改sql文件

    image.png


  • 导入新的sql文件

  • source /root/log.sql
    嘿嘿嘿恢复成功,需要注意的是我这里导出的log是整个数据库的,如果需要单独导出失误操作的数据库还需要自己查查资料!

本文连接:http://www.phpbloger.com/article/16.html 文章都为原创,转载请注明出处!

相关文章