如果mysql不小心操作失误导致数据错误或者丢失这时候binlog起到了很大的作用
恢复有几种方式
1.按时间恢复--start-datetime
 
如果确定了时间点,那么按时间恢复是一个再好不过的事,一般是通过日常的定期备份+差异备份(日志)
如果日常备份在4点,出错的时间在12:00点,12:30发现的,首先我们要确认12点出了什么错,12点以后的数据还能不能继续使用,如果不影响,那么我们只需跳过12:00执行的数据即可
首先,恢复4点的备份
然后,通过binlog获取4点到11:59的数据,获取的数据可以直接作用到数据库中,避免二次污染,最好先生成sql文件
 mysqlbinlog --start-datetime="2014-11-07 04:01:00"  --stop-datetime="2014-11-07 11:59:00" /data/mysql/data/mysql-bin.000020 >/home/madong/aa.sql
在获取12:01-12:30的数据
 mysqlbinlog --start-datetime="2014-11-07 12:01:00"  --stop-datetime="2014-11-07 12:30:00" /data/mysql/data/mysql-bin.000020 >>/home/madong/aa.sql
最后通过mysql命令行
source   /home/madong/aa.sql
 
如果12点以后的数据还不能继续使用
那么我们只需要恢复到12点,12:00-12:30的数据就不需要恢复
2.通过--start-position节点
思路和上面的一样,首先要确定节点的id,在恢复
 
 
例:
描述:2014-11-07 13:50 游戏数据库数据全部清空
故障发现时间:13:50
故障发生时间:13:40左右
故障结束时间:15:55
恢复过程:
故障触发,游戏马上关服,进行维护,故障原因已知(数据没了)
1.首先确认恢复时间点
恢复带2014-11-07 13:30
2.因为刚开服不久,所以准备从最原始开始恢复,不从4点的完整备份节点恢复
准备不直接操作,先生成sql,
 mysqlbinlog --start-datetime="2014-11-06 09:50:00"  --stop-datetime="2014-11-07 13:30:00" /data/mysql/data/mysql-bin.000020 >/home/madong/aa.sql
(aa.sql 500M左右)
3.因数据库重置之后又有玩家注册,如果导入数据会出现主键冲突,所以再次清空数据库(保留基表数据)
4.导入sql
进入mysql命令行,并切换数据库(use DBNAME)
source /home/madong/aa.sql
执行开始时间14:57
结束时间15:54  大约一个小时

mysql通过binlog恢复数据的更多相关文章

  1. 【转】【MySQL】mysql 通过bin-log恢复数据方法详解

    mysql中bin-log在mysql默认状态下是没有打开的,我们要先打开mysql 开启bin-log功能,然后再通过备份的bin-log进行数据库恢复了. 具体的操作是通过mysqlbinlog这 ...

  2. 不小心删除数据--利用MySQL的binlog恢复数据

    MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与maste ...

  3. Mysql使用binlog恢复数据解决误操作问题的两种方法

    为保证没有其他参数配置影响,重新安装配置了一台最小化安装的CentOS7虚拟机 1. 基础知识
 安装mysql5.6数据库Mysql binlog初步理解 2. 配置mysql 开启binlog.修 ...

  4. 利用mysql的binlog恢复数据

    MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与maste ...

  5. mysql利用binlog恢复数据详细例子

    模拟数据恢复的案例 有些时候脑瓜就会短路,难免会出错 场景:在生产环境中,我们搭建了mysql主从,备份操作都是在从备份数据库上 前提:有最近一天或者最近的全备 或者最近一天相关数据库的备份 最重要的 ...

  6. mysql利用binlog恢复数据

    需求:需要给开发提供一个2018年9月30号的数据,按照我们公司正常备份策略来说,直接找到对应时间的备份数据,解压导入即可,恰好这个时间节点的数据没有,只备份到2018年9月25号的,糟糕了吧 咋办呢 ...

  7. MySQL 5.7 - 通过 BINLOG 恢复数据

    日常开发,运维中,经常会出现误删数据的情况.误删数据的类型大致可分为以下几类: 使用 delete 误删行 使用 drop table 或 truncate table 误删表 使用 drop dat ...

  8. mysql binlog恢复数据实战

    在前面,我们了解了mysql binlog日志的作用以及使用方法:  http://www.php20.cn/article/237 在后面讲到了,可以通过binlog进行恢复数据,那么,具体步骤是怎 ...

  9. MySQL的binlog恢复(Windows下)

    前言 在最近的工作中,由于自己粗(zuo)心(si)误update操作导致几百行的数据出现错误,在心急如焚的同时(那时候我竟然不知道除了备份之后还有binlog日志恢复)立马查资料学习binlog的恢 ...

随机推荐

  1. Python学习:5.函数以及基础语句

    函数 一.创建函数 Python的函数的学习是Python基础的一个重要部分,函数可以重复利用,减少代码量,接下来我们就学习一下如何创建一个函数,以及函数的使用. 1.创建一个函数的基本格式 def ...

  2. jenkins里面使用shell 获取jira的sprint信息

    需求 项目需要在jenkins自动发布中加入version.html来跟踪项目发布的版本信息,需要获取到jira中当前sprint的名字,和一个sprint中的发布次数(我这里用文件把次数存起来的傻方 ...

  3. Java 高级应用编程 第一章 工具类

    一.Java API Java API简介 1.API (Application Programming Interface) 应用程序接口 2.Java中的API,就是JDK提供的各种功能的Java ...

  4. 武汉Uber优步司机奖励政策(12月14日到12月20日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  5. Java:break和continue关键字的作用

    二者的作用和区别 1. break:直接跳出当前循环体(while.for.do while)或程序块(switch).其中switch case执行时,一定会先进行匹配,匹配成功返回当前case的值 ...

  6. java nio之Buffer

    一.JAVA NIO 是在和channel交互的时候使用的.Channel将数据读入缓冲区,然后我们又从缓冲区访问数据.写数据时,首先将要发送的数据按顺序填入缓冲区.基本上,缓冲区只是一个列表,它的所 ...

  7. Redis系列八 使用Jedis

    使用Jedis jar操作Redis 1.配置redis.conf文件,修改 2.建java工程,加入 jedis jar包 3.代码示例: package com.ntjr.redis; impor ...

  8. Eclipse - 配置优化

    去除不需要的启动加载项 Window --> Preferences -->General --> Startup and Shutdown 关闭自动更新 Window --> ...

  9. web项目优化

    1 循环时没有使用break  案例:查找一个值是否在数组中存在(为举例舍弃自带函数) $aa=123; $arr=array(234,123,5,6,45646,346,23); foreach($ ...

  10. 代码混淆防止APP被反编译指南

    本文来自网易云社区 安卓App安全包含很多内容,包括混淆代码.整体Dex加固.拆分 Dex 加固.虚拟机加固等方面.事实上,这些内容也是国内近几年Android App安全保护的一种主要趋势. 混淆代 ...