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

 更新时间:2024年04月29日 11:56:24   作者:小树苗_浇水  
本文主要介绍了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文件大概样子如下:

在这里插入图片描述

可以看得到,每步的操作都会被打印出来
往下翻找到咱们误删除的地方:

在这里插入图片描述

这就得到了当时删除数据的详细信息,根据这些信息就看别写insert语句再插入进去就行了。

总结

操作数据库时 要有留备份的习惯!
找到binlog.000004文件后可以复制到本地,用本地的mysqlbinlog操作效果是一样的。

在这里插入图片描述

最后的 delete转insert可以借助excel实现,这里就不赘述了

到此这篇关于mysql数据库navicat数据同步时误删除部分数据的解决的文章就介绍到这了,更多相关mysql navicat 误删数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql时间格式和Java时间格式的对应方式

    mysql时间格式和Java时间格式的对应方式

    这篇文章主要介绍了mysql时间格式和Java时间格式的对应方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • mysql CPU高负载问题排查

    mysql CPU高负载问题排查

    这篇文章主要介绍了mysql CPU高负载问题排查的相关资料,帮助大家更好的理解和使用MySQL,维护数据库,感兴趣的朋友可以了解下
    2020-11-11
  • MySQL实现列转行与行转列的操作代码

    MySQL实现列转行与行转列的操作代码

    在处理数据时,我们常常会遇到需要将表中的列(字段)转换为行,或将行转换为列的情况,这种操作通常被称为“列转行”(Pivoting)和“行转列”(Unpivoting),本文将向您介绍如何使用 CASE 语句、聚合函数以及 GROUP BY 子句来完成列转行和行转列的操作
    2024-09-09
  • MySQL8.0移除传统的.frm文件原因及解读

    MySQL8.0移除传统的.frm文件原因及解读

    MySQL 8.0移除传统的.frm文件,采用基于InnoDB的事务型数据字典,主要解决了元数据不一致、性能优化、架构简化、增强功能支持、兼容性与升级问题,这一变革提高了数据库的可靠性和性能,为未来的高级功能奠定了基础
    2025-03-03
  • Mysql之如何实现全外连接

    Mysql之如何实现全外连接

    这篇文章主要介绍了Mysql之如何实现全外连接问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 详解mysql 获取某个时间段每一天、每一个小时的统计数据

    详解mysql 获取某个时间段每一天、每一个小时的统计数据

    这篇文章主要介绍了mysql 获取某个时间段每一天、每一个小时的统计数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • MySQL深分页问题及三种解决方案

    MySQL深分页问题及三种解决方案

    本文主要介绍了MySQL深分页问题及三种解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • clickhouse复杂时间格式的转换方式

    clickhouse复杂时间格式的转换方式

    这篇文章主要介绍了clickhouse复杂时间格式的转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • MySQL日期加减函数详解

    MySQL日期加减函数详解

    在本篇文章里小编给大家分享的是关于MySQL日期加减函数用法以及实例,需要的朋友们可以参考下。
    2020-05-05
  • Mysql普通索引与唯一索引的选择详析

    Mysql普通索引与唯一索引的选择详析

    这篇文章主要给大家介绍了关于Mysql普通索引与唯一索引的选择的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11

最新评论