新来的实习女大学生,在工作中,更新项目时一键清空大量数据表里的数据,是在没办法了找到我,仓皇失措泫然欲泣的,怕公司让自己承担损失,那么如何帮助这样的女孩子摆脱困境呢? 宝塔mysql误删除恢复 。
1.如果宝塔数据库有备份如下图,可以先恢复到备份那天的数据,做一个应急处理,让大部分用户可以继续使用
注意以上这步只是应急处理,会有部分订单和用户,也就是备份之后的数据丢失
2.想要完成mysql的删前恢复,mysql必须开启了二进制日志,宝塔面板下这一功能是默认开启的,想要确定你的mysql是否开启,最直接的办法,就是去/www/server/data目录下,看看有没有几个mysql-bin文件或者全盘搜索全盘搜索mysql-bin文件,像下图这样的:
如果没有这种数据,是否觉得经常出现 /www/server/data目录过大,一劳永逸图省事关掉这个功能那就真的芭比Q了。
注意:操作之前,将mysql-bin文件全部备份下,以免失误带来不可逆的损失。服务器中假如有其他的数据库,也请提前备份下。
开始操作
1.在宝塔终端或者ssh中root权限下,使用命令:
/www/server/mysql/bin/mysqlbinlog --start-datetime="2022-04-23 12:00:00" --stop-datetime="2022-05-11 11:00:00" /www/server/data/mysql-bin.0000* > redata.sql
其中的/www/server/mysql/bin/mysqlbinlog是mysqlbinlog程序的位置,这样写的好处是不用增加配置系统环境变量,start和stop是划定时间段,注意结束时间不能是删除数据库之后的时间,也就是整个时间段必须在删除数据库之前,假如无法精确,那尽量提前到几天前,开始的时间要早于数据库建立的时间,假如记不清,那可以删掉开始时间,简写为
/www/server/mysql/bin/mysqlbinlog --stop-datetime="2022-05-11 11:00:00" /www/server/data/mysql-bin.0000* > redata.sql
注意mysql-bin.0000*的写法是包含了全部所有的数据库信息,执行起来比较费时,假如你可以根据mysql-bin文件的大小和修改时间,确定某个具体的mysql-bin文件,那也可以写具体文件名,例如mysql-bin.000001,一般对应的文件都比较大。
2.进入 /www/server/data 目录下查看redata.sql或者全局搜索 redata.sql是否出现了
假如有了redate.sql文件,在数据库中新建数据库,数据库名最好和删掉的数据库同名,然后执行下面的命令:
mysql -uroot -p -f 新建数据库名 < redata.sql
假如一切顺利,你的数据库会恢复到删除前的状态,有些情况下只能部分恢复,比如我帮的这个女大生,恢复后一些关联并未生效,需要重新写程序关联一下,不清楚问什么会存在这个情况。
因为目前这种方法已经满足当下需求,也并未在使用其他方法,如果用到不是宝塔,或者mysql二进制关闭了,那本教程将不适合,搜索本站看看是否有其他方法。