mysql数据库navicat数据同步时误删除部分数据

背景介绍

听说过删库跑路被抓的,今天就碰到升级服务器(Alibaba Cloud Linux ----> Ubuntu)原因是taos3.2不支持Alibaba Cloud Linux系统!
为了保险起见把现在这个数据库里的数据都备份一份,为了不耽误同事们继续开发所以需要将需要升级的数据库在另一个服义务器中再跑一份出来!
有navicat帮忙数据迁移很方便!
在这里插入图片描述

但是犯错就在图方便上了!
因为迁移的这两个数据库中有几个名字相同的库!然后再数据同步时直接把原表中的数据删除了!
我的天呢尤其是 bas_file表,这里面存的都是minio里的文件!

任务需求

现在无论如何都要把数据恢复回来!要不然工作不保!
有好多方法:
一.数据恢复备份(这个我尝试了,需要事先开启备份)
在这里插入图片描述
就是这个东西!谁没事会保存这个!(我就保存了)

这个恢复很简单,我要讲的不是这个简单的!

二.利用bin_log日志来完成
查看有没有开启bin_log
现在服务器中进入到mysql服务

mysql -u root -p
show variables like 'log_%'

在这里插入图片描述
可以看得到 log_bin是开启状态(其实不用太过关心,一般大家都是开启的,尤其是安装liunx版本的mysql时,如果真的没开 再去看其他博客吧)
开启了bin_log日之后,就会有binlog文件生成咱们现在过去找

show master logs;

在这里插入图片描述
可以看得到文件名与大小都被打印出来,现在就去找这两个文件(先退出mysql模式:exit)

find / -name binlog.000004

在这里插入图片描述
找到了他的位置
在这里插入图片描述
找到他们了
然后根据时间确定 是哪binlog
可以看得到000004后缀的这个时4月28 11:55 到 4月29 9:56,我是4月28 下午1:30左右删除的数据,所以咱们把重点放在binlog.000004上就行了。

这个文件将会救回你的数据
复制一份到你想要的位置 cp binlog.000004 /you/ (位置自己选)
然后 cd /you/ (别忘记换成自己的路径)
使用

mysqlbinlog --no-defaults --base64-output=DECODE-ROWS -v -d crmeb /mysqldb/binlog.000004 > data.sql

上面这个语句多半你会遇到问题!
大概报错是mysqlbinlog 找不到
在你这个目录不用动 使用软连接链接过来一个就行了

ln -s /www/server/mysql/bin/mysqlbinlog mysqlbinlog

在这里插入图片描述
能用就行了。
先用这个生成一个事件日志文件
日志大概样子:
在这里插入图片描述
根据咱们要找的时间咱们找到他对一个的开始id和结束id
我大概是1:30左右删除的 这里我就选择这个
然后使用下面这个语句生成时间段内对数据进行的操作语句

mysqlbinlog --no-defaults --base64-output=DECODE-ROWS --start-position=3367047 --stop-position=3747440 -v binlog.000004 > insertdata.sql

会生成一个 insertdata.sql文件大概样子如下:
在这里插入图片描述
可以看得到,每步的操作都会被打印出来
往下翻找到咱们误删除的地方:
在这里插入图片描述
这就得到了当时删除数据的详细信息,根据这些信息把delete语句转为insert语句再插入进去就行了。

总结

操作数据库时 要有留备份的习惯!
找到binlog.000004文件后可以复制到本地,用本地的mysqlbinlog操作效果是一样的。
在这里插入图片描述
最后的 delete转insert可以借助excel实现,这里就不赘述了如果需要请留言。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您使用的是 Navicat Premium 版本,可以通过 Navicat Premium 的备份和还原功能来恢复误删除数据。具体步骤如下: 1. 打开 Navicat Premium,连接到您的数据库。 2. 在左侧导航栏中选择要恢复数据数据库。 3. 右键单击该数据库,选择“备份”选项。 4. 在弹出的“备份”窗口中,选择要备份的表格和数据,并设置备份文件的保存路径和名称。 5. 点击“开始”按钮,等待备份完成。 6. 如果您误删除数据,可以通过还原备份文件来恢复数据。右键单击数据库,选择“还原”选项。 7. 在弹出的“还原”窗口中,选择要还原的备份文件,并选择要还原的表格和数据。 8. 点击“开始”按钮,等待还原完成。 如果您使用的是 Navicat for MySQLNavicat for PostgreSQL 版本,则可以通过以下步骤来恢复误删除数据: 1. 打开 Navicat for MySQLNavicat for PostgreSQL,连接到您的数据库。 2. 在左侧导航栏中选择要恢复数据数据库。 3. 右键单击该数据库,选择“SQL编辑器”选项。 4. 在 SQL 编辑器中输入以下命令:SELECT * FROM table_name; 其中,table_name 是您误删除数据的表格名称。 5. 点击“执行”按钮,查看是否能够查询到误删除数据。 6. 如果能够查询到误删除数据,可以通过以下命令来恢复数据:INSERT INTO table_name VALUES (value1, value2, ...); 其中,value1、value2 等是您误删除数据的值。 7. 点击“执行”按钮,等待数据恢复完成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值