3.2.6. 使用 MySQL Replication
作为示例提供了为数据库镜像启用集群的配置,它们不适用于生产环境。
红帽提供了一个 MySQL master-slave 复制(集群)概念验证 模板; 您可以 从 GitHub 获取示例模板。
将示例模板上传到当前项目的模板库中:
oc create -f \ https://raw.githubusercontent.com/sclorg/mysql-container/master/examples/replica/mysql_replica.json
$ oc create -f \
https://raw.githubusercontent.com/sclorg/mysql-container/master/examples/replica/mysql_replica.json
以下小节详细介绍了示例模板中定义的对象,并描述了它们如何一起启动实施 master-slave 复制的 MySQL 服务器集群。这是推荐的 MySQL 复制策略。
3.2.6.1. 为 MySQL Master 创建部署配置 复制链接链接已复制到粘贴板!
要设置 MySQL 复制,在定义 复制控制器 的示例模板中定义一个部署配置。对于 MySQL master-slave 复制,需要两个部署配置。一个部署配置定义 MySQL master 服务器,再定义 MySQL 的从 服务器。
要让 MySQL 服务器充当 master,必须将部署配置中容器定义中的 command
字段设置为 run-mysqld-master。这个脚本作为 MySQL 镜像的替代入口点,并将 MySQL 服务器配置为复制时作为主服务器运行。
MySQL 复制需要一个特殊的用户来转发主服务器和辅服务器之间的数据。模板中为此定义了以下环境变量:
变量名称 | 描述 | 默认 |
---|---|---|
| 复制用户的用户名 | master |
| 复制用户的密码 | generated |
例 3.1. 示例模板中的 MySQL 主部署配置对象定义
由于我们声明在这个部署配置中有一个持久性卷来为 MySQL master 服务器保留所有数据,所以必须请集群管理员创建一个可以声明存储的持久性卷。
创建部署配置以及启动 MySQL master 服务器的 pod 后,它会创建 MYSQL_DATABASE
定义的数据库,并将服务器配置为将这个数据库复制到辅服务器。
这个示例只定义 MySQL 主服务器的一个副本。这会导致 OpenShift Container Platform 只启动一个服务器实例。不支持多个实例(multi-master),因此您无法扩展此复制控制器。
要复制由 MySQL master 创建的数据库,模板中定义了一个部署配置。这个部署配置会创建一个复制控制器,它会使用将 command
字段设置为 run-mysqld-slave 来启动 MySQL 镜像。这个替代的入口点跳过数据库初始化并将 MySQL 服务器配置为连接到 mysql-master 服务,在示例模板中也定义了这个服务。
例 3.2. 示例模板中的 MySQL 辅助部署配置对象定义
这个示例部署配置启动复制控制器,并将初始副本数设置为 1。您可以双向扩展此复制控制器,受帐户的资源容量的限制。