【MySQL学习】No.5 误删数据

MySQL 中误删数据主要以下几种:

- 使用 delete 语句误删数据行;

- 使用 drop table 或者 truncate table 语句误删数据表;

- 使用 drop database 语句误删数据库;

- 使用 rm 命令误删整个 MySQL 实例。

# 误删行

使用 delete 语句误删了数据行,可以用 Flashback 工具通过闪回把数据恢复回来。

Flashback 恢复数据的原理,是修改 binlog 的内容,拿回原库重放。而能够使用这个方案的前提是,需要确保 binlog_format=row 和 binlog_row_image=FULL。

# 误删库 / 表

这种情况下,要想恢复数据,就需要使用全量备份,加增量日志的方式了。这个方案要求线上有定期的全量备份,并且实时备份 binlog。

在这两个条件都具备的情况下,假如有人中午 12 点误删了一个库,恢复数据的流程如下:

- 取最近一次全量备份,假设这个库是一天一备,上次备份是当天 0 点;

- 用备份恢复出一个临时库;

- 从日志备份里面,取出凌晨 0 点之后的日志;

- 把这些日志,除了误删除数据的语句外,全部应用到临时库。

# 预防误删库 / 表的方法

虽然常在河边走,很难不湿鞋,但终究还是可以找到一些方法来避免的。

第一条建议是,账号分离,避免写错命令。

第二条建议是,制定操作规范。这样做的目的,是避免写错要删除的表名。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容