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

ECS上重启Docker后MariaDB数据丢失,求持久化配置方案

Amazon ECS上MariaDB容器数据持久化解决方案

首先明确:MariaDB官方容器默认将数据存储在/var/lib/mysql目录,要解决重启任务数据丢失的问题,必须把这个目录挂载到AWS支持的持久化卷(EBS或EFS)上,以下是具体配置步骤和排查要点:

一、选择合适的卷类型

  • 单任务部署:优先用EBS卷,性能更适配数据库读写需求,且成本较低。
  • 多任务共享数据场景:选择EFS,支持跨实例共享存储。
  • 注意:不要用EC2宿主机的绑定挂载(bind mount),因为ECS重启任务可能调度到新的EC2实例,原宿主机数据无法访问。

二、修正卷挂载配置

1. 卷配置(以EBS为例)

  • 卷名称:自定义(比如mariadb-data)
  • 卷类型:选择AWS EBS
  • 关键参数:
    • 卷大小:根据数据量设置(比如20GB起步)
    • 卷类型:推荐gp3(平衡性能与成本)
    • 随任务删除:设为否,避免任务删除时误删数据

2. 容器挂载配置

在任务定义的容器部分,必须确保:

  • 挂载目标卷:选择上述创建的mariadb-data卷
  • 容器内路径:必须设为/var/lib/mysql(这是MariaDB存储数据的默认路径,挂载错路径等于白搭)
  • 权限:设为读写(Read/Write)

三、常见问题排查

  1. 挂载路径错误:这是最常见的无效原因,检查你的配置中容器内路径是否为/var/lib/mysql,不是的话立刻修正。
  2. 卷关联失败:确认任务定义中卷已正确关联到容器,挂载状态无报错。
  3. 权限问题:官方MariaDB镜像已处理/var/lib/mysql的权限,但如果自定义了镜像,可在启动命令中添加chown -R mysql:mysql /var/lib/mysql确保权限正确。
  4. EBS卷挂载限制:EC2启动类型的任务,EBS卷只能挂载到同一可用区的实例,确保任务调度的实例与卷在同一可用区。

四、验证配置

启动任务后,进入容器执行命令确认挂载:

df -h /var/lib/mysql

若输出显示挂载源是EBS/EFS卷,说明配置生效。此时插入测试数据,重启任务后检查数据是否保留即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:20:09