从删库到还原

欢迎来到我的博客,代码的世界里,每一行都是一个故事


在这里插入图片描述

🎏:你只管努力,剩下的交给时间

🏠 :小破站

从删库到还原

    • 魔法一
    • 魔法二
    • 魔法三
    • 魔法四
      • 查看是否开启binlog,且format为row
      • 执行以下命令

重要的事情说第一遍:遇到这种事情一定要冷静,别慌,先喝口水,再找到我这篇博客

相信大家第一眼看到标题也是很诧异,但是在日常工作中总是有些大佬会无意执行这样的操作,这不我就遇到好几次了

正常情况我们是没有资格执行这个删库的命令的,最多你可以执行的是delete table,update table set

大家也肯定注意到了,这两条语句都很危险,因为没有条件。噩梦可能就是从你点击的那一刻开始,比如我这样的操作。

image-20240524142640003

因为没有条件,导致整个表的数据都被改变了,当时真想哭爹喊娘。接下来我们进行一些骚操作让你复原表

重要的事情说第二遍:遇到这种事情一定要冷静,别慌,先喝口水,再找到我这篇博客

魔法一

如果你在Navicat上操作的,并且你操作的表是之前打开的,而且数据只有不到1000条(Navicat的默认分页数),那么恭喜你,这个魔法适合你。

  1. 回到这个表中,你可以发现数据没变,此时千万别抱着好奇的态度,为什么没变呢,去点击刷新,一点击就完犊子了。

  2. 将所有数据复制为insert语句,以及update语句(双重保险),然后你可以刷新看一下,发现数据就变为你误操作的数据了,此时你将复制好的insert以及update,执行一下(如果你执行的是delete,就用insert,如果是update就用update)

    image-20240524144552367

可以看下数据压根没进行更新,美滋滋。

魔法二

如果魔法一没帮到你,我们来看下魔法二。正常情况下公司是每天会备份数据库的,所以第二种方法就是恢复备份数据了。

  1. 找到备份的sql文件
  2. 不管是备份的整个库,还是单个表,都不建议在刚刚操作的数据库或者表上操作
  3. 执行以下命令(如果你是多实例,建议换一个实例进行sql执行,如果是单实例,建议换一个库进行操作)
mysql -u'root' -p'123456' -S /home/mysql/3306/tmp/mysql_3306.sock test -e "source /home/backup/2024-05-24-01-00-02/test.sql"
  1. 备份原数据,再执行数据传输

魔法三

延迟主从,这个我认为在实际工作中非常有必要的,如果一些误操作,靠这个是完全可以恢复的,至于延迟的时间就需要仔细斟酌了,几分钟到几小时都可行。当然这个也没必要说太多,比如3306上的xiaobo库中的user表被删了,但是我有3307这个从库,延迟时间是10分钟,那么我直接就可以从3307中的xiaobo.user拷贝到3306的xiaobo.user中。

魔法四

这个魔法的前提是mysql开启了binlog,且为row。

查看是否开启binlog,且format为row

要查看 MySQL 是否已启用二进制日志(binlog)且格式为 ROW,可以使用 MySQL 命令行客户端连接到 MySQL 数据库,并执行以下命令:

SHOW VARIABLES LIKE 'log_bin';

这会显示 MySQL 是否已启用二进制日志,如果结果为 ON,则表示已启用二进制日志;如果为 OFF,则表示未启用。如果启用了二进制日志,可以继续检查日志格式:

SHOW VARIABLES LIKE 'binlog_format';

如果结果为 ROW,则表示二进制日志格式为 ROW。如果结果为 STATEMENTMIXED,则表示二进制日志格式为 STATEMENTMIXED

执行以下命令

mysqlbinlog --start-datetime="2024-05-24 09:52:00" --base64-output=decode-rows -vv mysql_binlog.000004

image-20240527122035096

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/34844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WAV怎么转mp3?将wav转成MP3的几种方法介绍

WAV怎么转mp3?很多情况下,我们可能需要将高质量的 WAV 文件转换为更小、更兼容的 MP3 文件。例如,你可能想要为你的音乐收藏腾出更多存储空间,或者需要将音频文件上传到联网平台,而这些平台通常对文件大小有严格限制。…

2. ansible常用模块

ansible常用模块 一、ansible常用模块1、ansible命令用法2、常用模块 一、ansible常用模块 1、ansible命令用法 # ansible 被管理机 -m 模块 -a 模块参数2、常用模块 shell模块 作用: 统一执行shell命令 [rootzabbix_server ~]# ansible db -m shell -a uptime[rootzabbix_…

会声会影2024免费版下载无需激活码序列号

亲爱的影像爱好者们,今天我要和大家分享的是一款让我彻底着迷的软件——会声会影2024!自从用了它,我的视频编辑技能简直突飞猛进,每次上传作品到小红书都能收获满满的赞👍。接下来,就让我带你一起探索这个神…

window系统忘记密码解决方案

原理 通过命令修改粘滞键的作用打开cmd命令,通过cmd命令修改用户密码。 1.进入系统自动恢复页面 各品牌进入恢复页面各不一样,一般按住shift重启电脑即可,笔者的惠普电脑是开机按住F11键。页面如下: 之后选择 - > 疑难解答…

阿里云nginx更新证书后依旧显示旧证书

尝试的解决办法 重启nginx服务删除服务器上的旧证书清除浏览器缓存检查是否使用CDN服务 最后的解决办法 云服务器开启了WAF服务,在WAF服务中配置证书

ssm 宠物领养系统-计算机毕业设计源码08465

目 录 摘要 1 绪论 1.1课题背景及意义 1.2研究现状 1.3ssm框架介绍 1.3论文结构与章节安排 2 宠物领养系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 …

web开发学习(web简单入门)

前言: 从我刚接触博客没多久我就萌发了搭建一个个人博客网站的想法(用来装逼),但碍于学校屁事太多迟迟没有开始,最近学校课已经都差不多结课了,距离期末还有一段时间,我也得以抽出时间来学习我一…

js实现blockly后台解释器,可以单步执行,可以调用c/c++函数

实现原理 解析blockly语法树,使用js管理状态,实际使用lua执行,c/c++函数调用使用lua调用c/c++函数的能力 可以单行执行 已实现if功能 TODO for循环功能 函数功能 单步执行效果图 直接执行效果图 源代码 //0 暂停 1 单步执行 2 断点 //创建枚举 var AstStatus = {PAUS…

日志记录功能

需求描述: 1,可记录页面操作模块、按钮的日志记录 2,记录详细的指定操作数据日志 3,记录的数据可能需要查询表 4,需要考虑到扩展性及个性化定制 表结构设计: CREATE TABLE YES_DEV.T_COMM_OPERATION_LOG (ID BINARY_BIGINT NOT NULL,OPERATOR VARCHAR(128),OPERATION_MO…

35、正则表达式

一、正则表达式命令 正则表达式:匹配的是文本内容,linux的文本三剑客都是针对文本内容。 ​ grep 过滤文本内容 ​ sed 针对文本内容进行增删改查 ​ awk 按行取列 文本三剑客----都是按照行进行匹配。 1.1、grep筛选: grep的作用就是…

私有化地图离线部署方案之查询定位服务

私有化地图离线部署整体解决方案,除硬件之外,一般主要由基础地图服务、查询定位服务、路径规划服务和高程检索服务构成。 其中,查询定位服务是指地理编码与逆地理编码服务。 在《私有化地图离线部署方案之基础地图服务》一文中,…

软考 系统架构设计师系列知识点之杂项集萃(48)

接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(47) 第75题 假设系统中互斥资源R的可用数位25。T0时刻进程P1、P2、P3、P4对资源R的最大需求数、已分配资源数和尚需资源数的情况如表a所示,若P1和P3分别申请资源R数为1和2…

不懂电路搭建可以学嵌入式编程开发吗?

当然可以学嵌入式编程开发!虽然电路搭建是嵌入式开发中的一部分,但即使你对电路搭建不太了解,也可以从嵌入式编程开发入手。刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0…

Vue3 子组件监听父组件传来异步数据的正确方式

最初想使用watch 配合着 computed 来监听父组件数据&#xff0c;发现没有必要反而造成代码冗余&#xff0c;如果参数一多很难维护。 正确方式&#xff1a;直接使用computed监听就好 // 子组件 <script> export default {props: {yesterDayfollow: {type: Array},transpo…

公司自己的Qt打包步骤:

公司自己的打包步骤&#xff1a; 1. 把编译完的NRECS复制到 NRECS文件下下 2. NRECS文件夹下 运行 linuxdeployqt NRECS -appimage 3. 第2步如果出现问题&#xff0c;运行下面三行 export LIB_PATH/opt/Qt5.15/5.15.2/gcc_64/lib:$LIB_PATH export PLUGIN_PATH/opt/Qt5.15/5…

【Kafka 面试题】分布式通讯之Kafka面试题汇总(基础+进阶+高阶)-01

【Kafka 面试题】分布式通讯之Kafka面试题汇总 1. Kafka 的用途有哪些&#xff1f;使用场景如何&#xff1f;1.1 用途1.2 使用场景 2. Kafka 中的 ISR、AR 又代表什么&#xff1f;ISR 的伸缩又指什么&#xff1f;2.1 ISR (In-Sync Replicas)2.2 AR (Assigned Replicas)2.3 ISR的…

湘潭大学信息与网络安全考试总结

文章目录 题型内容&#xff08;试题回忆版&#xff09;填空单选多选简答大题 我的感受 题型 填空 20分&#xff0c;一空一分 单选 有几个&#xff0c;两分一个 多选 也有几个&#xff0c;两分一个&#xff0c;不确定的题建议当单选做 简答题 6 分一个&#xff0c;有几个 大题 …

Java中线程池的创建方式有几种?

在Java中&#xff0c;线程池是一种用于管理多个线程的机制&#xff0c;旨在提高性能并简化多线程编程。Java提供了多种方式来创建和管理线程池&#xff0c;主要通过java.util.concurrent包中的ExecutorService接口和Executors类来实现。以下是几种常见的线程池创建方式&#xf…

宝塔面板部署前端项目

部署前端项目 1 打包自己的项目2 登录宝塔面板3 添加站点4 设置域名5 进入当前站点对应的文件目录中6 上传打包后的文件7 访问网站 1 打包自己的项目 2 登录宝塔面板 点击左侧“网站”菜单进入对应页面 点击“添加站点” 3 添加站点 填写域名&#xff0c;如果没有域名的&am…

集成openfeign

集成feign有两种方式. 1.集成到所需项目中(只有该项目可以用)直接引用所需调用的项目 2.集成到公共项目(通用) 1.集成到所需项目中(只有该项目可以用) 再需要消费的服务 进行依赖的引用 1.引入依赖,openfeign,和所需调用的服务 <!--feign--><dependency><gro…