《MYSQL45讲》误删数据怎么办

对误删数据分类的话,有

1.delete 误删行

2.drop table 或者truncate table 语句误删表

3.使用drop database 误删数据库

4.使用rm命令误删整个MYSQL实例

一,误删行

一下操作前置条件是:binlog的格式是row,并且binglog_row_image是FULL,表示记录数据修改前后完整信息。

如何恢复

使用Flashback工具修改binlog文件,然后放到原库进行重放。

如果误操作是delete语句,binlog event type就会是Delete_rows ,只需要改成Write_rows 就好了

如果误操作是insert语句,binlog event type 就是 Write_rows,改成Delete_rows即可

如果误操作是Update,binlog里面记录了数据行修改前和修改后的值,只要对调这两行的位置即可。

如何预防误删行

将sql_safe_updates(sql安全更新)设置为on,这样设置的话,对于delete和update语句,必须有where并且where条件里必须包含索引字段才会正常执行。

二,误删表

如果使用delete删除整个表的数据就太慢了,因为要生成redolog,undolog,binlog。

直接使用drop table或者truncate table以及drop database 直接删除整表,只需要生成binlog就行了,不过数据无法恢复,因为DDL语句不管binlog_format是row还是statement,在binlog里面存的都是语句,不会记录image。

如何恢复表

前置条件:线上有定期的全量备份并且实时备份binlog

全量备份是数据库备份方案中的一种,另外两种是增量备份和差异备份。

全量备份:备份某一时刻的数据库所有数据

增量备份:第一次是做全量备份,后续的每次都只备份与上一次备份的数据相比增加或者修改的数据。

差异备份:第一次也是做全量备份,后续的每次都是备份与第一次的全量备份的数据的差异。

第一种恢复表的方式

通过找到最近的一次全量备份创建出一个临时实例,假设在今天中午12点执行的误删表操作,而最近一次全量备份是0点,那么是这个临时实例就拥有0点时数据库的完整数据,然后再把从0点开始一直到误操作前所有的被误删表所在库的binlog都在临时实例上重放,这样就得到了执行误删表之前的完整数据。

注意

1.在使用mysqlbinlog重放binlog时,通过参数-database指定误删表所在的库。为什么不直接指定误删的表?因为mysqlbinlog工 具并不能指定只解析一个表的日志

2.如何跳过误操作对应的binlog?

1.使用-stop-position, -start-position手动跳过

2.将对应的GTID加到临时实例的gtid_set中,临时实例就不会执行这个binlog,具体操作是首先设置gtid 为误操作对应的gtid,然后开始一个空事务并提交。具体语句是:

set gtid_next=gtid1;begin;commit;

3.使用mysqlbinlog重放binlog,就不能使用并行复制了,并行复制是主库从库之间的

针对不能指定恢复的表并且不能并行复制诞生了第二种恢复表的方式。

第二种恢复表的方式

唯一不同的是,全量备份得到临时实例后,恢复后续的数据不是通过用mysqlbinlog解析binlog并重放,而是将临时实例作为备库的从库,这样就会同步备库的binlog,同样需要跳过误操作binlog。

这样的好处是:

1.在start slave之前,先通过执行 change replication filter replicate_do_table = (tbl_name) 命令(过滤tbl_name表),就可以让临时库只同步误操作的表;

2.可以使用并行复制技术。

需要注意的是

如果备库中没有了临时实例需要的binlog,要去binlog备份中找对应的binlog文件复制到备库的日志目录下,然后将binlog文件名放入备库日志目录下的binlog-index中去。重启备库让备库重新识别刚加的binlog文件。此时临时实例与备库建立主备关系,就可以正常同步了。

延迟复制备库

如果最近一次全量备份与误操作的时间间隔较长,那么通过全量备份来恢复数据是非常慢的。

MYSQL5.6引入了延迟复制备库,也就是搭建主库之间存在一个较大的延迟的延迟复制备库,如1个小时,那么你在误操作之后的1个小时内如果发现了,就可以让备库及时跳过误操作。就可以恢复需要的数据。

预防误删库/表的方法

1.账号分离,不同的成员使用不同权限的账号

2.制定操作规范

三,rm删除数据

对于一个高可用集群架构来说,就算一个节点被rm了,HA也会选举出一个新的主库。

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

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

相关文章

不对称信息

你买了一辆二手车,你并不知道它出过几次事故,但它之前的车主却对此了如指掌。来买保险的公司都是那些出险概率很大的(比如矿工、化工厂),但那些安全的公司很少去买保险,这两种问题都属于信息不对称问题。 …

94个属于一区且接受医工交叉领域投稿的期刊汇总|个人观点·24-11-13

小罗碎碎念 继汇总病理AI的基础模型、病理组学&影像组学的公开数据集以后,我们再来盘一盘医工交叉领域有哪些热门期刊可以投稿。我会分区进行介绍,每个区则会进一步划分学科种类,方便大家选择适合自己的投稿期刊。 这期推文先分享大类属…

网站小程序app怎么查有没有备案?

网站小程序app怎么查有没有备案?只需要官方一个网址就可以,工信部备案查询官网地址有且只有一个,百度搜索 "ICP备案查询" 找到官方gov.cn网站即可查询! 注:网站小程序app备案查询,可通过输入单位…

MySQL45讲 第二十讲 幻读是什么,幻读有什么问题?

文章目录 MySQL45讲 第二十讲 幻读是什么,幻读有什么问题?一、幻读的定义二、幻读带来的问题(一)语义问题(二)数据一致性问题 三、InnoDB 解决幻读的方法四、总结 MySQL45讲 第二十讲 幻读是什么&#xff0…

FatLab:我的编程课程系列

FatLab 是一款教程类软件。 大概是因为我的编程生涯始于自学,FatLab便也保持了这种气息:从一个“自然生长”的角度提供了一套C语言教程。 教程方面,目前仅完成了《C语言基础要素》系列。正如其名,这个系列仅探讨了语言中非常基础…

冗余连接2 hard题 代随C#写法

此题在卡码网109与力扣685题亦有记载 有一说一C#写法我没咋搞懂 就看明白了思路 这里贴一个答案待后续我醒悟了再来看罢 难就难在对整体数据结构classUnion(并查集)的理解不熟并且 对于输入输出这个迭代过程理解上也比较吃力 109. 冗余连接II 题…

【QT】QSS

个人主页~ 一、QSS QSS可以说是拿了CSS的一部分过来用,是CSS的简化版本 1、基本语法 选择器 {属性名:属性值; }将界面上所有的QPushButton文本颜色都改为红色 QPushButton {color:red; }2、设置方式 (1)指定控件样式设置 在widget.cpp中…

java模拟键盘实现selenium上下左右键 table中的左右滚动条实现滚动

在这篇文章中,我们将学习如何使用Java编程语言模拟键盘输入,特别是模拟上下左右方向键的操作。这是一个很有趣的项目,尤其适合刚入行的开发者。我们将分步进行,接下来,我们会通过表格展示整个实现过程,然后…

JQuery封装的ajax

1. 注意&#xff1a; 首先要导jq的包json对象可以用 . 来调用keyjava只能给前端传页面&#xff0c;或者打印的内容String jsonstr json.toJSONString(resultJSON); //将对象转为JSON对象 Json格式和参数解释&#xff1a; <script src"js/jquery-1.10.2.min.js&quo…

文献解读-DNAscope: High accuracy small variant calling using machine learning

关键词&#xff1a;基准与方法研究&#xff1b;基因测序&#xff1b;变异检测&#xff1b; 文献简介 标题&#xff08;英文&#xff09;&#xff1a;DNAscope: High accuracy small variant calling using machine learning标题&#xff08;中文&#xff09;&#xff1a;DNAsc…

vue中如何关闭eslint检测?

ESLint作为一个用于JavaScript代码的验证工具&#xff0c;主要用于检查代码语法和编码规范。本文旨在指导那些希望在Vue.js项目中禁用ESLint验证功能的用户。对于需要这一操作的朋友&#xff0c;以下内容将提供参考。 vue中如何关闭eslint检测&#xff1f; 有了eslint的校验&…

用vscode编写verilog时,如何有信号定义提示、信号定义跳转(go to definition)、模块跳转这些功能

&#xff08;一&#xff09;安装插件SystemVerilog - Language Support 安装一个vscode插件即可&#xff0c;插件叫SystemVerilog - Language Support。虽然说另一个插件“Verilog-HDL/SystemVerilog/Bluespec SystemVerilog”也有信号提示及定义跳转功能&#xff0c;但它只能提…

️️一篇快速上手 AJAX 异步前后端交互

AJAX 1. AJAX1.1 AJAX 简介1.2 AJAX 优缺点1.3 AJAX 前后端准备1.4 AJAX 请求基本操作1.5 AJAX 发送 POST 请求1.6 设置请求头1.7 响应 JSON 数据1.8 AJAX 请求超时与网络异常处理1.9 取消请求1.10 Fetch 发送 Ajax 请求 2. jQuery-Ajax2.1 jQuery 发送 Ajax 请求&#xff08;G…

❤React-React 组件通讯

❤ React 组件通讯 组件通讯将教我们的内容&#xff1a; 能够使用道具接收数据W能够实现父子组件之间的通讯能够实现兄弟组件之间的通讯能够给组件添加道具校验能够说出生命周期常用的钩子函数能够知道高阶组件的作用 1、 组件通讯介绍 组件是独立且封闭的单元&#xff0c;…

【初阶数据结构与算法】链表刷题之移除链表元素、反转链表、找中间节点、合并有序链表、链表的回文结构

文章目录 一、移除链表元素思路一思路二 二、合并两个有序链表思路&#xff1a;优化&#xff1a; 三、反转链表思路一思路二 四、链表的中间节点思路一思路二 五、综合应用之链表的回文结构思路一&#xff1a;思路二&#xff1a; 一、移除链表元素 题目链接&#xff1a;https:…

POI实现根据PPTX模板渲染PPT

目录 1、前言 2、了解pptx文件结构 3、POI组件 3.1、引入依赖 3.2、常见的类 3.3、实现原理 3.4、关键代码片段 3.4.1、获取ppt实例 3.4.2、获取每页幻灯片 3.4.3、循环遍历幻灯片处理 3.4.3.1、文本 3.4.3.2、饼图 3.4.3.3、柱状图 3.4.3.4、表格 3.4.3.5、本地…

计算机毕业设计Python+Neo4j知识图谱医疗问答系统 大模型 机器学习 深度学习 人工智能 大数据毕业设计 Python爬虫 Python毕业设计

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

【机器学习】机器学习中用到的高等数学知识-2.概率论与统计 (Probability and Statistics)

概率分布&#xff1a;理解数据的分布特征&#xff08;如正态分布、伯努利分布、均匀分布等&#xff09;。期望和方差&#xff1a;描述随机变量的中心位置和离散程度。贝叶斯定理&#xff1a;用于推断和分类中的后验概率计算。假设检验&#xff1a;评估模型的性能和数据显著性。…

Scala入门基础(17.1)Set集习题

一.选择题 二.实训 图书馆书籍管理系统相关的练习。内容要求&#xff1a; 1.创建一个可变 Set&#xff0c;用于存储图书馆中的书籍信息 &#xff08;假设书籍信息用字符串表示&#xff0c;如“Java编程思想”“Scala实战”等&#xff09; 2.添加两本新的书籍到图书馆集合中&a…

移动端【01】面试系统的MVVM重构实践

基于MVVM的移动端面试系统重构实践&#xff1a;模块化设计与实现 一、项目背景 面试记录表系统在经过一年多的迭代后&#xff0c;代码质量问题日益突出。View和ViewModel代码均超过3000行&#xff0c;组件引用超过1000个&#xff0c;亟需进行架构重构。本文将详细介绍基于MVV…