阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

用Docker运行Percona Server

145次阅读
没有评论

共计 3513 个字符,预计需要花费 9 分钟才能阅读完成。

Percona 官方提供了一个 Percona Docker 镜像,可以运行 Percona Server MySQL 和 Percona Server for MongoDB。
Docker 官方也提供了 Percona 镜像,具体见:Percona,但是这个镜像不是 Percona 官方提供的。
而在 Percona 官方提供的镜像中,针对每种存储引擎的镜像都有,具体见:
https://hub.docker.com/r/percona/
但是,目前 Percona 官方提供的镜像刚刚开始,还处于实验性阶段。

1、运行 Percona Server/MySQL 镜像

docker run --name container-name -e MYSQL_ROOT_PASSWORD=secret -d percona/percona-server:tag

container-name 是你为容器赋予的名字
secret 是 Percona 服务器 root 账户的密码
tag 是你想指定的 Percona 版本,目前有 4 个选择:latest、5.6、5.6.28、5.6.27。

要从另一个 Docker 容器的应用程序连接到 Percona Server 容器:
(假定 Percona 使用默认的 3306 端口)

docker run --name app-container-name --link container-name -d app-that-uses-mysql

从 MySQL 命令行客户端连接到 Percona Server 容器:
(下面的命令会从另一个 Docker 容器中运行 MySQL 命令行客户端,再连接到 Percona Server 容器)

docker run -it --link container-name --rm percona/percona-server:tag mysql -h container-name -P 3306 -uroot -psecret'

2、运行 Percona Server/MongoDB 镜像

要改变镜像的存储引擎很简单,比如换成 RocksDB 引擎,可以这样:

docker run --name psmdbrocks -d percona/percona-server-mongodb:latest --storageEngine=RocksDB

或者是换成 PerconaFT 存储引擎:

docker run --name psmdbperconaft -d percona/percona-server-mongodb:latest --storageEngine=PerconaFT

3、环境变量

在启动 Percona Server 容器时,可以通过 docker run 命令行传递一些环境变量来调整实例的运行配置。要注意,如果容器已经包含了数据库数据目录的话,那么这些环境变量会不起作用,也即任何预先存在于镜像中的数据库会使得环境变量无效。主要使用的环境变量有下面几个:

1)MYSQL_ROOT_PASSWORD
它表示 Percona 服务器 root 超级用户的密码。

2)MYSQL_RANDOM_ROOT_PASSWORD
如果这个值设置为 yes,表示 Percona 服务器 root 超级用户的密码为随机产生,且密码会输出到容器的控制台,可以使用命令 docker logs container-name 来找到密码。

3)MYSQL_ONETIME_PASSWORD
这是可选的环境变量,如果设置为 yes,表示 Percona 服务器 root 超级用户的密码是一次性的,会过期。当登陆 Percona 后,必须修改密码。这个特性必须在 5.6 及以后版本才支持。

4)MYSQL_DATABASE
这是可选的环境变量,它表示在容器启动时可以创建一个指定名字的数据库。如果后面的 user/password 都设置了,那么这个 user 将拥有对这个指定数据库的超级权限(等同于 GRANT ALL 命令)。
注意:这种方式不应该用于创建 root 账户。

5)MYSQL_ALLOW_EMPTY_PASSWORD
如果这个值设置为 yes,表示 Percona 服务器 root 超级用户的密码可以为空。
不推荐使用。

4、Percona 容器的安全

在很多场景下,使用 MYSQL_ROOT_PASSWORD 环境变量来指定 root 超级用户的密码是不安全的。所以安全的做法应该这样:使用 MYSQL_RANDOM_ROOT_PASSWORD 随机密码环境变量。如果想让实例更加安全,还可以使用 MYSQL_ONETIME_PASSWORD 一次性密码环境变量。

5、数据存储

运行在 Docker 容器的应用程序要存储数据有两种方法:

1)让 Docker 管理数据库数据的存储
通过把数据库文件写入主机系统磁盘(使用内部的卷管理),实现让 Docker 管理数据库数据的存储。这种方法,devicemapper、aufs、overlayfs 等对性能有很大影响。

2)在托管主机创建数据目录(在容器外部)
在托管主机上也即容器外部创建数据目录,且通过挂载使得此目录对容器可见。这种方法使得数据库文件易于被主机系统的工具或应用访问到。这种方法用于必须确保数据目录存在,且访问权限和其它安全机制都要设置正确。通常可以这样:

  • 在主机系统适合的卷上创建数据目录,比如 /local/datadir
  • 启动容器:

.

docker run --name container-name -v /local/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=secret -d percona/percona-server:tag

- v 参数表示从主机系统挂载 /local/datadir 目录到容器内的 /var/lib/mysql 目录,它是 MySQL 写数据文件的位置。

还要注意主机系统的目录是否对容器有写权限,SELinux 要启用这个权限,执行:

chcon -Rt svirt_sandbox_file_t /local/datadir

如果启动 MySQL 容器实例使用已有的数据目录(即数据库已存在),那么在执行 docker run 命令时,MYSQL_ROOT_PASSWORD 变量应该省略。

6、端口转发

Docker 允许在容器内映射端口到主机系统的端口,使用 - p 选项。

docker run --name container-name `-p 6603:3306` -d percona/percona-server
mysql -h docker_host_ip -P 6603

这样就可以使用主机的 6603 端口连接到 MySQL 容器了。

7、传递参数给 MySQL 容器

还可以在 docker run 命令中传递任意参数给 MySQL 容器。

docker run --name my-container-name -d percona/percona-server --option1=value --option2=value

option1 和 option2 在容器启动时之间传递到 Percona 容器。比如想让容器使用 UTF- 8 作为字符集和 collation 的默认设置,可以这样:

docker run --name container-name -d  percona/percona-server --character-set-server=utf8 --collation-server=utf8_general_ci

8、使用自定义的 MySQL 配置文件

MySQL 容器的启动配置文件是 /var/lib/mysql/my.cnf,如果想自定义这个配置文件,可以修改它。

如何在 CentOS 7 上安装 Percona Server  http://www.linuxidc.com/Linux/2015-06/119144.htm

Percona Server 使用了一些 google-mysql-tools, Proven Scaling, Open Query 对 MySQL 进行改造。

CentOS 中编译安装 Percona Server 5.5.42 出现问题解决一例  http://www.linuxidc.com/Linux/2015-03/114279.htm

Percona Server 5.6 跟 5.5 的差异统计  http://www.linuxidc.com/Linux/2015-05/116975.htm

CentOS 中编译安装 Percona Server 5.5.42 出现问题解决一例  http://www.linuxidc.com/Linux/2015-03/114279.htm

Percona Server 的详细介绍 :请点这里
Percona Server 的下载地址 :请点这里

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-10/136424.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计3513字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中