
Percona Server for MySQL是由Percona创建的MySQL关系型数据库管理系统的分支。该镜像旨在保持与***MySQL版本的高度兼容性,同时专注于性能优化和增强服务器操作的可见性。其核心包含Percona的XtraDB存储引擎(InnoDB的增强版),适用于需要高性能、高可靠性MySQL兼容数据库的Docker化部署场景。
/docker-entrypoint-initdb.d目录下的.sh、.sql、.sql.gz文件。| 标签 | 说明 | Dockerfile链接 |
|---|---|---|
8.0.43-34-centos, 8.0-centos, 8-centos, 8.0.43-34, 8.0, 8, ps-8.0.43-34, ps-8.0, ps-8 | Percona Server 8.0系列 | 链接 |
psmdb-8.0.12, psmdb-8.0 | Percona Server MongoDB 8.0 | 链接 |
psmdb-7.0.24, psmdb-7.0 | Percona Server MongoDB 7.0 | 链接 |
psmdb-6.0.25, psmdb-6.0 | Percona Server MongoDB 6.0 | 链接 |
通过以下命令启动一个基础Percona Server容器:
bashdocker run --name some-percona -e MYSQL_ROOT_PASSWORD=my-secret-pw -d percona:tag
some-percona:容器名称(自定义)。my-secret-pw:root用户密码(必选)。tag:指定镜像标签(如8.0,见“支持的标签”列表)。在同一Docker网络中启动客户端容器,连接到目标数据库:
bashdocker run -it --network some-network --rm percona mysql -hsome-percona -uexample-user -p
some-network:目标数据库容器所在的Docker网络。some-percona:目标数据库容器名称。example-user:数据库用户名(需提前创建)。作为客户端连接非Docker或远程数据库:
bashdocker run -it --rm percona mysql -hsome.mysql.host -usome-mysql-user -p
创建compose.yaml文件,定义数据库和管理工具(如Adminer):
yaml# 使用 root/example 作为用户名/密码凭据 services: db: image: percona:8.0 # 指定标签 restart: always environment: MYSQL_ROOT_PASSWORD: example # root密码 volumes: - percona-data:/var/lib/mysql # 数据持久化卷 adminer: image: adminer restart: always ports: - 8080:8080 # 暴露Adminer端口 volumes: percona-data: # 声明命名卷
启动服务:
bashdocker compose up -d
访问http://localhost:8080通过Adminer管理数据库。
bashdocker exec -it some-percona bash
bashdocker logs some-percona
Percona默认加载/etc/my.cnf及/etc/my.cnf.d/*.cnf配置。通过挂载主机目录覆盖配置:
bashdocker run --name some-percona \ -v /my/custom:/etc/my.cnf.d \ # 主机配置目录挂载到容器 -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -d percona:tag
/my/custom下的.cnf文件会覆盖默认配置。通过命令行参数直接传递mysqld选项,无需配置文件:
bashdocker run --name some-percona \ -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -d percona:tag \ --character-set-server=utf8mb4 \ # 设置默认字符集 --collation-server=utf8mb4_unicode_ci # 设置默认排序规则
查看所有可用参数:
bashdocker run -it --rm percona:tag --verbose --help
| 变量名 | 说明 | 必选/可选 | 默认值 |
|---|---|---|---|
MYSQL_ROOT_PASSWORD | root用户密码 | 必选 | - |
MYSQL_ROOT_HOST | 限制root用户连接来源主机(如localhost) | 可选 | 允许所有主机 |
MYSQL_DATABASE | 初始化时创建的数据库名称 | 可选 | - |
MYSQL_USER | 初始化时创建的普通用户名(需与MYSQL_PASSWORD同时设置) | 可选 | - |
MYSQL_PASSWORD | MYSQL_USER对应的密码 | 可选 | - |
MYSQL_ALLOW_EMPTY_PASSWORD | 允许root密码为空(不推荐生产环境) | 可选 | no |
MYSQL_RANDOM_ROOT_PASSWORD | 生成随机root密码(日志中输出) | 可选 | no |
MYSQL_ONETIME_PASSWORD | 强制root用户首次登录修改密码(仅MySQL 5.6+支持) | 可选 | no |
MYSQL_INITDB_SKIP_TZINFO | 禁用初始化时加载系统时区信息(影响CONVERT_TZ()函数) | 可选 | no |
INIT_TOKUDB | 启用TokuDB引擎(需禁用透明大页THP) | 可选 | no |
INIT_ROCKSDB | 启用RocksDB引擎 | 可选 | no |
通过_FILE后缀从文件加载敏感变量(如密码),避免明文暴露。例如:
bashdocker run --name some-percona \ -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root \ # 从文件加载root密码 -d percona:tag
支持的变量:MYSQL_ROOT_PASSWORD_FILE、MYSQL_ROOT_HOST_FILE、MYSQL_DATABASE_FILE、MYSQL_USER_FILE、MYSQL_PASSWORD_FILE。
8.0.35-27及以上版本默认启用遥测(发送使用数据到Percona),可通过以下环境变量禁用:
bashdocker run --name some-percona \ -e PERCONA_TELEMETRY_DISABLE=1 \ # 禁用遥测 -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -d percona:tag
首次启动容器时,若数据目录为空,将自动执行以下操作:
MYSQL_DATABASE指定的数据库(若设置)。MYSQL_USER指定的用户,并授予其MYSQL_DATABASE的所有权限(若设置)。/docker-entrypoint-initdb.d目录下的初始化文件,按字母顺序执行:
.sh:Bash脚本(需可执行权限)。.sql:SQL脚本。.sql.gz:压缩SQL脚本(自动解压执行)。示例:挂载本地SQL文件到初始化目录:
bashdocker run --name some-percona \ -v /local/init-scripts:/docker-entrypoint-initdb.d \ # 挂载初始化脚本目录 -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -d percona:tag
推荐使用Docker卷或绑定挂载持久化数据,避免容器删除导致数据丢失:
bashdocker run --name some-percona \ -v /my/own/datadir:/var/lib/mysql \ # 主机目录挂载到数据目录 -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -d percona:tag
bashdocker volume create percona-data # 创建命名卷 docker run --name some-percona \ -v percona-data:/var/lib/mysql \ # 使用命名卷 -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -d percona:tag
首次启动时,数据库初始化期间无法接受连接。自动化部署(如docker compose)需注意:
depends_on仅保证启动顺序,不保证初始化完成,需额外处理。若数据目录已存在数据库(如/var/lib/mysql/mysql子目录),启动时必须省略MYSQL_ROOT_PASSWORD,否则会被忽略,且数据库不会被修改。
bashdocker exec some-percona sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /host/backup/all-databases.sql
bashdocker exec -i some-percona sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /host/backup/all-databases.sql
使用前请确保符合所有包含软件的许可证要求。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429