
revolyram/mariadb-galeracolinmollenhour/mariadb-galera-swarm是一个基于MariaDB 10.5版本的Docker镜像,专为Docker Swarm容器编排环境设计。该镜像集成Galera Cluster同步多主复制技术,支持在Docker Swarm集群中快速部署高可用、数据实时同步的MariaDB数据库集群,适用于需要高可靠性和数据一致性的生产环境。
bashdocker run -d \ --name mariadb-galera \ -e MYSQL_ROOT_PASSWORD=your_root_password \ -e GALERA_CLUSTER_ADDRESS=gcomm:// \ -p 3306:3306 \ colinmollenhour/mariadb-galera-swarm:latest
bashdocker network create --driver overlay galera_network
yamlversion: '3.8' services: galera: image: colinmollenhour/mariadb-galera-swarm:latest deploy: replicas: 3 placement: constraints: [node.role == worker] environment: - MYSQL_ROOT_PASSWORD=your_secure_password - GALERA_CLUSTER_ADDRESS=gcomm://tasks.galera - NODE_NAME={{.Service.Name}}-{{.Task.Slot}} - MYSQL_DATABASE=app_db - MYSQL_USER=app_user - MYSQL_PASSWORD=app_password volumes: - galera_data:/var/lib/mysql networks: - galera_network ports: - "3306:3306" networks: galera_network: external: true volumes: galera_data:
bashdocker stack deploy -c docker-compose.yml galera-cluster
| 环境变量 | 描述 | 示例 | 必要性 |
|---|---|---|---|
| MYSQL_ROOT_PASSWORD | root用户密码 | secure_password123 | 必需 |
| GALERA_CLUSTER_ADDRESS | Galera集群地址,Swarm环境下使用gcomm://tasks.<service_name> | gcomm://tasks.galera | 必需 |
| NODE_NAME | 节点名称,建议使用Swarm任务变量 | {{.Service.Name}}-{{.Task.Slot}} | 推荐 |
| MYSQL_DATABASE | 初始化时创建的数据库 | app_db | 可选 |
| MYSQL_USER | 初始化时创建的数据库用户 | app_user | 可选 |
| MYSQL_PASSWORD | 数据库用户密码 | user_password | 可选 |
| GALERA_SST_METHOD | SST(状态快照传输)方法 | rsync或xtrabackup | 可选,默认rsync |
| GALERA_WSREP_PROVIDER_OPTIONS | Galera提供器选项 | gcache.size=1G | 可选 |
查看集群状态:
bashdocker exec -it <container_id> mysql -uroot -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
添加新节点:直接调整Swarm服务副本数,新节点会自动加入集群
bashdocker service scale galera-cluster_galera=4
数据备份:
bashdocker exec -it <container_id> mysqldump -uroot -p --all-databases > backup.sql

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务