Halo 数据恢复记:一次"有惊无险"的教训(AI帮我写的,回头再改)
今天经历了一场虚惊。
事情是这样的:我原本想把 Halo 博客的数据库从 H2 换成 MySQL,于是用 1Panel 做了一次"初始化"操作。结果操作完之后,博客前台一片空白——文章全没了。
当时心里一沉。但转念一想,我之前在 Halo 后台做过备份,下载了一个 60 多兆的压缩包存在本地。数据应该还在。
于是开始恢复。第一次尝试,在 1Panel 里折腾了半天,上传备份、恢复,提示失败。再试一次,还是失败。那时候真的有点慌了——备份文件会不会本身就有问题?
冷静下来检查了一下备份包:解压后 extensions.data 有 2.4MB,不是 0 字节,也不是几 KB,说明文章数据大概率还在里面。那问题不在备份文件,而在恢复方式上。
于是我换了个思路:跳过 1Panel,直接在 Halo 后台上传那个备份压缩包。
点下恢复按钮,等了几秒钟——
数据全回来了。 文章、页面、分类、标签,一个不少。
复盘:问题出在哪
1Panel 在"初始化"过程中,会帮你装新的 MySQL 数据库并修改 Halo 的配置文件。但这个"动手术"的环节,可能恰好和数据恢复的过程冲突了——Halo 还没来得及把数据写进新数据库,或者写入过程中出了错,导致新数据库被清空。
而直接在 Halo 后台恢复,跳过了 1Panel 的数据库初始化步骤。此时 MySQL 已经正常运行,Halo 只需要把 extensions.data 里的数据"吐"进数据库,自然就成功了。
以后怎么做
备份永远先下载到本地,不要只存在服务器上。
恢复优先在 Halo 后台操作,而不是依赖 1Panel 的自动化流程。
备份完就验证:解压看看
extensions.data的大小,确认不是 0 字节。未来换服务器时:旧服务器先不动,在新服务器上恢复,确认一切正常后再关旧服务器。永远给自己留一条退路。
