首页 > 数据库 >《MYSQL45讲》误删数据怎么办

《MYSQL45讲》误删数据怎么办

时间:2024-11-13 22:18:35浏览次数:3  
标签:binlog 备库 备份 误删 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也会选举出一个新的主库。

标签:binlog,备库,备份,误删,MYSQL45,全量,怎么办,误操作
From: https://blog.csdn.net/Dennis_nafla/article/details/143754020

相关文章

  • 海康私有化视频平台EasyCVR大华乐橙设备私有平台视频监控系统知识分享:视监控画面有黑
    在现代安防监控领域,高清视频的接入和传输是确保监控系统效能的关键。EasyCVR安防监控视频系统,以其先进的网络传输技术和对大规模、高并发远程监控需求的满足,成为安防监控系统中的佼佼者。该系统不仅支持高清视频的接入和传输,还具备解决监控画面问题和提供关键技术支持的能力。本文......
  • SD卡误删视频怎么恢复?这3个简单方法,要学会
    SD卡作为一类通用的存储媒介,目前被众多电子产品采用,包括:智能手机和摄像机等。然而,在平时使用的过程中有时无意失误或者其他的原因,难免会导致存储的视频数据被意外删除。那么遇到这种情况sd卡误删视频怎么恢复?本文将详细介绍SD卡误删视频的恢复方法,帮助你轻松找回丢失的SD卡视频......
  • Abaqus不收敛怎么办?
    本文摘要(由AI生成):文章主要介绍了ABAQUS中的求解类型、不收敛问题的本质、进阶解决方法以及收敛参数的调整。不收敛问题通常由几何非线性、材料非线性、边界非线性引起,有限元求解过程是根据外力与内力平衡求解出各个节点的位移,根据位移再求解应力、应变等。对于不收敛问题,首先......
  • 网站地址栏提示“不安全”该怎么办?
    当浏览器地址栏提示“不安全”时,这通常意味着网站存在安全隐患,可能危及用户的数据安全和隐私。以下是一些针对用户和网站管理员的解决建议:针对用户避免输入敏感信息:在地址栏显示“不安全”的网站上,避免输入任何敏感信息,如个人身份、财务信息或登录凭证。联系网站管理员:如果......
  • Java Pom 两个模块需要互相引用怎么办
    JavaPOM模块化是什么在Java项目中,特别是在使用Maven作为构建工具时,"POM模块化"是一个重要的概念,它指的是将大型项目拆分成多个更小、更易于管理的模块(或称为子项目)。每个模块都有自己的pom.xml文件,该文件定义了模块的构建配置,包括依赖关系、插件、目标平台等。1.1POM(P......
  • 电脑提示xinput1_3.dll丢失怎么办?游戏DLL修复方法详解
    xinput1_3.dll是一个动态链接库(DLL)文件,它在Windows操作系统中扮演着重要的角色,特别是在处理游戏控制器和其他输入设备的交互方面。这个文件是MicrosoftDirectX软件包的一部分,DirectX是微软公司开发的一个多媒体编程接口集,广泛应用于PC游戏开发中,以实现高效的图形渲染、音频处......
  • 如何提升客服的工作效率?企业外呼电话接通率低该怎么办?
    在当今快节奏的工作环境中,降本增效已成为许多企业追求的目标。然而,很多企业的客服人员在提高工作效率时却遇到了困难。本文将介绍一些有效的方法,帮您摆脱低效工作的困扰,实现高效的企业沟通,并特别推荐一种能够有效提高接通率的工具——来电名片。首先,在开始工作前,客服人员可以......
  • 达梦数据库DM管理工具增删改不生效怎么办?如何设置事务自动提交?
    前言我在使用达梦数据库DM时,一开始使用的是达梦数据库自带的连接工具DM管理工具。自带的有它自己的好处,起码对于修改新增字段等是比较兼容的。后面我发现DBeaver也是支持连接达梦数据库的,所以后面用DBeaver也在连接达梦数据库。我在一开始使用的DM管理工具的时候,遇到了一个奇怪......
  • 笔记本里的固态硬盘坏掉了怎么办
    当笔记本里的固态硬盘(SSD)坏掉时,可以尝试以下步骤来解决问题:一、初步检查与诊断检查连接:打开笔记本后盖,检查固态硬盘的SATA或NVMe接口连接线是否插紧,是否有松动或断裂。重新插拔连接线,确保连接牢固,然后重启笔记本看是否能解决问题。检查电源:确保固态硬盘的电源线连接良好。......
  • 解决安装Dreamweaver时出现vic32.dll错误的方法(提示vic32.dll错误怎么办)
    在安装AdobeDreamweaver时,有时会遇到“vic32.dll”文件缺失或加载失败的错误提示。这不仅会影响安装过程,还会导致软件无法正常运行。本文将详细介绍如何解决这一问题,确保Dreamweaver能够顺利安装和使用。错误原因1.文件缺失:vic32.dll文件可能由于各种原因(如病毒攻击、系统......