一、概述
openshift容器平台提供MySQL的容器镜像,这个镜像提供基于配置文件的用户名、密码、数据库名称的数据库服务,当前openshift平台支持的mysql版本有:5.5\5.6\5.7。这些镜像有两种类型,一种是基于RHEL 7;一种是基于CentOS 7。
RHEL 7基础镜像下载方式:
$ docker pull registry.access.redhat.com/openshift3/mysql-55-rhel7 $ docker pull registry.access.redhat.com/rhscl/mysql-56-rhel7 $ docker pull registry.access.redhat.com/rhscl/mysql-57-rhel7123
CentOS 7基础镜像下载方式:
$ docker pull openshift/mysql-55-centos7$ docker pull openshift/mysql-56-centos712
二、配置和使用
初始化数据库:
$ oc new-app \ -e MYSQL_USER=<username> \ -e MYSQL_PASSWORD=<password> \ -e MYSQL_DATABASE=<database_name> \ registry.access.redhat.com/openshift3/mysql-55-rhel712345
mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -h $HOSTNAME $MYSQL_DATABASE1
三、环境变量说明
变量 | 说明 |
---|---|
MYSQL_USER | 数据库登录用户名 |
MYSQL_PASSWORD | 数据库登录密码 |
MYSQL_DATABASE | 数据库名称 |
MYSQL_ROOT_PASSWORD | root用户密码;如该不设置,远程登录会被拒绝,本地登录不需要密码 |
MYSQL_SERVICE_HOST | Kubernetes自动创建的服务主机名 |
MYSQL_SERVICE_PORT | Kubernetes自动创建的服务主机端口 |
四、Volume挂载点
/var/lib/mysql/data
上面的路径是mysql数据存储目录,可用于持久化存储设置的路径。
五、mysql 主备方案
openshift 提供经过验证的mysql主备方案,你可以从github获取方案的具体内容,github地址为:
https://github.com/sclorg/mysql-container/tree/master/5.5/examples/replica
下面我们一步一步创建一个主备mysql集群,首先导入openshift官网提供的mysql模板,命令如下:
oc create -f \ https://raw.githubusercontent.com/openshift/mysql/master/5.5/examples/replica/mysql_replica.json12
mysql 主备方案需要两个部署配置文件,一个是master的DC文件,一个是slave的DC文件。
创建mysql主节点的DC文件
要设置mysql服务作为master节点运行,DC配置文件中的容器定义字段command必须设置为: run-mysqld-master。
MySQL主备方案需要指定一个用户用于同步主备数据库之间的数据,下面的环境变量定义就是为了达到此目的:
变量 | 描述 | 定义 |
---|---|---|
MYSQL_MASTER_USER | 用户名 | master |
MYSQL_MASTER_PASSWORD | 密码 | slave |
kind: "DeploymentConfig"apiVersion: "v1"metadata: name: "mysql-master"spec: strategy: type: "Recreate" triggers: - type: "ConfigChange" replicas: 1 selector: name: "mysql-master" template: metadata: labels: name: "mysql-master" spec: volumes: - name: "mysql-master-data" persistentVolumeClaim: claimName: "mysql-master" containers: - name: "server" image: "openshift/mysql-55-centos7" command: - "run-mysqld-master" ports: - containerPort: 3306 protocol: "TCP" env: - name: "MYSQL_MASTER_USER" value: "${MYSQL_MASTER_USER}" - name: "MYSQL_MASTER_PASSWORD" value: "${MYSQL_MASTER_PASSWORD}" - name: "MYSQL_USER" value: "${MYSQL_USER}" - name: "MYSQL_PASSWORD" value: "${MYSQL_PASSWORD}" - name: "MYSQL_DATABASE" value: "${MYSQL_DATABASE}" - name: "MYSQL_ROOT_PASSWORD" value: "${MYSQL_ROOT_PASSWORD}" volumeMounts: - name: "mysql-master-data" mountPath: "/var/lib/mysql/data" resources: {} terminationMessagePath: "/dev/termination-log" imagePullPolicy: "IfNotPresent" securityContext: capabilities: {} privileged: false restartPolicy: "Always" dnsPolicy: "ClusterFirst"
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦