
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
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系列 | https://github.com/percona/percona-docker/blob/1a5a6f51cda0ad561e5afcbd9b1ec9e2dd3564d1/percona-server-8.0/Dockerfile-dockerhub |
psmdb-8.0.12, psmdb-8.0 | Percona Server MongoDB 8.0 | https://github.com/percona/percona-docker/blob/725e757d51b83f0a0a9c3b5242f6be02066e0a9b/percona-server-mongodb-8.0/Dockerfile-dockerhub |
psmdb-7.0.24, psmdb-7.0 | Percona Server MongoDB 7.0 | https://github.com/percona/percona-docker/blob/725e757d51b83f0a0a9c3b5242f6be02066e0a9b/percona-server-mongodb-7.0/Dockerfile-dockerhub |
psmdb-6.0.25, psmdb-6.0 | Percona Server MongoDB 6.0 | https://github.com/percona/percona-docker/blob/c37d7c35b5d3ddeacdf8b6c837e7735c14ace89b/percona-server-mongodb-6.0/Dockerfile-dockerhub |
通过以下命令启动一个基础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管理数据库。
进入容器Shell
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
Docker卷(推荐)
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
使用前请确保符合所有包含软件的许可证要求。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。






来自真实用户的反馈,见证轩辕镜像的优质服务