使用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 ...
随机推荐
- HTML5学习笔记 音频
HTML5提供了播放音频的标准. Web上的音频 直到现在,仍然不存在一项旨在网页上播放音频的标准. 今天,大多数音频是通过插件比如flash来播放的.然而,并非所有的浏览器都拥有同样的插件. hmt ...
- USES_CONVERSION的使用和注意
USES_CONVERSION是用来转换类型的,比如我们很常见的问题: 在Socket编程时候,我们的IP地址从界面上输进去一般都使用CString类型的,可是在SOCKADDR_IN中的inet_a ...
- 统计重复字符串 如 eeefffkkkhjk 得到如下结果 3e3f3khjk;
//统计重复字符串 如 eeefffkkkhjk 得到如下结果 3e3f3khjk; string zipStr = Console.ReadLine(); var charList = zipStr ...
- C# 获取文件MD5、SHA1
/// <summary> /// 计算文件的 MD5 值 /// </summary> /// <param name="fileName"> ...
- shell中的find和xargs详细解析
- 【iOS开发之Objective-C】书签管理器项目
1.项目 新建一个书签管理器的项目,能够存储书签的网址.中文名.星级.訪问量和权限信息.具有增.删.改.查和排序的功能. 2.找对象,抽象类 书签管理器,书签管理器.书签管理器-- 多读几次书是不是 ...
- 分享几个linux系统版本的查看命令
发布:theboy 来源:net [大 中 小] 查看linux系统版本的命令 有如下命令可供参考: # lsb_release -a LSB Version: :core-3.1-ia ...
- [elk]elasticsearch dashboard+保留10天内索引+导入导出备份
es dashboard 有两款 head 这款我一直在用 https://github.com/mobz/elasticsearch-head 先修改es的配置文件: elasticsearch.y ...
- 安装CentOS7后,无法联网,用yum安装软件提示 cannot find a valid baseurl for repo:base/7/x86_64 的解决方法
无法联网的明显表现会有: 1.yum install出现 Error: cannot find a valid baseurl or repo:base 2.ping host会提示unknown h ...
- 0068 Git入门的第一节课
这是 猴子都懂的Git入门 的学习笔记 Git安装与配置 下载安装Git:http://git-scm.com/ 从开始菜单启动Git Bash $ git --version git version ...