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. MySQL5.6 主从复制 ERROR 1776 (HY000): Parameters MASTER_LOG_FILE

    主从都开启了gtid,在设置从库的时候遇到了问题 mysql> CHANGE MASTER TO MASTER_HOST=‘xxx’,MASTER_USER='replicant',MASTER ...

  2. EMQ 压测问题

    一.单台服务器最高只能跑2W多一点问题描述 一直使用benchmark测试单台EMQ都没有超过3W链接数 一个独立的外网IP只能提供最多6W的端口号,但每个TCP需要分配一个指定的端口号.所以理论上讲 ...

  3. Linux系统里如何彻底的清空终端屏幕?

    Linux用户,特别是Ubuntu或CentOS用户,基本上都习惯使用clear命令或Ctrl+L组合快捷键来清空终端屏幕.但是,这样做其实并不是真正的清空屏幕,它只是给人一种错觉,让人以为屏幕清空了 ...

  4. Python根据系统环境配置日志,Python配置日志 Python logger

    我们通常在写爬虫的时候,需要配置日志,但是有可能是在windows开发的,但是程序的运行环境可是是在Linux中,这时候我们就需要不停的更换日志的目录了 但是我们可以实现通过判断不同的运行环境,来时间 ...

  5. python __path__ 变量

    今天在读django源码的时候遇到了一个问题!它就是__path__这个系统变量 一.__path__变更初见: 由__path__这个变量的名字就知道,这个是一个系统变量,不是用户自定义的变量,于是 ...

  6. unity, standard shader消耗两个draw call

    假设场景中只放一个球,关掉阴影和skybox,球体使用Unlit/Texture shader,则draw call数为2(背景占一个draw call,球占一个draw call). 相同情况下若将 ...

  7. JVM 参数详解

    1.使用$JAVA_HOME/bin/java  可看到所有参数说明 用法: java [-options] class [args...] (执行类) 或 java [-options] -jar ...

  8. Node.js用fs.renameSync报cross-device link not permitted错

    转自: http://blog.csdn.net/starrexstar/article/details/8048722 今天把 Manuel Kiessling 的[The Node Beginne ...

  9. boost 库的安装

    一.windows下 环境:win7 64位 方法1:使用.exe类型的boost进行安装,也就是编译过得,这种方法最简单.下载后直接执行.exe就行了. http://sourceforge.net ...

  10. 实现在edittext中任意插入图片

    Myedittext: public class MyEditText extends EditText { public MyEditText(Context context) { super(co ...