数据库,逻辑删还是物理删?

相信很多人都听过删库跑路这个词,用搜索引擎检索删库跑路,可以看到很多程序员删库跑路的讨论和新闻。

删库跑路

但是,严格来讲,大部分程序员想删库跑路也做不到。为什么呢?因为没有数据库的删除权限。——真正能删库跑路的是运维,再准确点DBA。

删库跑路

那么平时业务中的删除是怎么做的呢?答案是逻辑删除。

逻辑删除:又名软删除,与物理删除、硬删除相对应,含义是并没有实际的删除数据,只是将数据标记已删除(例如增加is_deleted字段)。

为什么要用逻辑删除?

物理删除很好理解,就是真的把数据给删了。

MySQL为例,假如数据删了,应该怎么恢复呢?主要方式有两种。

利用 binlog 日志

binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE…)以及表数据修改(INSERT、UPDATE、DELETE…)的二进制日志。

使用binlog恢复数据,本质上就是通过binlog找到所有DML操作,去掉错误的SQL语句,然后执行其它的SQL语句,就可以将数据恢复。

binlog恢复数据示意图如下:

binlog恢复数据

可以看到,恢复时候不仅需要停掉数据库,假如数据量大的话,去筛选恢复数据sql就

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsfjzp.html