You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS EC2上MySQL数据库丢失如何恢复?实例类型变更后数据失踪

问题分析与恢复步骤

1. 优先检查RECOVER_YOUR_DATA目录

这个目录是异常信号,先查看其中内容:

ls -al /var/lib/mysql/RECOVER_YOUR_DATA
cat /var/lib/mysql/RECOVER_YOUR_DATA/*

如果存在勒索提示,说明数据库被加密,优先用备份恢复;若无有效提示,继续排查。

2. 确认MySQL数据目录配置

检查MySQL配置文件中的datadir参数,确认当前MySQL加载的是否为预期的数据目录:

grep datadir /etc/my.cnf  # 不同系统配置路径可能为/etc/mysql/my.cnf

同时查看MySQL启动日志验证加载目录:

journalctl -u mysqld | grep datadir

如果datadir指向非/var/lib/mysql的路径,原spring数据库可能在该路径下。

3. 验证EBS卷挂载正确性

从df -h输出看,当前仅根卷/dev/xvda1挂载,若原MySQL数据在独立EBS卷上,需排查挂载状态:

  • 列出所有块设备,确认是否有未挂载的数据卷:
lsblk
  • 检查/etc/fstab的持久化挂载配置,看是否有未生效的挂载项:
cat /etc/fstab
  • 若发现未挂载卷,临时挂载验证:
mkdir /tmp/old_mysql
mount /dev/xvdb /tmp/old_mysql  # 替换为实际未挂载卷的设备名
ls -al /tmp/old_mysql

如果此处能看到spring目录,说明之前挂载错误,重新配置挂载即可恢复数据。

4. 检查InnoDB数据文件完整性

InnoDB的ibdata1存储表空间数据,可通过工具检测残留数据:

  • 先停止MySQL服务:
systemctl stop mysqld
  • 备份当前数据目录(避免操作损坏现有文件):
cp -r /var/lib/mysql /var/lib/mysql_backup
  • 使用innochecksum检测ibdata1完整性:
innochecksum /var/lib/mysql/ibdata1

若检测到spring库的表信息,可尝试通过专业工具提取恢复。

5. 排查备份与快照

  • 检查本地是否存在mysqldump备份文件:
find / -name "*.sql" | grep spring
  • 登录AWS控制台查看对应EBS卷的历史快照,若有快照可创建新卷挂载到实例,提取原数据。

6. 分析异常日志

查看实例切换前后的系统与MySQL日志,定位异常触发点:

cat /var/log/messages | grep -i mysql
journalctl -u mysqld --since "2024-07-08 13:00" --until "2024-07-08 22:00"

重点关注MySQL崩溃、权限变更、异常启动的记录。


内容的提问来源于stack exchange,提问作者HyeonKyeong Park

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 12:23:30