如何恢复误删的数据库

前段时间,某开发人员误删了一个数据库,导致我们的服务,最后是恢复了,过程我并不清楚,但引起了我的兴趣。因为误操作真的是很难避免的,开发人员那么多,一个不小心,就可能影响了其他人的使用,所以慎重操作,最好能禁用一些操作,比如drop!

那么如何来恢复呢?

如果有备份的话,当然去寻找最新的,然后恢复,如果不在意新增的数据,那么这样就足够了。

来看一下备份,

// 备份某个数据库某些表
mysqldump [options] db_name [tbl_name ...] > bak.sql
// 备份多个数据库
mysqldump [options] --databases db_name ...> bak.sql
// 备份所有数据库
mysqldump [options] --all-databases> bak.sql

个人建议单个备份,好独立操作。

了解更多请看:
mysqldump

恢复操作(以单个数据库为例)

mysql -h127.0.0.1 -uroot -p del < bak.sql

操作是不是很简单?

那么如果没有备份怎么办呢?

第二种操作前提是开启了binlog,通过log恢复。

误删后可以保存下binlog

mysqlbinlog mysql-bin.000011 > del.log

打开文件,去掉drop操作并保存。

mysql -h127.0.0.1 -uroot -p <del.log

当然,比较建议通过dump全备份操作,然后找出备份到drop的pos。

通过mysqlbinlog 的start-position和stop-position生成sql后恢复。这里就不赘述了。

有兴趣可以看看mysqlbinlog

好了,就说到这里,希望对你有所帮助。


如何恢复误删的数据库
https://blog.puresai.com/2019/01/11/176/
作者
puresai
许可协议