Loading... 下面记录下整个过程,给自己留个备份,给相似经历者一些启发。 1、开始本教程之前请先检查下你的回收站是不是开着,因为宝塔环境默认是开着的,或者数据库是否有近期备份文件,因为大海曾讲过多次该内容。 假如回收站开着或者数据库有备份,那么恭喜你,你可以直接恢复了,下面的这些内容就不再需要了。![](https://puep.qpic.cn/coral/Q3auHgzwzM4fgQ41VTF2rCKM7SrzQ2q5JFjricgY508HNNnwFjaE9yg/0) 你还在继续阅读本教程,那么假如你的数据库能够恢复,请在第一时间内开启数据回收站,并增加计划任务里的网站和数据库备份。 2、在本教程的这种方法里,想要完成mysql的删库恢复,你的mysql必须开启了二进制日志,万幸的是宝塔面板下这一功能是默认开启的,想要确定你的mysql是否开启,最直接的办法,就是去/www/server/data目录下,看看有没有几个mysql-bin文件,像下图这样的: ![](https://puep.qpic.cn/coral/Q3auHgzwzM4fgQ41VTF2rAwAiagfMBCdfdEGBiaHibUUkSmBwicFe92Yjw/0) 结尾数字未必是从1开始的,只要有,那就说明可以继续下一步,假如没有,那么尝试全盘搜索mysql-bin文件,假如哪都没有,那本教程将不适合你。 操作之前,将mysql-bin文件全部备份下,以免失误带来不可逆的损失。 服务器中假如有其他的数据库,也请提前备份下。 3、在宝塔终端或者ssh中root权限下,使用命令: > /www/server/mysql/bin/mysqlbinlog --start-datetime="2021-05-20 15:30:01" --stop-datetime="2021-08-24 12:30:50" /www/server/data/mysql-bin.0000* > redata.sql 其中的/www/server/mysql/bin/mysqlbinlog是mysqlbinlog程序的位置,这样写的好处是不用增加配置系统环境变量,start和stop是划定时间段,注意结束时间不能是删除数据库之后的时间,也就是整个时间段必须在删除数据库之前,假如无法精确,那尽量提前到几天前,开始的时间要早于数据库建立的时间,假如记不清,那可以删掉开始时间,简写为 > /www/server/mysql/bin/mysqlbinlog --stop-datetime="2021-08-24 12:30:50" /www/server/data/mysql-bin.0000* > redata.sql 注意mysql-bin.0000*的写法是包含了全部所有的数据库信息,执行起来比较费时,假如你可以根据mysql-bin文件的大小和修改时间,确定某个具体的mysql-bin文件,那也可以写具体文件名,例如mysql-bin.000001,一般对应的文件都比较大。 运行上面的命令后进入root目录下查看是否出现了redata.sql文件,该文件大小应该远大于删掉的数据库大小,假如没有生成该文件或者该文件过小,那么尝试下面这条命令 > /www/server/mysql/bin/mysqlbinlog --base64-output=DECODE-ROWS -v -d 数据库名 /www/server/data/mysql-bin.0000* > redata.sql 这条命令不再设置时间点,而是完全按照文件恢复,数据库名换成删掉的数据库名,假如不记得了,去网站文件config或者其他数据库配置文件查看,宝塔默认数据库和网站文件夹同名,点换成下横线。 运行该命令后进入root目录下查看是否出现了redata.sql文件。 4、假如有了redate.sql文件,在数据库中新建数据库,数据库名最好和删掉的数据库同名,然后执行下面的命令: > mysql -uroot -p -f 新建数据库名 < redata.sql 假如一切顺利,你的数据库会恢复到删除前的状态,有些情况下只能部分恢复。 *本教程中只使用了二进制日志中比较简单的时间节点恢复,还有一种更加复杂精确的事件sid恢复,大家可以参考b站“特健全的都教授”的数据库相关视频“[5.5.使用MySQL二进制日志](https://www.bilibili.com/video/BV1AQ4y1d7jc)”和“[7.5.MySQL备份:使用二进制日志进行数据恢复](https://www.bilibili.com/video/BV13q4y1W7MU)”讲解的非常详细 最后修改:2022 年 06 月 25 日 © 转载自他站 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏