一桩惨案,血的教训,不过问题不大

生活琐事 2019年05月09日 18:49 Norsl 263 4

今天本来是准备做博客的评论回复功能的,准备去服务器上把博客的数据库给导出到本地的,结果脑子是短路了还是怎么的,把数据库给删了。当时反应过来后我都懵了,心头在想,这下完了。

然后想到之前有写过数据库备份脚本的,然后心里面好受了点,去备份目录看了看,备份脚本还在,没备份记录????什么鬼??然后看了看crontab定时任务列表,结果没有添加备份任务,当初我是记把备份任务添加进去了啊,然后我就又绝望了,想到彻底完了。坐在瓜坐着,现在回想也不知道当时在想啥。

然后我本地电脑上就只有一个上线前的一个测试数据库,里面什么内容都没有。

然后就网上各种找教程,方法,心里当时很急,然后看到了关键字:binlog。然后就百度了下


binlog

MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。

一般来说开启二进制日志大概会有1%的性能损耗(参见MySQL官方中文手册 5.1.24版)。二进制有两个最重要的使用场景:
其一:MySQL Replication在Master端开启binlog,Mster把它的二进制日志传递给slaves来达到master-slave数据一致的目的。
其二:自然就是数据恢复了,通过使用mysqlbinlog工具来使恢复数据。
二进制日志包括两类文件:二进制日志索引文件(文件名后缀为.index)用于记录所有的二进制文件,二进制日志文件(文件名后缀为.00000*)记录数据库所有的DDL和DML(除了数据查询语句)语句事件。


当大概看了一下后,心里好受了点,还有救。看了下binlog的开关也是开启状态,日志文件都在,恢复的几率很大。大概说下我的恢复流程吧。


首先binlog得开启,我之前也不知道有这么个玩意,当我知道他的时候(也就是今天)它默认是开启状态的,所以你只要之前没有设置过,他应该是开启状态。


查看binlog是否开启,第一个log_bin为ON则是开启状态


最后就是它的日志文件了,日志文件在你的mysql下的data目录里面。文件格式为:mysql-bin.0000*。这个文件可能有多个。


首先可以用mysqlbinlog mysql-bin.000037来查看下里面的内容,有很多,你大概看一下就会发现里面的的sql就是网站运行时所执行的sql,只包括增删改操作,查询是不会记录在里面的。


需要的就是每个日志文件里面的这一些sql。如果你的服务器有多个数据库,则需要筛选

加上 -d 库名 就好了。比如:mysqlbinlog -d blog mysql-bin.000037就是只查看blog库的sql日志。


然后把这些日志文件输出为sql文件

mysqlbinlog -d blog mysql-bin.000037 > 1.sql

mysqlbinlog -d blog mysql-bin.000038 > 2.sql

这两个sql文件就是等会儿要导入的sql文件,不过在导入之前要处理一下


因为我是误删数据库,所以在最后的一个日志文件(也就是2.sql)里面的最后几行会有drop database blog这条sql,这并不是我所要的,所以得把这一条删了,然后保存。


接下来就是导入的过程了,因为我本地有一个空的数据库,所以先导入这个空的数据库到服务器里面,最后依次倒入1.sql,2.sql,然后所有的数据就都已经恢复了。


恢复期间建议关闭相关服务,也建议开启binlog


最后提醒大家,数据库得经常备份,以防万一

说点什么吗?

你的电子邮箱地址不会被公开。必填项已用 * 著名

*
*
验证码
  • 心灵博客 2019年06月02日 13:06

    我安装一开始就关闭binlog,耗资源,不过我有每天备份。 另外建议隔段时间做个快照。

    Norsl 2019年06月02日 13:35

    我也有备份的习惯的,但备份脚本居然没运行,没有加到定时任务,怪我疏忽了。谢谢提醒
  • LILI 2019年05月10日 18:28

    有惊无险啊哈

    Norsl 2019年05月10日 18:33

    当时都以为凉凉了,不然现在就是空库了

Norsl の 个人名片

职业:web开发

现居:四川 成都

Git:https://gitee.com/norsl

邮箱:3136904131@qq.com

最新评论

  • 林三 : 我也很久没有清理友链了,现在更新和回复好多哇!
  • 林三 : 我也好久没有清理友链了,现在更新和回复已经很忙了的说。
  • Norsl : 已经更新好了,就是访问你之前的域访问不到了。
  • 淡然若雅 : 换了新域名,有时间添加下。
  • Norsl : 这存款都是每个月工资里面抠出来的。哈哈哈
  • 萧瑟 : 不错呦,比我当初才出来的时候好多了,竟然还有小笔存款。
  • Norsl : 对啊,后面还要进行改版
  • 摄影博客 : 你自己设计的平台啊。
  • Norsl : 其实也没啥技术含量
  • repostone : 非技术的路过。