起因

  1. 周一上午刚到公司便接到策划同事发来的消息,公司某老项目游戏有玩家报登录不上。
  2. 于是便登录相关项目服务器,执行脚本,结果如下图:

记录一次因服务器阵列卡坏掉而导致的回档操作_第1张图片

当时返回无返回结果,及红色框内无返回值。第一直觉便觉得是不是对应服务器网络有问题。

处理过程

  1. ping了对应服务器,结果响应正常,尝试登录服务器结果登录不上,再使用telnet 命令测试对应端口正常。初步怀疑是否是sshd程序卡死,但由于正常玩家都无法登录游戏,所以排除单单sshd程序故障。

  2. 由于是物理机,就及时联系机房管理员,重启下服务器。等待约半个小时还没好,就再次询问机房人员,对方回复,由于阵列卡故障,导致磁盘文件系统损坏,经修复无果,无法正常启动服务器,为尽快恢复业务。提出新找一台服务器,安装相同版本系统,相同分区,然后把故障服务器上的磁盘挂载到新服务器上,拷贝出原磁盘上的数据到新服务器磁盘上,进行恢复业务(再三确认原盘数据是否会有风险,机房给的答复是没有风险,于是便开始动手干)。

  3. 通过拷贝原盘数据到新盘,快速部署好业务环境后,启动mysql,nginx,php-fpm等进程,恢复业务(在这过程中发现原盘根目录下etc目录下所有文件都丢失,本地数据库备份目录下文件也都丢失,隐隐不好的感觉,好在其他目录下文件结构都完整,数据库目录结构也完整),结果后续陆续有玩家上报角色丢失。

  4. 立马创建实例,把前一天远程备份恢复到该实例下。通过两个库中角色信息对比,发现是有数据记录丢失。

  5. 尝试通过把缺失玩家信息记录复制到现在外网数据库中来实现恢复玩家角色,经过尝试,不可行。

  6. 于是只能尽快进行回档操作,由于远程备份是每天凌晨4点,服务器硬件故障经客服统计玩家反馈为2点左右出现,所以用昨天凌晨4的远程备份来进行回档操作。

  7. 通过回档,玩家角色数据恢复