博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL 数据库增量数据恢复案例
阅读量:4108 次
发布时间:2019-05-25

本文共 2573 字,大约阅读时间需要 8 分钟。

转自

http://blog.jobbole.com/105648/

一、场景概述

  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语句删除(也可通过时间和位置点),再恢复到数据库

转载地址:http://vmpsi.baihongyu.com/

你可能感兴趣的文章
Mac OS 10.6.5上如何默认启动mysq服务
查看>>
IC设计流程
查看>>
Linux下的redis安装和发布订阅
查看>>
实现刮刮乐的效果
查看>>
JavaScript箭头函数中的this详解
查看>>
I/O系统,多线程、图形用户界面编程
查看>>
矩阵优化总结
查看>>
Learn GIT
查看>>
xmoj142
查看>>
Tensorflow常用方法
查看>>
Centos7中给gitLab汉化
查看>>
mysql中的列属性
查看>>
MQTT协议理解
查看>>
DataBase -- Employees Earning More Than Their Managers My Submissions Question
查看>>
转载一篇让你全面了解什么是.NET。
查看>>
python基础—基本数据类型(int bool str)
查看>>
Niagara基于javascript的控件开发
查看>>
简单的NDK编译生SO文件
查看>>
hadoop-2.2.0多个队列资源分配
查看>>
php get post 发送与接收
查看>>