上一篇文章,我们讲解了如何通过mysql的binlog日志恢复mysql数据库,文章连接为《烂泥:通过binlog恢复mysql数据库》。其中我们提到了的备份数据库要晚与要恢复的数据库时间,即要恢复的数据库在前,而备份的数据库在后。

当时我提到说会单独写一篇文章讲解这个情况,本篇文章我就来介绍如何通过binlog日志恢复比备份数据库早时的数据库状态。我们还是以上篇文章的数据及备份文件为基础,来进行本篇文章的讲解。

ailanni数据库完整备份时,其数据库中有1、2、3、4,这四条数据。而此时mysql总共有三个binlog日志文件:mysql-bin.000001、mysql-bin.000002、mysql-bin.000003。其中在mysql-bin.000001中,我们向ilannitable表中插入两个数据1、2。在mysql-bin.000002中我们向ilannitable表中插入两个数据3、4。

现在我们要求把ailanni数据库恢复到插入数据3后,未插入数据4时的状态。即数据库ailanni中只有数据1、2、3,这三条数据。

分析:要达到上述的要求,我们需要使用到mysql-bin.000002,这个binlog日志文件。然后根据binlog日志恢复数据库使,可以指定pos位置节点的方法,来恢复ailanni数据库。

除此非常重要的是,我们还要先把ailanni数据库先恢复到完整备份时的状态,如果不先把ailanni数据库先恢复到完整备份时的状态,我们在使用binlog日志进行恢复时,系统会报错。

我们需要分以下几个步骤,可以恢复题目要求的ailanni数据库状态。如下:

1、 完整恢复ailanni数据库

2、 删除恢复后ailanni数据库中的全部数据

3、 通过binlog日志恢复ailanni数据库

一、完整恢复ailanni数据库

要完整恢复ailanni数据库,我们可以通过mysql命令来实现。但是在这之前,我们还要就有关ailanni数据库是否存在的情况要说明下。

如果目前mysql数据库服务器上有ailanni这个数据库,那么我们在恢复数据时,就不需要重新创建ailanni数据库。如果目前mysql数据库服务器上没有ailanni这个数据库,那么我们就需要重新创建一个空的ailanni数据库。即该数据库只是一个空的库,里面没有任何表或者其他的元素。

如果不创建ailanni数据库的话,我们在通过mysql命令恢复数据库时,系统就会报错,如下:

现在我们来执行mysql命令导入备份的sql文件,如下:

create database ailanni;

/usr/local/mysql/bin/mysql -uroot -p123456 ailanni</root/ailanni.sql

mysql -uroot -p123456

use ailanni;

select id from ilannitable;

通过上图,我们可以看到ailanni数据库已经完全恢复。

二、删除恢复后ailanni数据库中的全部数据

在第一步中我们已经把ailanni数据库全部恢复,现在我们需要清空ailanni数据库。如下:

delete from ilannitable;

select id from ilannitable;

通过上图,我们可以看到目前ailanni数据库中已经没有数据,是一个空的数据库。

三、通过binlog日志恢复ailanni数据库

第二步已经清空ailanni数据库,这样我们就可以通过mysql的binlog日志来恢复ailanni数据库。

也许你会问我们为什么要先完整恢复ailanni数据库,然后再把ailanni数据库清空?

这个是因为如果我们不先完整恢复ailanni数据库的话,我们在使用binlog进行恢复ailanni数据库时,系统会报错的。如下:

如果我们不清空ailanni数据库的话,你会发下恢复后的ailanni数据库,还是没有达到我们的要求。如下:

所以我们要进行第一、二步的操作。

现在我们来查看mysql-bin.000002文件,以确定ailanni数据库恢复的pos位置节点,如下:

/usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.000002

注意图中标记出来的数字304,这个就是binlog的pos节点位置。我们可以看到在该pos节点后mysql才执行插入数据4的SQL语句。那么我们只需要把数据恢复这个节点即可。

使用如下命令进行恢复数据,如下:

/usr/local/mysql/bin/mysqlbinlog –stop-position=304 /usr/local/mysql/data/mysql-bin.000002 |mysql -uroot -p123456

通过上图,我们现在可以看到ailanni数据库已经恢复到插入数据3之后,未插入4的状态。现在ailanni数据库中确实只有1、2、3,这三条数据,已经达到我们的要求。

其实我们还可以这样说,目前只有mysql的所有binlog日志,而且还有一个比较完整的数据库备份,那么该如何恢复数据库呢?

按照上述方法也是可以恢复的。

通过binlog恢复mysql备份之前的数据相关推荐

  1. mysql binlog 备份_偷偷的删表删库,跑路之前,尝试用binlog恢复MySQL数据

    一. Binlog二进制日志: MySQL的二进制日志binlog可以说是MySQL最重要的日志,它记录了所有的DDL和DML语句(所有的写入,除了(读)数据查询语句select),以事件形式记录,还 ...

  2. 小米MIUI备份/小米助手数据通过BAK进行恢复 | 生成MIUI的descript.xml文件进行数据恢复 | 手动恢复MIUI备份/小米助手数据

    手动恢复MIUI备份数据 同样可以使用下面的方式恢复小米助手备份的数据,不过需要把小米助手备份的数据从bak所属的文件夹里面取出来再进行操作 问题描述 自用小米10 pro经常死机,于是打算恢复出厂设 ...

  3. mysql 备份表和数据_Mysql数据库备份(一)------数据库备份和表备份

    一.Mysql中的数据备份: Mysql中数据备份使用的命令是:mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中.mysqldump命令的 工作原 ...

  4. 云服务器mysql备份与还原数据库命令详解

    备份数据库 mysqldump -u root -p -databases db1 db2 > dbbak.sql 备份全部数据库的数据和结构 mysqldump -uroot -p123456 ...

  5. 恢复MySQL 表结构 和数据

    一.恢复表结构 Linux系统安装dbsake a.创建目录 cd /usr/local/ mkdir dbsake cd dbsake b.安装 curl -s get.dbsake.net > ...

  6. MySQL备份恢复方案

    MySQL备份方案 随着数据不断增加,而且为了兼容以后的innodb存储引擎, 所以考虑采用mysqldump全备+日志增量备份的策略.使用mysqldump对于mysql大部分mysql存储引擎比如 ...

  7. mysql备份恢复专题二(Xtrabackup全库完全恢复原理)

    mysql完全恢复原理 创建测试库 # mysql -uroot -pR00t_123 mysql>create database test; mysql> show databases ...

  8. mysql 分片 数据迁移_简述MySQL分片中快速数据迁移_MySQL

    推荐阅读:MySQL 数据库跨操作系统的最快迁移方法 mysql 备份与迁移 数据同步方法 操作实践背景: travelrecord表定义为10个分片,尝试将10个分片中的2个分片转移到第二台MySQ ...

  9. c mysql备份还原数据库_如何备份和还原MySQL数据库?

    MySQL是一个永久存储数据的数据库服务器.如果使用MySQLServer,那么需要创建数据库备份以便从崩溃中恢复.mysql提供了一个用于备份的实用程序mysqldump.在本文中,将介绍关注与.s ...

最新文章

  1. Design Pattern - Interpreter(C#)
  2. 12篇学通C#网络编程——第一篇 基础之进程线程
  3. [COCI2017-2018#5] Pictionary(并查集+dfs)
  4. 阿里P8亲自教你!熬夜整理华为最新Java笔试题
  5. pyqt5 + pyinstaller 制作爬虫小程序
  6. 今天的弹指一瞬间的飞鸽传书
  7. 索引 mysql_深入理解MySQL索引
  8. 【C012】Python - 基础教程学习(三)
  9. java list filter_Java8使用stream().filter()过滤List对象(查找符合条件的对象集合)
  10. 微信公众平台版面设计需要服务器,谈谈微信公众号如何快速在线排版设计好看又实用的方法...
  11. 第五回 人似秋鸿来有信,事如春梦了无痕
  12. 【双轨公排】小公排+推荐奖+对碰奖+层碰奖+见点奖源码系统 演示网站介绍
  13. wincc c 语言改颜色,wincc常用c脚本小草设置
  14. Voldemort的FailureDetector设计
  15. Airbnb短租分析
  16. 计算机大学生三好学生申请书,大学生三好学生申请书
  17. 农历2017年8月初4_2017年8月25日
  18. 服务器系统登录ilo,华为服务器ILO默认地址
  19. AppScan 是一款web安全扫描工具
  20. DVWA--XSS(Reflected)(全难度)

热门文章

  1. ActionScript 3.0编译器编译错误大全【转】
  2. 技术研究院004---数据仓库系统的实现与使用(含OLAP重点讲解)
  3. C++_类和对象_C++运算符重载_关系运算符重载_对== !=重载实现对象的对比_---C++语言工作笔记059
  4. Netty工作笔记0005---NIO介绍说明
  5. 9W人脸清洗的问题--20170208
  6. NLP之路-实验nltk中的raw 和 words
  7. java两个return_关于java:调用另一个方法时return语句不起作用
  8. java 二维数组对角线_二维数组(矩阵)对角线输出
  9. 无人驾驶(再谈基于camera的高精度地图)
  10. 随想录(学习消费类soc芯片)