zoukankan      html  css  js  c++  java
  • 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的单文件大小上限,因为恢复的时候,一个文件太大不好查找。

  • 相关阅读:
    Bean的装配
    什么是脏读,不可重复读,幻读
    MySQL 中的数据类型介绍
    spring事务
    js:防抖动与节流
    React 之容器组件和展示组件相分离解密
    Java 里如何实现线程间通信
    线程之间的通信
    NIO之Buffer的clear()、rewind()、flip()方法的区别
    清空git缓存
  • 原文地址:https://www.cnblogs.com/ld1226/p/8072492.html
Copyright © 2011-2022 走看看