添加WSREP配置后容器化MariaDB Galera Cluster节点启动失败排查
MariaDB Galera集群容器启动失败排查方案
核心故障原因
日志明确显示failed to reach primary view: 110 (Connection timed out),本质问题是所有节点都在尝试加入一个未初始化的集群。Galera集群要求必须有一个节点以bootstrap模式启动,负责创建初始集群,其他节点才能正常加入;当前所有节点都在等待连接已存在的集群,最终因超时退出。
修复步骤
1. 初始化第一个节点(bootstrap模式)
选择其中一个节点(比如IP为172.20.0.3的node1),通过以下两种方式之一启动集群:
- 配置文件临时修改:将该节点的
wsrep_cluster_address临时改为:
wsrep_cluster_address="gcomm://"
启动节点后,待集群初始化完成,再将配置改回gcomm://172.20.0.3,172.20.0.4,172.20.0.5,后续重启无需再修改。
- 启动命令覆盖:启动容器时添加命令行参数,强制以bootstrap模式启动:
docker run [你的容器原有启动参数] --wsrep-new-cluster
2. 按顺序启动其他节点
等待第一个bootstrap节点完全启动(查看日志确认出现WSREP: view(view_id(PRIM,...)的信息,说明集群已形成主视图),再依次启动另外两个节点,它们会自动加入已创建的集群。
额外检查项
- 端口连通性验证:虽然节点间ping通,但需确认Galera所需端口(4567、4568、4444)在容器内部可正常通信,可在容器内执行
telnet 172.20.0.4 4567测试。 - 挂载目录权限:确保主机挂载的
/var/lib/mysql目录权限正确,容器内mysql用户对该目录有读写权限,避免集群状态文件无法创建。 - 镜像兼容性:日志提示
This image is deprecated,建议后续更换官方mariadb镜像,避免旧镜像的潜在兼容性问题。
内容的提问来源于stack exchange,提问作者olufemi
相关产品推荐
相关产品推荐

