1)看一下你的mysql服务器有没开启binlog日志(ON为开启,OFF为未开启)

show variables like 'log_bin';

2)找到你的binlog文件在哪

登录 mysql 后,使用如果命令查看binlog日志名称

show binlog events;

show binary logs;

当前活动binlog日志文件

show master status;

然后用find命令找一下上面的日志名称(先退出mysql登录状态哦)

find / -name mysql-bin.000001

3)确定要还原的内容在哪个日志里

一般日志目录下会有多个日志文件(例如:mysql-bin.000001, mysql-bin.000002, mysql-bin.000003等等),你要先确定你的要还原的部分在哪个或哪几个日志里

查看binlog日志内容的方法:

#指定节点查看
mysqlbinlog --start-position=134 --stop-position=899 /var/lib/mysql/mysql-bin.000003
#按时间节点查看
mysqlbinlog --start-datetime='2016-12-07 00:00:00' --stop-datetime='2016-12-07 17:32:00' /var/lib/mysql/mysql-bin.000003
#查看指定库
mysqlbinlog --start-datetime='2016-12-07 00:00:00' --stop-datetime='2016-12-07 17:32:00' -d test /var/lib/mysql/mysql-bin.000003
#当然,linux的 | grep 命令也是可以使用的
mysqlbinlog --start-datetime='2016-12-07 00:00:00' --stop-datetime='2016-12-07 17:32:00' /var/lib/mysql/mysql-bin.000003 -d test | grep table1

4)恢复数据库前先备份数据

#-l 是锁库的意思,-F 是备份成功后刷新binlog日志的意思,即生成一份新binlog日志文件
mysqldump -uroot -proot share -l -F > /tmp/test20161207.sql

5)使用binlog日志还原数据库

#只要在刚刚上面的查看日志的方法后台加 | mysql -u uname -p passwd dbname 就可以还原了
mysqlbinlog --no-defaults --start-position=134 --stop-position=899 /var/lib/mysql/mysql-bin.000003 -d test | mysql -uroot -proot test
#先导出sql数据文件,再进行恢复
mysqlbinlog --no-defaults --start-position=134 --stop-position=899 /var/lib/mysql/mysql-bin.000003 > /tmp/test20161207.sql #-f 是出错继续的意思
mysql -uroot -proot -f test < /tmp/test20161207.sql

6)刷新binlog日志(生成一个新的日志文件)

flush logs;

PS:因为binlog日志记录的是之前的增删改操作,如果后来修改了表结构(增删字段或改变了字段类型),有可能会使之前的sql语句执行错误,还原失败,所以在还原之前要确认一下表结构有没有错误

使用binlog日志还原数据详解的更多相关文章

  1. MySQL数据库使用mysqldump导出数据详解

    mysqldump是mysql用于转存储数据库的实用程序.它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等.接下来通过本文给大家介绍MySQL数 ...

  2. nginx 日志记录 自定义详解(分析上报用)

    nginx 日志记录 自定义详解   1.log_format 普通格式 log_format main '$remote_addr - $remote_user [$time_local] $req ...

  3. MySQL通过binlog日志恢复数据

    一.查看下自己的MySQL是否开启了binlog日志 # 是否启用binlog日志 OFF:关闭 ON:开启 show variables like 'log_bin'; 二.开启binlog日志 在 ...

  4. android bundle存放数据详解

    转载自:android bundle存放数据详解 正如大家所知道,Activity之间传递数据,是将数据存放在Intent或者Bundle中 例如: 将数据存放倒Intent中传递: 将数据放到Bun ...

  5. 解说mysql之binlog日志以及利用binlog日志恢复数据

    众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废 ...

  6. Java学习-007-Log4J 日志记录配置文件详解及实例源代码

    此文主要讲述在初学 Java 时,常用的 Log4J 日志记录配置文件详解及实例源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:20 ...

  7. [RM HA4] RM状态存储与还原原理详解

    RM状态存储与还原机制详解 转载请注明原始链接http://www.cnblogs.com/shenh062326/p/3562199.html. 摘要 本文基于Apache Hadoop社区最新re ...

  8. java log4j基本配置及日志级别配置详解

    java log4j日志级别配置详解 1.1 前言 说出来真是丢脸,最近被公司派到客户公司面试外包开发岗位,本来准备了什么redis.rabbitMQ.SSM框架的相关面试题以及自己做过的一些项目回顾 ...

  9. InheritableThreadLocal类原理简介使用 父子线程传递数据详解 多线程中篇(十八)

      上一篇文章中对ThreadLocal进行了详尽的介绍,另外还有一个类: InheritableThreadLocal 他是ThreadLocal的子类,那么这个类又有什么作用呢?   测试代码 p ...

随机推荐

  1. C#调取java接口

    1. public class APIRequest    {       //public static string commonUrl = @"http://192.168.2.186 ...

  2. Android中将一个图片切割成多个图片[转]

    有种场景,我们想将一个图片切割成多个图片.比如我们在开发一个拼图的游戏,就首先要对图片进行切割. 以下是封装好的两个类,可以实现图片的切割.仅供参考和学习. 一个是ImagePiece类,此类保存了一 ...

  3. ISP图像质量调节介绍

    ISP(Image Signal Processor),即图像处理,主要作用是对前端图像传感器输出的信号做后期处理,主要功能有线性纠正.噪声去除.坏点去除.内插.白平衡.自己主动曝光控制等.依赖于IS ...

  4. Mysql 日期时间类型详解

    MySQL 中有多种数据类型可以用于日期和时间的表示,不同的版本可能有所差异,表3-2 中列出了MySQL 5.0 中所支持的日期和时间类型. 这些数据类型的主要区别如下: * 如果要用来表示年月日 ...

  5. nginx Beginner’s Guide

    这个引导给nginx做了一个基本的介绍,并描述了nginx可以做的一些基本事情. 假设nginx已经安装在了读者的电脑上,如果没有请查看官网安装页. 这个引导描述了怎么去开始和结束nginx,从新加载 ...

  6. 我写的websocket推送例子,每隔5秒服务器向客户端浏览器发送消息(node.js和浏览器)

    node.js服务端 先要安装ws模块的支持 npm install ws 服务端(server.js) var gws; var WebSocketServer = require('ws').Se ...

  7. 微软收购跨平台移动应用开发商Xamarin

    微软今天宣布收购移动应用跨平台开发商 Xamarin.收购金额未知.Xamarin 提供了通过 C# 开发 iOS.Android 和 Windows 原生移动应用的工具,以及云端应用測试平台 – 全 ...

  8. jinja2问题集锦

    用jinja2写模板的时候遇到了一些问题,记录一下 抽出base.html作为模板 之前的小项目写得都很不规范,模板都是能用就行,基本上只用到if语句,for语句和变量.导航栏都是复制粘贴,没有把共同 ...

  9. dependent-name ‘xxx::yyy’ is parsed as a non-type, but instantiation yields a type

    简言之,就是说你该用typename的地方没用typename,如以下代码 template<class Cont> void frontInsertion(Cont& ci) { ...

  10. [转]对P,NP和NPC问题的解释

    总结: 归约(或别的什么叫法):如果解决了问题A,就能用解决A的方法来解决问题B,那么我们说问题B可以归约为/到问题A,本文记为[B]<[A].其含义就是问题A的求解复杂度比问题B要高,比如说A ...