【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 点之后的日志;

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

# 预防误删库 / 表的方法

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

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

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

你可能感兴趣的:(【MySQL学习】No.5 误删数据)