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

CentOS AlmaLinux 8下Docker Compose部署Galera Cluster启动失败求助

在CentOS AlmaLinux 8上用Docker Compose部署Galera Cluster启动失败的解决方案

问题概述

在CentOS AlmaLinux 8系统上使用Docker Compose部署Galera Cluster时,镜像构建成功,但执行docker compose up -d后容器启动立即退出(状态为Exited (1)),日志仅显示入口脚本执行信息,无明确错误详情。注释配置文件中的wsrep_provider=/usr/lib/libgalera_smm.so后,容器可正常运行但无法实现集群同步。已尝试修改文件权限、更换MariaDB镜像版本、安装galera-4包,均未解决问题。

相关配置文件

节点1的docker-compose.yml配置

services:
  sv-isoluce-galeradb-1:
    build:
      context: ./buildimg/galeradb
      dockerfile: Dockerfile
    image: img-isoluce-galeradb
    container_name: ct-isoluce-galeradb-1
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      CLUSTER_NAME: ${CLUSTER_NAME}
      NODE_NAME: "isoluce-galera-node1"
      CLUSTER_JOIN: "isoluce-galera-node2,isoluce-galera-node3"
      WSREP_ON: "ON"
      WSREP_SST_METHOD: "mariabackup"
      WSREP_CLUSTER_ADDRESS: "gcomm://isoluce-galera-node2,isoluce-galera-node3"
    volumes:
      - vl-isoluce-ct-galeradb-1:/var/lib/mysql
      - ./ctconfig/galeradb-1.cnf:/etc/mysql/my.cnf
    ports:
      - "3301:3306"
    networks:
      nw_isoluce_galeradb_cluster_network:
        ipv4_address: 192.168.16.11
volumes:
  vl-isoluce-ct-galeradb-1:
    name: vl-isoluce-ct-galeradb-1
  vl-isoluce-ct-galeradb-2:
    name: vl-isoluce-ct-galeradb-2
  vl-isoluce-ct-galeradb-3:
    name: vl-isoluce-ct-galeradb-3

networks:
  nw_isoluce_galeradb_cluster_network:
    name: nw_isoluce_galeradb_cluster_network
    driver: bridge
    ipam:
      config:
        - subnet: 192.168.16.0/24

自定义镜像Dockerfile

FROM mariadb:10.5

RUN apt-get update && apt-get install -y \
    iputils-ping \
    vim \
    nano \
    net-tools \
    htop \
    wget \
    curl \
    atop \
    netcat-openbsd \
    systemd \
    procps \
    locate \
    telnet \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

EXPOSE 3306

Galera节点配置文件(节点IP和名称不同)

[mysqld]
log_error = /var/log/mysql/error.log
general_log = on
general_log_file = /var/log/mysql/mysql.log

performance_schema=ON
performance_schema_instrument = '%=ON'
performance_schema_consumer_events_statements_current=ON
performance_schema_consumer_events_statements_history=ON

wsrep_on=ON
wsrep_provider=/usr/lib/libgalera_smm.so
wsrep_cluster_address=gcomm://isoluce-galera-node1,isoluce-galera-node2,isoluce-galera-node3
wsrep_cluster_name=isoluce-galera-cluster
wsrep_node_address=192.168.16.11
wsrep_node_name=isoluce-galera-node1
wsrep_sst_method=mariabackup
binlog_format=ROW

解决方案

1. 修正镜像构建逻辑,确保Galera组件正确安装

官方MariaDB镜像默认未包含Galera集群组件,需在Dockerfile中明确安装mariadb-galera-server和galera包,并确认库文件路径:

FROM mariadb:10.5

RUN apt-get update && apt-get install -y \
    iputils-ping \
    vim \
    nano \
    net-tools \
    htop \
    wget \
    curl \
    atop \
    netcat-openbsd \
    procps \
    locate \
    telnet \
    mariadb-galera-server galera \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# 确认Galera库实际路径并创建软链接(适配配置文件路径)
RUN ln -s /usr/lib/galera/libgalera_smm.so /usr/lib/libgalera_smm.so || true

EXPOSE 3306

2. 调整集群初始化逻辑,避免启动时的网络依赖

第一个节点启动时需初始化空集群,不能直接指向未启动的其他节点,修改节点1的docker-compose环境变量:

environment:
  MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
  CLUSTER_NAME: ${CLUSTER_NAME}
  NODE_NAME: "isoluce-galera-node1"
  CLUSTER_JOIN: ""  # 初始化节点无需加入其他节点
  WSREP_ON: "ON"
  WSREP_SST_METHOD: "mariabackup"
  WSREP_CLUSTER_ADDRESS: "gcomm://"  # 启动空集群

节点2、3的WSREP_CLUSTER_ADDRESS需设为gcomm://isoluce-galera-node1,待节点1完全启动后再启动这两个节点。

3. 强制输出详细错误日志

在docker-compose的service中添加启动命令,让MySQL输出更详细的错误信息:

services:
  sv-isoluce-galeradb-1:
    # 其他配置不变
    command: ["mysqld", "--verbose", "--log-error-verbosity=3"]

4. 确保数据卷权限正确

在Dockerfile中添加权限设置,保证mysql用户能读写数据卷:

RUN chown -R mysql:mysql /var/lib/mysql

启动步骤

  1. 重新构建镜像:docker compose build
  2. 启动节点1:docker compose up -d sv-isoluce-galeradb-1,等待节点完全启动(可通过docker logs ct-isoluce-galeradb-1查看集群初始化完成)
  3. 启动节点2和3:docker compose up -d sv-isoluce-galeradb-2 sv-isoluce-galeradb-3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:43:18