在数据库为备份的情况下,并且还没开启MySQL数据的二进制日志,那么恢复数据的难度就会大大增加,但经过我的实验,还是可以通过Java打印的日志恢复数据的。

恢复数据的环境为:

MySQL数据库+tomcat+Java后台+mybatis框架

具体方法是通过将Linux服务器上tomcat输出的日志筛选出来我们需要的,再将这些占位符SQL语句导入idea的mybatis日志插件中,转换成能直接运行的SQL语句

其中Linux筛选日志的命令为:

sed -n '/2019-12-13 09:20:01/,/2020-01-02 15:38:39/p' catalina.out >> bak.loggrep -A 5 'insert into' bak.log >> bak2.log
grep -A 5 'delete from' bak.log >> bak2.log

这几行命令的作用为:将catalina.out中的2019-12-13 09:20:01到2020-01-02 15:38:39日志导入到bak.log文件中,而后面的两条命令是将bak.log中的新增删除的SQL语句这行和后5行追加输入到bak2.log文件中。

此时bak2.log中就基本上全部都是SQL语句了,这时就需要用到我们的idea中的mybatis日志插件(插件名称:MyBatis Log),将这些全部复制到插件中,点击Resore Sql按钮上成原始的可运行SQL。


此时我们就可以拿到一堆可以直接运行的SQL语句了,但是为了避免还有一些无用的查询SQL,我们可以把这些SQL语句复制到Notepad++或者Sublime等里面将这些不需要执行的SQL找出来,使用列编辑按照SQL的注释语法注释掉它们即可。

本文方法最大的问题是不方便将更新的SQL找出来,当然如果不怕麻烦,而且也有必要的话可以用grep -A 5 'update 表名' bak.log >> bak2.log命令将更新的SQL也导出来。以及本文到筛选日志给定了时间,因为我有2019-12-13的备份数据,因此我可以筛选到这一天。

当然,经过此役备份肯定是会做好的,也告诫大家备份一定要做好,我这次就是因为navicat的备份计划没有生效,导致我的备份缺失。备份要检查,这个习惯要养成啊。

MySQL无备份未开启二进制的日志,恢复数据库的数据相关推荐

  1. 通过sqlserver日志恢复误删除的数据

    通过sqlserver日志恢复误删除的数据 原文:通过sqlserver日志恢复误删除的数据 如果你已经急的焦头烂额,看到这篇文章的时候,请你换个坐姿,深呼吸几次,静下心来将这篇文章读完,也许你的问题 ...

  2. 通过日志恢复MS SQL数据案例

     [导读]本文介绍通过日志恢复MS SQL数据案例,以数据库的故障恢复改为非简单模式,去掉自动关闭和自动收缩两个选项为前提. 前提条件是数据库的故障恢复改为非简单模式,去掉自动关闭和自动收缩两个选项. ...

  3. mysql 二进制日志在哪_如何通过Mysql的二进制日志恢复数据库数据

    经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响.所以本文我们将和大家一起分享学习下如何通过Mysql的二机制日志(binlo ...

  4. mysql 恢复 二进制,mysql通过二进制日志恢复数据库

    一.打开主配置文件 添加以下参数 [root@db1 ~]# vim /etc/my.cnf server_id=6   # 服务id log_bin=/data/binlog/mysql-bin # ...

  5. MySQL使用二进制日志恢复数据库

    一.二进制日志简介 MySQL有不同类型的日志,其中二进制文件记录了所有对数据库的修改,如果数据库因为操作不当或其他原因丢失了数据,可以通过二进制文件恢复. 在my.ini文件中设置了log-bin, ...

  6. 【黄啊码】MySQL入门—17、在没有备份的情况下,如何恢复数据库数据?

    大家好!我是黄啊码,MySQL的入门篇已经讲到第16个课程了,今天我们继续讲讲大白篇系列--科技与狠活之恢复数据库 在没做数据库备份,没有开启使用 Binlog 的情况下,尽可能地找回数据. 今天的内 ...

  7. mysql-binlog日志恢复数据库

    binlog日志用于记录所有更新了数据或者已经潜在更新了数据的所有语句.语句以"事件"的形式保存,它描述数据更改.当我们因为某种原因导致数据库出现故障时,就可以利用binlog日志 ...

  8. 使用全备+binlog日志恢复数据库

    1.binlog日志类型 Statement 只记录执行的sql语句,磁盘占用少,但是恢复的时候容易出问题.InodeDB不能使用Statement . Row 记录修改后的具体数据,磁盘占用较多 M ...

  9. mysql中毒_2020-10-15 MYSQL中勒索病毒解密 .help 病毒解密恢复 数据库中.help 解密恢复 服务器被加密解密恢复...

    数据类型 SQL 2005 for MYSQL 5.6 数据大小 10 GB 故障检测 服务器被勒索病毒加密, 文件被添加 .help 扩展名 修复结果 直接从加密的数据库处理完成恢复,数据恢复率达9 ...

最新文章

  1. 尹伊:用敏捷开发思维来成长!
  2. linux 程序自启
  3. DELL备份恢复系统的小工具 Dell DataSafe Local Backup
  4. 基于角色的权限设计(二)
  5. 厉害了!这支获得国家级荣誉的智能车队
  6. php 如何把u5fb,php如何将json中的unicode编码转为汉字?
  7. 人工智能:第九章 Agent (艾真体)
  8. LuoGuP4721:【模板】分治 FFT
  9. 一文说通Dotnet操作MongoDB GridFS
  10. 使用了visual assist.net
  11. Cass环境下光标无显示
  12. Python成员修饰符,metaclass,异常,反射,单例
  13. ofbiz中用 ajax 几点注意
  14. Rust手机端皮肤搜索、生成Rust专属名片、转盘概率模拟
  15. h5页面预览pdf文件_H5 页面如何查看 PDF 文件
  16. “一县一店·全国乡土消费社群”平台:助力乡村振兴农产上行
  17. 【LeetCode每日一题】1723. 完成所有工作的最短时间
  18. html导航页面滚动,可通过导航视图精确滚动页面内容的js插件
  19. WPF实现仿Glitch闪烁特效
  20. 字符串类型的算法面试

热门文章

  1. 寻找大数组中位数问题(一)
  2. Offset函数,偏移变量注意是数值而不是数组
  3. vue 前端面试常见问题汇总(11-20)
  4. C#实现控制台显示动态进度条百分比
  5. 第八次网页前端培训(JS)
  6. reactnative热更新 react-native-pushy
  7. spin lock irqrestore中为什么先开中断后开抢占
  8. 1、go的GOPATH、GOROOT、第三方库学习
  9. mysql 年龄段分组_Mysql出生日期转换为年龄并分组统计人数的方法示例
  10. 天猫品牌库的好处有哪些 怎样通过天猫品牌库