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

Posted 书山有路勤为径,学海无涯苦作舟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 之数据库增量数据恢复案例相关的知识,希望对你有一定的参考价值。

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

一、场景概述

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

二、主要思想

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

三、过程示意图

QQ截图20160802163433

四、操作过程

1. 模拟数据

 

 

2. 全备命令

 

 

3. 继续插入数据

 

 

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

4.查看全备之后新增的binlog文件

 

 

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

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

 

 

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

6. 恢复数据

 

 

五、小结

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

以上是关于MySQL 之数据库增量数据恢复案例的主要内容,如果未能解决你的问题,请参考以下文章

mysql增量备份恢复实战企业案例

MySQL数据库全备和增备增量数据恢复案例以及定时清理 binlog 日志

.NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版

MySQL数据库之Percona全量增量备份与恢复

MySQL之XtraBackup实现完全备份增量备份数据还原

kafka源码系列之mysql数据增量同步到kafka