
该Docker镜像包含Percona数据库,同时集成了Galera扩展和XtraBackup工具。当etcd服务可用时,镜像能够通过Galera和XtraBackup SST(State Snapshot Transfer)自动实现集群化部署,适用于构建高可用的Percona数据库集群。
bash$ git clone https://github.com/paulczar/docker-percona_galera.git cd docker-percona_galera
bash$ docker build -t paulczar/percona-galera .
单数据库模式
MySQL root用户可从本地无密码访问。默认通过环境变量配置admin/admin用户/密码对,该用户拥有类似root的权限,建议修改为安全密码。
bash$ docker run -d -e MYSQL_USER=admin -e MYSQL_PASS=your_secure_password paulczar/percona-galera
运行日志示例:
==> $HOST not set. booting mysql without clustering. ==> An empty or uninitialized database is detected in /var/lib/mysql ==> Creating database... ==> Done! ==> starting mysql in order to set up passwords ==> sleeping for 20 seconds, then testing if DB is up ...
Galera集群模式
当etcd可用时,容器会检查是否存在现有集群:若存在则加入集群;若不存在则进行持续5分钟的选举,第一个获取锁的节点成为leader,其他节点等待leader就绪后启动。若leader启动失败,需等待5分钟选举期结束后重新部署所有节点。
Vagrant示例:提供了Vagrantfile用于启动3节点CoreOS集群,自动配置数据库复制。
bash$ vagrant up $ ssh coreos-01 $ watch docker ps
容器启动后状态示例:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 912ad42a4d1a paulczar/percona-galera:latest "/app/bin/boot" About a minute ago Up About a minute 0.0.0.0:3306->3306/tcp, 0.0.0.0:4444->4444/tcp, 0.0.0.0:4567->4567/tcp, 0.0.0.0:4568->4568/tcp database
查看数据库启动日志:
bash$ journalctl -f -u database
进入容器检查集群状态:
bash$ database root@e9682b05cf5e:/# mysql -e "show status like 'wsrep_cluster%'" +--------------------------+--------------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------------+ | wsrep_cluster_conf_id | 3 | | wsrep_cluster_size | 3 | | wsrep_cluster_state_uuid | 1b92a583-40f6-11e4-ad62-46aacd6cd67e | | wsrep_cluster_status | Primary | +--------------------------+--------------------------------------+
集群必要环境变量:
HOST:设置为节点的IP地址,作为集群端点发布ETCD_HOST:当etcd端点与HOST不同时设置GarbD仲裁服务
对于双节点集群,可启动GarbD作为仲裁者:
bash$ eval `cat /etc/environment` $ /usr/bin/docker run --name database-garbd --rm -p 3306:3306 -p 4444:4444 -p 4567:4567 -p 4568:4568 -e PUBLISH=4567 -e HOST=$COREOS_PRIVATE_IPV4 -e CLUSTER=openstack paulczar/percona-galera:latest /app/bin/garbd
负载均衡器
可使用外部负载均衡器,或运行本地haproxy负载均衡器实现节点间连接的轮询分发:
bash$ eval `cat /etc/environment` $ /usr/bin/docker run --name database-loadbalancer --rm -p 3307:3307 -p 8888:8080 -e PUBLISH=3307 -e HOST=$COREOS_PRIVATE_IPV4 paulczar/percona-galera:latest /app/bin/loadbalancer
使用Vagrant开发模式,会安装服务但不运行,启用启动脚本调试模式,通过NFS将本地路径共享至/home/coreos/share,并在本地构建镜像。首次构建耗时较长,后续因缓存机制会加快。
bash$ dev=1 vagrant up $ vagrant ssh core-01
Paul Czarkowski (***)
Copyright 2014 Paul Czarkowski
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
[***]
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务