MySQL 数据库增量数据恢复案例

 MySQL 数据库增量数据恢复案例

1、场景概述

  1. MySQL数据库每日零点自动全备
  2. 某天上午10点,小明莫名其妙地drop了一个数据库
  3. 咱们须要经过全备的数据文件,以及增量的binlog文件进行数据恢复

2、主要思想

  1. 利用全备的sql文件中记录的CHANGE MASTER语句,binlog文件及其位置点信息,找出binlog文件增量的部分
  2. 用mysqlbinlog命令将上述的binlog文件导出为sql文件,并剔除其中的drop语句
  3. 经过全备文件和增量binlog文件的导出sql文件,就能够恢复到完整的数据

3、过程示意图

QQ截图20160802163433

4、操做过程

1. 模拟数据mysql

 

 

2. 全备命令git

 

 

3. 继续插入数据github

 

 

此时,全备以后到误操做时刻之间,用户写入的数据在binlog中,须要恢复出来sql

4.查看全备以后新增的binlog文件数据库

 

 

这是全备时刻的binlog文件位置,即mysql-bin.000003的107行,所以在该文件以前的binlog文件中的数据都已经包含在这个全备的sql文件中了vim

5. 移动binlog文件,并读取sql,剔除其中的drop语句ide

 

 

在恢复全备数据以前必须将该binlog文件移出,不然恢复过程当中,会继续写入语句到binlog,最终致使增量恢复数据部分变得比较混乱spa

6. 恢复数据日志

 

 

5、小结

  • 适合人为SQL语句形成的误操做或者没有主从复制等的热备状况宕机时的修复
  • 恢复条件要全备和增量的全部数据
  • 恢复时建议对外中止更新,即禁止更新数据库
  • 先恢复全量,而后把全备时刻点之后的增量日志,按顺序恢复成SQL文件,而后把文件中有问题的SQL语句删除(也可经过时间和位置点),再恢复到数据库



相关文章
相关标签/搜索