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

Bitnami Docker MariaDB启动失败[Exec Format error]求助

问题

我用Bitnami Docker MariaDB实例很久了,之前一直正常,最近突然启动失败,容器频繁重启,数据库完全用不了。为了排查,我改了docker-compose文件覆盖entrypoint让容器保持运行,进去调试。执行/opt/bitnami/scripts/mariadb/下的run.sh和setup.sh脚本时,都因为mysqld启动失败报错。直接执行启动命令:

/opt/bitnami/mariadb/sbin/mysqld --defaults-file=/opt/bitnami/mariadb/conf/my.cnf --basedir=/opt/bitnami/mariadb --datadir=/bitnami/mariadb/data --socket=/opt/bitnami/mariadb/tmp/mysql.sock --bind-address=127.0.0.1 --user=mysql --skip-slave-start

出现错误:bash: /opt/bitnami/mariadb/sbin/mysqld: cannot execute binary file: Exec format error。我删了镜像重新拉,问题还是存在。后来在另一台电脑测试,全新安装能正常启动,但把故障机器的持久化数据迁过去后,问题又出现了。求怎么恢复MariaDB数据库。

附上docker-compose配置:

version: '2'
services:
  mariadb:
    image: docker.io/bitnami/mariadb:10.6
    user: root
    #entrypoint: tail -f /dev/null
    environment:
      # ALLOW_EMPTY_PASSWORD is recommended only for development.
      - MARIADB_ROOT_PASSWORD=xxxxxxxxxx
      - ALLOW_EMPTY_PASSWORD=no
      - MARIADB_USER=finquescrm
      - MARIADB_DATABASE=xxxxxxxx
      - MARIADB_PASSWORD=xxxxxxxx
    volumes:
      - 'mariadb_data:/bitnami/mariadb'
      - ./sharedfolder:/sharedfolder
    restart: always
  suitecrm:
    image: docker.io/bitnami/suitecrm:7.12.5-debian-10-r79
    user: root
    ports:
      - '80:8080'
      - '443:8443'
    environment:
      - SUITECRM_DATABASE_HOST=mariadb
      - SUITECRM_DATABASE_PORT_NUMBER=3306
      - SUITECRM_DATABASE_USER=xxxxxxxx
      - SUITECRM_DATABASE_NAME=xxxxxxxx
      - SUITECRM_DATABASE_PASSWORD=xxxxxxxxxx
      # ALLOW_EMPTY_PASSWORD is recommended only for development.
      - MARIADB_ROOT_PASSWORD=xxxxxxxxxxxxxx
      - ALLOW_EMPTY_PASSWORD=no
    volumes:
      - 'suitecrm_data:/bitnami/suitecrm'
      - ./sharedfolder:/sharedfolder
    depends_on:
      - mariadb
    restart: always
volumes:
  mariadb_data:
    driver: local
  suitecrm_data:
    driver: local
解决方案
  • 确认架构兼容性:Exec format error大多是二进制文件和主机CPU架构不匹配导致的。先执行uname -m查看故障机器的CPU架构,再用docker inspect docker.io/bitnami/mariadb:10.6 | grep Architecture检查镜像支持的架构,确保两者匹配(比如ARM架构机器不要拉取x86_64版本镜像)。

  • 备份并修复持久化数据:

    1. 先备份故障数据卷:执行docker run --rm -v mariadb_data:/data -v $(pwd)/backup:/backup busybox cp -r /data /backup/mariadb_backup。
    2. 删除数据卷中损坏的InnoDB系统文件:进入调试容器,删除/bitnami/mariadb/data下的ib_logfile0、ib_logfile1、ibdata1文件(不要删除业务数据库对应的文件夹),让MariaDB重启时重建这些系统文件。
    3. 修复数据目录权限:执行chown -R mysql:mysql /bitnami/mariadb/data,确保数据目录所有者为mysql用户。
  • 迁移业务数据到全新容器:

    1. 在正常机器上启动一个全新的Bitnami MariaDB 10.6容器,不挂载故障数据卷。
    2. 将备份的故障数据中业务数据库的文件夹(比如finquescrm文件夹)复制到新容器的数据目录下,执行chown -R mysql:mysql修改权限。
    3. 重启新容器,登录数据库执行mysqlcheck -u root -p --all-databases --repair修复可能损坏的表。
  • 排查配置文件问题:检查备份数据中的/bitnami/mariadb/conf/my.cnf是否存在错误配置,比如指定了当前MariaDB版本不支持的参数。可以替换成全新容器的默认配置文件后再尝试启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:50:15