使用binlog日志还原数据详解
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日志还原数据详解的更多相关文章
- MySQL数据库使用mysqldump导出数据详解
mysqldump是mysql用于转存储数据库的实用程序.它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等.接下来通过本文给大家介绍MySQL数 ...
- nginx 日志记录 自定义详解(分析上报用)
nginx 日志记录 自定义详解 1.log_format 普通格式 log_format main '$remote_addr - $remote_user [$time_local] $req ...
- MySQL通过binlog日志恢复数据
一.查看下自己的MySQL是否开启了binlog日志 # 是否启用binlog日志 OFF:关闭 ON:开启 show variables like 'log_bin'; 二.开启binlog日志 在 ...
- android bundle存放数据详解
转载自:android bundle存放数据详解 正如大家所知道,Activity之间传递数据,是将数据存放在Intent或者Bundle中 例如: 将数据存放倒Intent中传递: 将数据放到Bun ...
- 解说mysql之binlog日志以及利用binlog日志恢复数据
众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废 ...
- Java学习-007-Log4J 日志记录配置文件详解及实例源代码
此文主要讲述在初学 Java 时,常用的 Log4J 日志记录配置文件详解及实例源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:20 ...
- [RM HA4] RM状态存储与还原原理详解
RM状态存储与还原机制详解 转载请注明原始链接http://www.cnblogs.com/shenh062326/p/3562199.html. 摘要 本文基于Apache Hadoop社区最新re ...
- java log4j基本配置及日志级别配置详解
java log4j日志级别配置详解 1.1 前言 说出来真是丢脸,最近被公司派到客户公司面试外包开发岗位,本来准备了什么redis.rabbitMQ.SSM框架的相关面试题以及自己做过的一些项目回顾 ...
- InheritableThreadLocal类原理简介使用 父子线程传递数据详解 多线程中篇(十八)
上一篇文章中对ThreadLocal进行了详尽的介绍,另外还有一个类: InheritableThreadLocal 他是ThreadLocal的子类,那么这个类又有什么作用呢? 测试代码 p ...
随机推荐
- NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)
本篇文章由:http://xinpure.com/nsurlsessionnsurlconnection-http-load-failed-kcfstreamerrordomainssl-9802/ ...
- Centos网络时好时超时问题解决
近期公司使用的Centos突然出现网络不稳定现象,有公网,内部可以PING通外网,但是外部PING这个IP时,经常丢包现象,而且一丢包就是连续性的长达七八次,甚至十几次. 这个问题折腾了很长时间,因为 ...
- log4cpp基础测试
// log4cplus.cpp : 定义控制台应用程序的入口点.// #include "stdafx.h" #include <iostream>#include ...
- Object-C中的类-类的声明
1.关键字命名:为了避免与已有的c,C++关键字冲突,ObjectC关键字都有@开始: 如:@classs,@interface,@private,@try,@catch,@protocol等. 2 ...
- Android中MVC、MVP、MVVM具体解释
前言 今天有时间就刚好有想写关于这几个名词.对于我来说.事实上这么多名词.思想归根究竟就是要依据项目实际.人员配置来做合理优化,既不能纸上谈兵.又不能畏惧不前.那么合理分阶段架构和完好代码才是关键,本 ...
- C# 获得文件名
string strFilePaht="文件路径"; Path.GetFileNameWithoutExtension(strFilePath);这个就是获取文件名的 还有的就是用 ...
- sed n/N使用说明
sed的语法格式: sed [option] {sed-command} {input-file} sed在正常情况下,将处理的行读入模式空间(pattern space),脚本中的“sed-comm ...
- redmine 的安装
https://bitnami.com/stack/redmine/installer#官方地址 安装很简单,给权限 chmod +x bitnami-redmine-3.3.0-1-linux-x6 ...
- CEffectMgr类
#ifndef __EFFECTMGR_H__ #define __EFFECTMGR_H__ #include "GameFrameHead.h" namespace cocos ...
- Struts2对AJAX的支持
一.简介 struts2确实一个非常棒的MVC框架.这里部分记述一下struts2对AJAX的支持.实现AJAX有两种方式,一种是使用原生的javascript代码实现,一种是使用第三方 ...