一、概述
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= \ -e MYSQL_PASSWORD= \ -e MYSQL_DATABASE= \ registry.access.redhat.com/openshift3/mysql-55-rhel712345mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -h $HOSTNAME $MYSQL_DATABASE1
三、环境变量说明变量说明MYSQL_USER数据库登录用户名
MYSQL_PASSWORD数据库登录密码
MYSQL_DATABASE数据库名称
MYSQL_ROOT_PASSWORDroot用户密码;如该不设置,远程登录会被拒绝,本地登录不需要密码
MYSQL_SERVICE_HOSTKubernetes自动创建的服务主机名
MYSQL_SERVICE_PORTKubernetes自动创建的服务主机端口
四、Volume挂载点/var/lib/mysql/data
上面的路径是mysql数据存储目录,可用于持久化存储设置的路径。
五、mysql 主备方案
下面我们一步一步创建一个主备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密码slavekind: "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"