用宝塔不小心删除了mysql数据库怎么找回?
前天由于备案域名的原因,转移服务器后,对于现有服务器中的一些不用网站和数据库进行了清理,不能只管建站不管删除吧,数据库中也存在乱七八糟的各种早起测试时建立的数据库,比如命名为test以及demo的之类,随手就在宝塔中删除了,想着都是一些测试数据库,应该没事,但好死不死,其中一个数据库是去年建的一个站,内容更新了一百多篇,虽然没有什么大流量也是很大的心血啊,当初正式站为什么没有改变数据库名呢,为什么还在用类似于domo这样的打头前缀,当时就懵了。
通过宝塔回收站找回数据库失败:
可能有人知道,宝塔是有回收站的,赶紧去翻看数据库的回收站,令人惊悚的是,宝塔默认未开启数据库回收站功能,我的天呐,为什么有这个坑,默认的网站文件是有开启回收,最重要的数据库竟然是默认关闭的,以前也从来没有开启过。
通过服务器快照找回数据库失败:
遇到这种情况可怎么办?赶紧到服务商官网查看,看服务器是不是存在快照,让人悲伤的是,有快照功能,但我未开启自动快照,最近的快照还是去年年中时候快照了一次,用的不是阿里云之类的大型服务商,通过快照找回数据库的方法失败!
尝试用数据库日志找回快照成功一半:
要知道宝塔中安装的mysql是默认开启日志记录的,这也是为什么很多用户使用宝塔过程中,空间被使用的速度很快,明显超出了网站文件本身的大小,很大原因就是各种日志以及备份导致的。
以前只听说过通过msyql的日志找回数据的功能,只要建站后的所有日志都在,那么就可以通过恢复mysqlbinlog文件中的记录去恢复数据库,当然如果是多个数据库同时使用的话,那么日志就包含所有数据库日志,就需要去过滤一下。
如下图:是宝塔中关于数据库的日志文件,很多个,都是以mysql-bin.****为名的。
等我查看数据库日志的时候,血压高了,我竟然在两个月前清空过日志记录,我的天哪,手贱如此,我为什么清空日志呢,空间又不是不够用,也不是处女座,竟然只有一俩月的日志了,这能恢复多少? 最后也不管了,先恢复吧,看能恢复多少就多少吧,把基本设置,分类tag之类的恢复过来也好,但一对时间点,卧槽,只能恢复部分这一俩月的文章以及一小部分设置,其他根本没改,日志肯定没有。
/www/server/mysql/bin/mysqlbinlog -d demo_sql --start-datetime="2021-06-28 12:00:01" --stop-datetime="2022-04-01 01:30:50" /www/server/data/mysql-bin.000060 > redata60.sql
以上这段,就是根本我宝塔中的日志,把所有包含demo_sql数据库的日志提取出来,时间点就是2021-06-28到2022-04-01,日志文件是mysql-bin.000060,在根目录的root下生成一个redata60.sql文件,也就是只是包含这个数据库的记录提取出来备用。
下一步,建立原来已经删除的demo_sql数据库,等下要把日志恢复进原来的数据库中:
mysql -uroot -p -f demo_sql < redata60.sql
如下图,因为有多个数据库同时在用,日志文件也有好几个,就逐一进行了提取和恢复到原来的数据库操作。
这里有一个问题,只建立了数据库名好像不行,还必须建表,最好的方式是用原新程序重新安装一次网站,数据库数据表齐备后再恢复进去,否则可能丢数据。
可惜的是这种通过数据库日志的方法恢复日志,必须在建站后就开启了数据库日志,并且一直保存,才有可能恢复,我清空过日志,就真的只恢复了日志中存在的文章。
利用搜索引擎进行手动恢复文章:
这个方法就是最笨的方法,除非你的网站文章量少,可以采用去搜索引擎中site的办法,查看快照,在快照页面然后复制标题和文章内容,重新发布,此时要注意发布的id,要保持与原有文章一致才行,否则连url都变了,除非很重要的记录文章,否则对搜索引擎对收录也意义不大。
但这种方式还是让我找回了不少文章,其中收录最多的竟然是google,百度不太给力,搜狗收录的挺多但是竟然没有快照,文章内容都看不到怎么复制回来,所以最终还是依靠科学上网,从google中把原来的文章从快照中扒拉了出来。
最后,网站真的要时刻备份,不管是文件还是数据库都必须每时每刻做好备份,最好一两天备份一次,同时要存在多种备份方式,一种都不保险,数据库日志也要开启,不要轻易删除,删除前也可以下载到本地,以防万一。
版权声明:本文由老白网络发布,如需转载请注明出处。