mysql的binlog恢复数据库经历

朋友公司的数据库坏了,幸运的是mysql开启了binlog日志,详细的记录了从建库以来的所有操作,最后有惊无险的使用binlog日志恢复了。

以下为处理过程:

事发原因:

  使用delete语句误删了一个用户的所有数据记录,大概联合有十多张表吧。

恢复过程:

  1.先咨询了一些数据恢复的网站和业内人士,说是可以恢复,造价从几千到上万不等(PS,还是自己来吧)

  2.第一条路走不通,多复杂多难巴拉巴拉的唬谁啊,干脆自己动手,自己试验。

  3.百度科普了一下基础知识,使用mysql提供的binlog恢复工具可以使用。

    这里有一个坑:

      恢复的时候,stop-position需要设置成最早执行delete语句之前的最后一个position,否则会重复执行delete语句(希望我已经解释的很明白了)

  4.(这个很重要)修改mysql的innodb_flush_log_at_trx_commit的值为0, sync_binlog的值为0, 因为这样会显著的提高你恢复的速度。

      至于为什么,推荐阅读http://blog.csdn.net/codepen/article/details/52160715

  5. 数据库恢复后,记得将第4步中的两个参数修改成合适的值,推荐innodb_flush_log_at_trx_commit=2, sync_binlog=500(主要是根据数据的安全性和使用性能上)

删除数据须谨慎!

另外,注意修改一下binlog的单文件大小上限,因为恢复的时候,一个文件太大不好查找。

原文地址:https://www.cnblogs.com/ld1226/p/8072492.html