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

在K8s中部署Bitnami/Mysql提示数据目录不可用的问题求助

问题分析与解决方案

问题背景

使用Bitnami MySQL Helm Chart在Kubernetes部署实例时,执行以下命令:

helm install my-sql bitnami/mysql --set global.storageClass=rook-cephfs --set image.debug=true --set auth.rootPassword="SAra131064" --set auth.username=ali --set auth.password=ali1234 --set volumePermissions.enabled=true

实例启动失败,核心报错:

The designated data directory /bitnami/mysql/data/ is unusable

进入诊断模式重新执行启动脚本后,错误复现,且日志显示InnoDB异步IO(AIO)子系统初始化失败:

2022-12-15T14:21:02.702315Z 1 [ERROR] [MY-012584] [InnoDB] io_setup() failed with EAGAIN after 5 attempts.
2022-12-15T14:21:02.702619Z 1 [ERROR] [MY-012954] [InnoDB] Cannot initialize AIO sub-system

核心原因

Rook CephFS属于分布式文件存储,不支持MySQL InnoDB依赖的异步IO(AIO)特性。而MySQL 8.0版本默认启用innodb_use_native_aio=1(原生AIO),当存储后端不兼容时,就会触发io_setup() EAGAIN错误,最终导致数据目录初始化失败。

注:从目录权限信息来看,volumePermissions.enabled=true已生效,data目录权限(1001:root)符合要求,权限并非问题根源。

解决方法

方法1:禁用InnoDB原生AIO

通过Helm参数添加MySQL启动参数,强制关闭原生AIO支持:

  • 若为已部署实例,执行升级:
helm upgrade my-sql bitnami/mysql --set global.storageClass=rook-cephfs --set image.debug=true --set auth.rootPassword="SAra131064" --set auth.username=ali --set auth.password=ali1234 --set volumePermissions.enabled=true --set primary.extraFlags="--innodb_use_native_aio=0"
  • 若为新部署,直接在install命令中追加上述primary.extraFlags参数。

方法2:更换为支持AIO的存储类

CephFS是文件存储,不适合数据库这类对IO性能和特性要求高的场景。建议更换为Rook Ceph RBD(块存储),或其他支持AIO的存储后端(如本地PV、AWS EBS等),块存储原生支持AIO,更适配MySQL的IO需求。

验证操作

  1. 部署完成后,检查Pod状态:
kubectl get pods | grep my-sql
  1. 进入Pod验证MySQL服务:
kubectl exec -it my-sql-0 -- mysql -uroot -pSAra131064

执行以下命令确认AIO已禁用(方法1场景):

SHOW VARIABLES LIKE 'innodb_use_native_aio';

预期结果为VALUE列显示OFF。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:40:42