MySQL使用DROP TABLE命令删除表怎么恢复?

[复制链接]
发表于 2023-4-4 14:38:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
前言

今天同事勿删除了一个测试环境表,因为刚好在跑重要的数据,重新跑又比较麻烦,所以尝试看能不能通过恢复数据的方式进行数据恢复,如果你也是重要数据一定要切记“不要慌,慌也没用”。
百度过一些例子,哪些例子比较适合表刚刚创建后被删除,就能完全恢复,本篇文章适合那种创建很长时间,表在被删除的。
开始操作

第一步:先连接数据库
  1. mysql -uroot
复制代码
第二步:在Mysql执行,看有没有开发日志日志备份
  1. show variables like 'log_bin'
复制代码
  1. +---------------+-------+
  2. | Variable_name | Value |
  3. +---------------+-------+
  4. | log_bin       | ON    |
  5. +---------------+-------+
复制代码
这里返回ON表示开启了,如果是OFF表示关闭,如果是OFF这篇文章可以不用看了,对你没有任何帮助
第三步:继续在MySQL执行,查看日志日志备份路径
  1. show variables like '%datadir%'
复制代码
  1. +---------------+------------------------+
  2. | Variable_name | Value                  |
  3. +---------------+------------------------+
  4. | datadir       | /usr/local/mysql/data/ |
  5. +---------------+------------------------+
复制代码
第四步:去/usr/local/mysql/data/路径查看列表可以使用ll命令

这里可以看到很多,MySQL的日志日志文件,命名都是由mysql-bin.0000xx,不过这些文件都是二进制的,需要用mysql的工具才能看出来到底是什么。
第五步:查看二进制文件具体SQL
  1. mysqlbinlog -v --base64-output=decode-rows  /usr/local/mysql/data/mysql-bin.0000xx |grep -i -A 50 -B 50  '误删除的表名' >> 0xx.sql
复制代码
上面这个命令的意思是指定SQL日志的二级制文件,将二级制文件解析成SQL语句,输出到0xx目录,多个自行更改
因为作者这里表创建的时间比较长,所以我不知道具体是在那个文件,只能全部查看,如果你知道那个时间可以查看指定的就好了。
这个文件有规律,就写了一个小java实例用来生成
[code]public static void main(String[] args) {      for (int i = 1; i
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表