事情是这样的:由于个人粗心,在7月30号那天协助其它部门批量更新一些数据,谁知道全局更新了,而这个问题竟然在9月26号才发现告知我。他们要求把更新有误的数据恢复到7月30号之前状态,并且7月30号到9月26号这段时间所做的增删改的操作也要更新进去。由于之前没啥经验,心里也没底,但是没办法,自己做错事自己承担。

做法思路:把备份的数据导到测试库里面去,然后把7月30号到9月26号之间的binlog日志提取出对这个表进行操作的sql语句,然后再导进去。

苦逼的还原过程开始了.........

1.幸好本人养成了个好习惯,无论改动的大小我都会先备份一份数据

-rw-r--r-- 1 root root 2473664 07-30 09:38 terminfo-bak0730.sql

找到了,果然是7月30号早上09点38分左右备份的,幸好有备份啊,要不然就悲催了.......先把备份的导到测试数据库上,表名改为terminfo0730,然后再把当前生产的数据导到,表名改为terminfo0926,这样的做法是在还原数据后匹配一下数据有没有对得上。

>usereed

Databasechanged

mysql>show tables;

+----------------+

|Tables_in_reed|

+----------------+

|terminfo0730|

|terminfo0926|

+----------------+

2.最重要的一步来了,就是提取binlog日志。因为7月30号备份的,所以要找7月30号之后到9月26号的binlog。

-rw-rw----1mysql mysql107374208408-0920:03mysql-bin.000086

-rw-rw----1mysql mysql107374189408-2604:51mysql-bin.000087

-rw-rw----1mysql mysql107374207809-1211:12mysql-bin.000088

-rw-rw----1mysql mysql107663780509-2611:55mysql-bin.000089

-rw-rw----1mysql mysql4533942009-2618:50mysql-bin.000090

利用mysqlbinlog命令先进行第一轮的sql语句提取

#mysqlbinlog --no-defaults --database=ecard --start-datetime='2012-07-30 09:38:00' mysql-bin.000086 > log86.txt  # 这里要设置起始时间

#mysqlbinlog --no-defaults --database=ecard  mysql-bin.000087 > log87.txt

#mysqlbinlog --no-defaults --database=ecard  mysql-bin.000088 > log88.txt

#mysqlbinlog --no-defaults --database=ecard  mysql-bin.000089 > log89.txt

#mysqlbinlog --no-defaults --database=ecard  mysql-bin.000090 > log90.txt

#ls -l

-rw-r--r-- 1 root  root  1553740972 09-26 19:38 log86.txt

-rw-r--r--1root  root153286277909-2619:52log87.txt

-rw-r--r--1root  root157780920009-2619:55log88.txt

-rw-r--r--1root  root158045208209-2619:57log89.txt

-rw-r--r--1root  root6494588409-2619:58log90.txt

提取出来后是全部的sql语句,而我需要的是只对terminfo操作的sql语句,所以要进行第二轮提取

#grep terminfo log86.txt > log86-terminfo.txt #依次grep出来

[root@localhost txt]# ll

总计264

-rw-r--r--1root root2020609-2619:50log86-terminfo.txt

-rw-r--r--1root root7874009-2619:59log87-terminfo.txt

-rw-r--r--1root root6542909-2619:59log88-terminfo.txt

-rw-r--r--1root root6529409-2619:59log89-terminfo.txt

-rw-r--r--1root root94109-2620:00log90-terminfo.txt

提取出来后,里面就是所有对terminfo的sql语句了,把这些数据导入到测试库terminfo0730表中

mysql > source log86-terminfo.txt; #依次source进去,务必要注意顺序问题!!!

导进去之后再比较一下terminfo0730和terminfo0926表的数据数量有没有一样,然后再叫部门同事验证一下数据正确性。

到此,数据成功恢复还原。一次难忘的经历啊,也同时告诫自己,细心细心再细心!!

mysql 日志还原数据库_通过Mysql-bin日志恢复还原数据相关推荐

  1. mysql切换使用数据库_切换MySQL数据库步骤

    1.ABP官网下载对应的框架代码,并还原NuGet包 2.在控制台中程序包源选择 全部 默认程序选择 *.EntityFrameworkCore,并依次输入 1 install-package pom ...

  2. mysql 结构化数据库_【MySQL】——MySQL数据库和SQL结构化查询语言概述

    [MySQL]--MySQL数据库和SQL结构化查询语言概述 [MySQL]--MySQL数据库和SQL结构化查询语言概述 文章目录数据库和SQL语言[1]数据库概述 [2]SQL语言 [3]MySQ ...

  3. mysql刷新当前数据库_看看MySQL数据库高级操作

    免费资源网 - https://freexyz.cn/ 文章目录 数据表高级操作 准备工作:安装MySQL数据库 一.克隆表 方法一 方法二 二.清空表,删除表内的所有数据 方法一 方法二 三.创建临 ...

  4. mysql导入指定数据库_从mysql全备 导入指定数据库的数据:三种考虑方法

    mysql版本:5.6.43-log 处理过程: 尝试了三种方法恢复: 注意:在导入前禁用外键约束,防止导入过程中外键校验导致建表失败,导入完成后开启外键约束(当然MySQL中还是不建议使用外键的): ...

  5. 如何用mysql创建股票数据库_个人MySQL股票数据库的建立日记

    #!/usr/bin/python # -*- coding: UTF-8 -*- import tushare as ts from sqlalchemy import create_engine ...

  6. mysql无法输入数据库_关于mysql数据库无法录入中文的问题

    由于在安装了mysql数据库后没有及时的设置字符集就进行了创建数据库的操作,字符集的问题成为了一个很大的困扰,后来查询了无数的博客或者论文终于解决了这个让我难受了很久的问题,在解决这个问题前我们首先需 ...

  7. 阿里云mysql怎么查看数据库_阿里云服务器如何查看数据库

    阿里云服务器如何查看数据库,阿里云上布数据库. 在阿里云ecs云服务器上部署数据库后,在平常的操作中可能会遇到些问题,可以先做个大致的了解: 如果您想看更多的在ecs上的数据库的相关操作,请前往以下两 ...

  8. ibdata1导致mysql打不开_关于mysql:mysql文件ibdata1增长过大导致服务器无法写的问题...

    背景 由云上的一个服务返回异样触发的,因为最近服务代码未有改变,之前运行失常,所以首先到服务所在的服务器查看服务的状态: [root@manager-01 ~]# systemctl status J ...

  9. linux如何mysql实现导出数据库,Linux下MySQL导入导出数据库

    linux下 一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构: mysqldump -u用户名 -p密码 数据库名 > 数据库名.sq ...

  10. 飞腾FT-2000/4处理器下(麒麟系统)Clonezilla再升龙快速备份还原及部署系统(2)--恢复还原

    飞腾FT-2000/4处理器下(麒麟系统)Clonezilla再升龙快速备份还原及部署系统(2)--恢复还原及制作快速还原ISO整合镜像文件 硬件环境:飞腾(PHYTIUM)FT-2000/4开发板( ...

最新文章

  1. LifeCycle原理分析
  2. Linux内核网络数据包发送(二)——UDP协议层分析
  3. python基础_格式化输出(%用法和format用法)(转载)
  4. 实验2-1-3 计算物体自由下落的距离 (5 分)
  5. 将long型转换为多少MB的方法
  6. .net vue漂亮登录界面_一文弄懂前端框架Vue 的核心——数据绑定,为升职涨薪加分
  7. AFNetwork 作用和使用方法具体解释
  8. 面试:1.C#中的委托是什么?事件是一种委托吗?
  9. 随笔记之lombok
  10. 【工程师笔记】第六期:一项Xeon E5-2600 v4测试数据的背后
  11. 小说更新太慢怎么办_这几部小说因更新太慢,惹得书迷大怒,粉丝扬言要打断作者的腿!...
  12. 从公司角度来看,为什么要招实习生?
  13. 微信公众平台java开发详解
  14. 爬虫学习经验分享-------某点评网站
  15. python 网格交易源码_Python版简单网格策略
  16. 使用Spring JPA中Page、Pageable接口和Sort类完成分页排序
  17. 小程序加入人脸识别_微信小程序+人脸识别
  18. 12.匹配一次或多次出现的字符
  19. 从IT研发人员离职工作交接想到的
  20. 自行车在线租赁管理系统的设计与实现

热门文章

  1. php调用python pkl_Python Pickle的任意代码执行漏洞实践和Payload构造
  2. Qt学习笔记之路径问题(window与linux下)
  3. pythorch基本信息查询
  4. 基于深度学习的语义分割代码库
  5. 使用jmeter 设计流程发起测试
  6. EOS智能合约授权限制和数据存储
  7. PHPUnit-附录 A. 断言 (assert)
  8. 在Android Studio进行“简单配置”单元测试(Android Junit)
  9. mysql语句:索引,游标,存储过程,视图,分区,分库分表,数据库集群,数据库负载均衡...
  10. HBase基础和伪分布式安装配置