删数据的几种情况使用语句误删数据行

xzdxmynet 发布于 2024-03-17 阅读(32)

前言

IT界的每个人可能都熟悉的一件事就是删除数据库并逃跑。 数据是系统最基本、最重要的部分,是企业的命脉,所以操作生产数据时一定要谨慎。 然而,万一有一天手抖,不小心删除了数据怎么办? 策略不可能只有三十六种,步行是最好的策略。 今天,我将向您提供其他策略。

删除数据的几种情况包括使用语句误删除数据行; 使用drop table或table语句意外删除数据表; 使用 drop 语句意外删除数据库; 并使用 rm 命令意外删除整个 MySQL 实例。

下面,我们一一分析上述情况的结果和救援方法。

行被错误删除

首先我们看一下一条数据生成时,语句是如何记录的。

当=时,里面记录的是SQL语句的原文。

=示例

2、当='row'时,记录的不是一条SQL语句,而是两个事件:and。

=row示例

上图中看不到细节。 我们可以使用工具来查看具体的细节。

mysqlbinlog -vv data/master.000001 --start-position=8900;

细节

如果我们想要恢复数据,我们需要将其设置为row。 这样,即使执行了一条语句,行格式也会保存被删除行的整行信息。 因此,如果执行语句后发现自己删除了错误的数据,可以直接转换记录的语句,将错误删除的数据插回恢复。

意外删除数据库/表

这种情况下,如果想要恢复数据,就需要使用全量备份和增量日志。 该方案需要定期在线全量备份和实时备份。

当满足这两个条件时,如果有人中午不小心删除了数据库,恢复数据的过程如下:

进行最新的完整备份。 假设这个库每天准备一次,最后一次备份是在当天的 0 点。 使用备份恢复临时库。 从日志备份中取出凌晨0点以后的日志。 删除这些日志(意外删除除外)。 除数据语句外,全部应用于临时库。

加快该过程的一种方法是使用备份来恢复临时实例,然后将临时实例设置为在线备用数据库的从数据库。

分开账户,制定操作规范,防患于未然。 rm 删除数据

事实上,对于具有高可用机制的MySQL集群来说,最不用担心的就是rm删除数据。 只要整个集群没有被恶意删除,而只是删除了一个节点的数据,HA系统就会开始工作,选择一个新的主数据库,保证整个集群的正常运行。

这时候你要做的就是恢复这个节点上的数据,然后连接到整个集群。

不过还是建议建立一个完整的异地容灾机房,这样可以更安全。

总结

今天我们讨论了几种删除数据的恢复方法,但更重要的是要注意预防远比治疗更有意义。 同时,定期检查备份的有效性。 因此,您应该经常注意它。 另外,如果不小心删除了数据,也不要逃跑。 记得及时处理,因为数据很重要,不能丢失,否则会有客户投诉!

标签:  语句 数据 备份 集群 日志 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。