前言
服务器还是得定时备份,不然突然失联可能会造成不小的数据损失。笔者的Lightsail(Ubuntu 22.04)在编译安装python3后重启便彻底失联,状态监控如图,重启,停止再启动均无用。用了整整一天时间才将数据拯救回来。
数据拯救过程
首先想到的自然是控制台的重启,停止再重新启动,试了好几次无果。
其次想到的是创建快照迁移到新实例,结果新实例和旧实例一模一样,无法访问。
随后网上搜索相关教程,有个提示是使用会话管理器,但是添加启动脚本根本都不运行,笔者试了在启动脚本中访问自己搭建的其他网站,但是无访问记录,推测应该是vps的网络出了故障,不能入站也不能出站。
中午准备放弃使用旧的备份数据启动,结果发现数据过于陈旧,许多代码更新丢弃,遂继续探索拯救方法。根据官方友情提示将快照放到EC2中启动新的实例,结果当然是ssh连接无效,但是幸运的是串行控制台可以连接,当终于登陆上vps看到自己的数据时,那激动的心情自然是不言而喻的。在串行控制台中,发现网络路由没配置,接口似乎也出了问题,按照网上教程配置一通,依旧无法访问,遂放弃从该实例上迁移数据。
最终笔者想到了可以像甲骨云vps一样,把磁盘挂载到新的可用实例上,由新的实例来提取数据。操作很简单,但要注意必须是同一区域才可以挂载,笔者采用很笨的方法,直接在新的lightsail实例上故技重施,创建快照并迁移至EC2。这里还遇到一个坑,即挂载后不知道对应的文件名,挂载时说是/dev/sdf结果确是/dev/nvme1n1p1,就挺...。笔者直接采用对照法,对比控制台挂载前和挂载后新增了哪些block文件,逐一尝试即可。最终挂载成功如图,左边终端为EC2,右边为新的lightsail。
最后提取数据就很简单了,把需要的数据scp到新的lightsail即可,这里还涉及到了mysql数据库的备份,笔者直接备份了整个/var/lib/mysql文件夹,当然不一定是这个文件夹,需要根据实际情况更改。注意恢复时先关闭mysqld,然后设置好文件夹属主和属组即可,一般都为mysql。
其实这一套操作下来,基本上只要不是数据已经损坏,都可以用上述方法找回数据(笔者之前甲骨云vps就用的重挂载找回数据),不过这有点浪费时间,实际工作中还是要养成备份的好习惯!
23.12.4:今天因为安装warp又失联了,但没上次严重,只需创建快照,添加启动脚本卸载warp即可正常连接。所以不到万不得已,没必要使用EC2的挂载卷大法,毕竟比较麻烦,也耗时间。