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

Docker Swarm中Percona XtraDB Cluster重启后节点连接超时求助

解决Docker Swarm中Percona XtraDB Cluster重启后无法形成集群的问题

1. 验证ETCD元数据持久化与配置正确性

集成ETCD的核心是让Galera通过ETCD保存集群节点信息,重启后ETCD必须能提供这些数据:

  • 检查ETCD服务是否配置了持久化卷,否则重启后节点元数据丢失,Galera无法发现同伴。添加卷配置:
    services:
      etcd:
        image: quay.io/coreos/etcd:v3.5.5
        volumes:
          - etcd-data:/var/lib/etcd
        # 其他配置...
    volumes:
      etcd-data:
    
  • 确认Percona服务的WSREP_CLUSTER_ADDRESS环境变量正确指向ETCD端点,格式应为:
    WSREP_CLUSTER_ADDRESS=gcomm://?etcd_endpoints=http://etcd:2379&etcd_key=/pxc/cluster
    
    确保ETCD服务名和端口在Swarm网络中可访问。

2. 修复集群引导逻辑

Swarm重启时所有节点可能同时启动,导致无节点主动引导集群:

  • 给ETCD添加健康检查,让Percona节点等待ETCD就绪后再启动:
    etcd:
      healthcheck:
        test: ["CMD", "etcdctl", "endpoint", "health"]
        interval: 5s
        timeout: 3s
        retries: 3
    pxc:
      depends_on:
        etcd:
          condition: service_healthy
    
  • 配置单节点引导机制:避免多个节点同时尝试初始化集群。可以在docker-compose.yml中为其中一个节点设置BOOTSTRAP_XTRADB_CLUSTER=1,其他节点不设置。或者在重启后手动进入一个Percona容器执行:
    mysqld_safe --wsrep-new-cluster
    
    启动后其他节点会自动通过ETCD发现并加入集群。

3. 确保Swarm网络与端口连通性

Overlay网络异常或端口受限会导致Galera节点无法通信:

  • 检查Swarm Overlay网络状态,执行docker network inspect <your-overlay-network>,确认所有Percona节点都已加入网络,IP地址正常。
  • 确保Percona服务开放Galera必需端口:3306(MySQL)、4567/TCP/UDP(集群通信)、4568(IST/SST)、4444(SST备份),配置如下:
    pxc:
      ports:
        - "3306:3306"
        - "4567:4567"
        - "4567:4567/udp"
        - "4568:4568"
        - "4444:4444"
    
  • 禁用容器内防火墙(如iptables),或允许上述端口的入站/出站规则。

4. 持久化Percona节点数据

未持久化的节点数据会导致重启后节点状态丢失,无法加入集群:

  • 为每个Percona节点挂载本地卷或共享存储(如NFS),确保/var/lib/mysql目录数据保留:
    pxc:
      volumes:
        - pxc-data-node1:/var/lib/mysql
      deploy:
        placement:
          constraints:
            - node.hostname == node1
    volumes:
      pxc-data-node1:
    
    用节点约束确保每个实例调度到对应节点,避免数据错乱。

5. 诊断与验证

  • 查看Percona容器日志:docker logs <pxc-container-id>,定位具体错误(如ETCD连接失败、IP冲突等)。
  • 进入容器执行MySQL命令,检查集群状态:
    SHOW STATUS LIKE 'wsrep%';
    
    确认wsrep_cluster_size等于节点数,wsrep_connected和wsrep_ready为ON。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:21:22