数据库一直是黑客们热衷攻击的对象,对于MYSQL,黑客的攻击方式一般都是全库删除,然后留下一份勒索信息。如下图
在遇到这种情况时,最忌直接在原机器上操作。如果有备份,一定先准备一个测试环境,在测试环境上还原备份,校验数据备份的可用性。若备份可用,再还原到原始环境上。不然,一旦在原始环境上还原备份,会覆盖破坏丢失的数据,造成数据库最终无法恢复。
一旦发现数据库被勒索删除,可以有以下几种方式进行补救。
1、binlog恢复
如果有完整的binlog日志在,可以直接使用binlog恢复数据库。相关的文章在网上有很多,可以自行搜索。
2、历史备份+binlog恢复
如果有历史备份,和部分binlog日志,确认备份和binlog日志相应的时间点,先试用备份还原出备份数据库,再使用相同时间点后的binlog,增量恢复数据。
以上两种方法都需要在有binlog日志或者历史备份的情况下才可以进行。不过一般黑客在勒索的时候,也会清理掉binlog日志,除非对binlog日志也有过备份才可以尝试。
截下来重点介绍没有历史备份和binlog日志的情况下,遇到勒索后,数据库如何恢复
3、扫描数据页恢复
MYSQL数据库在5.5版本以后,默认使用的就是INNODB引擎了。
在INNODB引擎下,MYSQL数据库中,每个表都会对应一个.frm文件和一个.ibd文件(8.0以上版本就只有一个.ibd文件),而.ibd文件就是实际存放表记录数据的文件了。.ibd文件中,有严格的数据页结构,默认为16K的数据页,因此数据库在被黑客恶意删除后,我们可以根据数据页中的特征结构,在磁盘分区上直接扫描相应的数据页,继而恢复每一张表的数据记录。
扫描磁盘中的数据页片段
数据页扫描完成后,就可以根据表结构,对数据页进行解析,提取出相应的数据记录,再插入到新的数据库中,这样数据的恢复就完成了。
现在大量用户将系统平台部署到了云端,使用各种公有云作为MYSQL数据库服务器,相对来说更容易收到黑客的攻击。如果一旦有发生数据库丢失的情况,切记不要急于操作,一定要保护好原始环境,这样才能保证数据可以最大程度上的恢复。
如切实遇到黑客勒索或数据库数据丢失问题,有需要可以留言或私信