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

AKS集群中MariaDb切换至Azure文件共享卷启动失败求助

在AKS中使用Azure文件共享卷部署MariaDB启动失败问题排查

问题现象

  • 未挂载卷时,Pod可正常创建并访问数据库;
  • 挂载Azure文件共享卷后,容器启动报错,错误日志如下:
2023-04-14 14:29:11+00:00 [Note] [Entrypoint]: Initializing database files
2023-04-14 14:29:11 0 [ERROR] InnoDB: The Auto-extending data file './ibdata1' is of a different size 0 pages than specified by innodb_data_file_path
2023-04-14 14:29:11 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2023-04-14 14:29:11 0 [ERROR] Plugin 'InnoDB' init function returned error.
2023-04-14 14:29:11 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2023-04-14 14:29:11 0 [ERROR] Unknown/unsupported storage engine: InnoDB
2023-04-14 14:29:11 0 [ERROR] Aborting

Installation of system tables failed!  Examine the logs in
/var/lib/mysql/ for more information.
  • 查看文件共享,发现MariaDB创建了0字节的ibdata1、aria_log.00000001和aria_log_control文件;
  • 使用nginx镜像挂载同一卷可正常读写;
  • 部署方式为StatefulSet,相关配置如下:

PersistentVolume配置

kind: PersistentVolume
apiVersion: v1
metadata:
  name: mariadb-pv
  annotations:
    pv.kubernetes.io/provisioned-by: file.csi.azure.com
spec:
  capacity:
    storage: 50Gi
  azureFile:
    secretName: storage-account
    shareName: mariadb
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: azurefile-csi
  mountOptions:
    - file_mode=0777
    - nobrl
    - mfsymlinks
    - gid=999
    - uid=999
    - dir_mode=0777
    - nosharesock
    - cache=strict
  volumeMode: Filesystem

PersistentVolumeClaim配置

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: mariadb-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 50Gi
  volumeName: mariadb-pv
  storageClassName: azurefile-csi
  volumeMode: Filesystem

MariaDb StatefulSet配置

kind: StatefulSet
apiVersion: apps/v1
metadata:
  name: mariadb-sts
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mariadb
  template:
    metadata:
      labels:
        app: mariadb
    spec:
      volumes:
        - name: datadir
          persistentVolumeClaim:
            claimName: mariadb-pvc
      containers:
        - name: mariadb
          image: mariadb:10.11
          ports:
            - name: mariadb-port
              containerPort: 3306
              protocol: TCP
          env:
            - name: MARIADB_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mariadb
                  key: password
                  optional: false
          volumeMounts:
            - name: datadir
              mountPath: /var/lib/mysql
              mountPropagation: None
      restartPolicy: Always
  serviceName: mariadb

已调整挂载选项中的uid和gid为mysql用户的999,问题仍未解决。


问题原因及解决方案

核心原因

Azure文件共享基于SMB协议,不支持InnoDB所需的**稀疏文件(Sparse File)**特性。MariaDB初始化时尝试创建自动扩展的ibdata1稀疏文件,但SMB无法正确处理这种文件类型,导致文件实际大小为0字节,触发InnoDB的大小校验错误。

解决办法

1. 修改InnoDB配置,禁用稀疏文件创建

创建ConfigMap存储自定义MariaDB配置,强制InnoDB创建预分配的非稀疏文件:

apiVersion: v1
kind: ConfigMap
metadata:
  name: mariadb-config
data:
  my.cnf: |
    [mysqld]
    innodb_data_file_path = ibdata1:12M:autoextend
    innodb_file_per_table = 1
    innodb_flush_log_at_trx_commit = 1
    innodb_log_buffer_size = 8M
    innodb_log_file_size = 512M
    innodb_sparse = 0

在StatefulSet中挂载该ConfigMap到/etc/mysql/conf.d目录,修改StatefulSet的spec.template.spec部分:

volumes:
  - name: datadir
    persistentVolumeClaim:
      claimName: mariadb-pvc
  - name: config
    configMap:
      name: mariadb-config
containers:
  - name: mariadb
    image: mariadb:10.11
    # 其他原有配置保持不变
    volumeMounts:
      - name: datadir
        mountPath: /var/lib/mysql
        mountPropagation: None
      - name: config
        mountPath: /etc/mysql/conf.d

2. 清理现有无效文件

删除Azure文件共享中已创建的0字节ibdata1、aria_log.00000001和aria_log_control文件,避免初始化时读取无效文件。

3. 验证部署

重新创建StatefulSet,观察Pod启动日志确认InnoDB初始化正常:

kubectl logs mariadb-sts-0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:27:14