percona/percona-server!logo
Percona Server是MySQL的增强型替代品,可提升查询速度和一致性,帮助在高性能硬件上整合服务器,延迟或避免分片。本镜像由Percona团队官方创建和维护,已启用基于Percona分形树的存储引擎TokuDB。
镜像会在新版本发布时更新。
通过以下命令启动Percona Server容器:
bashdocker run --name container-name -e MYSQL_ROOT_PASSWORD=secret -d percona/percona-server:tag
参数说明:
container-name:容器名称secret:root用户密码tag:指定版本标签(如8.0),完整标签列表见官方标签页本镜像暴露标准MySQL端口(3306),可通过容器链接使其他容器访问:
bashdocker run --name app-container-name --link container-name -d app-that-uses-mysql
启动另一个容器并运行mysql客户端连接数据库:
bashdocker run -it --link container-name --rm percona/percona-server:tag mysql -h container-name -P 3306 -uroot -psecret
启动容器时,可通过环境变量调整配置(仅首次初始化数据库时生效,已有数据目录时变量不生效)。必须指定以下变量之一:MYSQL_ROOT_PASSWORD、MYSQL_ALLOW_EMPTY_PASSWORD、MYSQL_RANDOM_ROOT_PASSWORD。
MYSQL_ROOT_PASSWORD设置root超级用户密码。注意:命令行设置密码不安全。
MYSQL_ROOT_PASSWORD_FILE从文件读取root密码,可用于挂载文件或Docker Secrets(Swarm模式)。
MYSQL_RANDOM_ROOT_PASSWORD设为yes时生成随机root密码,通过docker logs container-name查看。
MYSQL_ONETIME_PASSWORD设为yes时root密码过期,需首次登录后修改(仅5.6及以上版本支持)。
MYSQL_DATABASE可选,指定启动时创建的数据库名称。若同时提供MYSQL_USER和MYSQL_PASSWORD,该用户将获得此数据库的全部权限。
MYSQL_USER、MYSQL_PASSWORD可选,创建新用户并设置密码,该用户将获得MYSQL_DATABASE指定数据库的全部权限。两者需同时提供。
MYSQL_ALLOW_EMPTY_PASSWORD设为yes允许root空密码。不推荐,会导致实例完全不受保护。
INIT_TOKUDB设为1启用TokuDB引擎。
INIT_ROCKSDB设为1启用RocksDB引擎。
MYSQL_INIT_ONLY设为1仅执行初始化,不启动mysqld进程。
不建议使用MYSQL_ROOT_PASSWORD在命令行设置密码,推荐使用MYSQL_RANDOM_ROOT_PASSWORD生成随机密码,5.6及以上版本可配合MYSQL_ONETIME_PASSWORD增强安全性。
推荐将数据存储在主机目录并挂载到容器,避免Docker内置存储性能问题:
/local/datadir)bashdocker run --name container-name -v /local/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=secret -d percona/percona-server:tag
SELinux系统需设置目录权限:
bashchcon -Rt svirt_sandbox_file_t /local/datadir
若数据目录已包含数据库(存在mysql子目录),启动时不应指定MYSQL_ROOT_PASSWORD。
通过-p映射容器端口到主机,便于外部访问:
bashdocker run --name container-name -p 6603:3306 -d percona/percona-server mysql -h docker_host_ip -P 6603
可在启动命令后追加服务器参数:
bashdocker run --name my-container-name -d percona/percona-server --character-set-server=utf8 --collation-server=utf8_general_ci
默认配置文件为/etc/my.cnf,可挂载自定义文件替换:
bashdocker exec -it my-container-name cat /etc/my.cnf > /my/custom/config-file
bashdocker run --name my-new-container-name -v /my/custom/config-file:/etc/my.cnf -e MYSQL_ROOT_PASSWORD=my-secret-pw -d percona/percona-server:tag
官方支持Docker 1.9版本,旧版本(低至1.0)尽力支持,建议使用最新版。
欢迎反馈!
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务