启动两个docker ,服务为mysql主从模式;

首先需要构建两个docker,使用mysql5.7的镜像作为基础镜像

1. mysql-master  Dockerfile

FROM mysql:latest

RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/shanghai" >> /etc/timezone

COPY mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf

COPY entrypoint.sh /

COPY init-master.sh /docker-entrypoint-initdb.d/

在当前目录下执行如下命令:

docker built -t mysql-master:v1.0 .

其他文件请参照文章末尾的GitHub链接地址

2. mysql-slave Dockerfile

FROM mysql:latest

RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/shanghai" >> /etc/timezone

COPY mysqld.cnf /etc/mysql/mysql.conf.d/

COPY entrypoint.sh /

COPY slave-init.sh /docker-entrypoint-initdb.d/

在当前目录下执行如下命令:

docker built -t mysql-slave:v1.0 .

其他文件请参照文章末尾的GitHub链接地址

3. 执行k8s 的yaml文件 master, 文件名:mysql-master.yaml

确保本地有 /data/mysql_data目录

apiVersion: v1

kind: Pod

metadata:

name: master-tdbwv

labels:

name: master-tdbwv

spec:

volumes:

- name: data

hostPath:

path: /data/mysql_data

containers:

- name: master-tdbwv

image: mysql-master:v1.0

env:

- name: MYSQL_ROOT_PASSWORD

value: uggTKd3xsIMM

- name: MYSQL_REPLICATION_USER

value: repl

- name: MYSQL_REPLICATION_PASSWORD

value: RQfUjBff

ports:

- containerPort: 3306

name: master-tdbwv

volumeMounts:

- name: data

mountPath: /var/lib/mysql

resources:

limits:

cpu: 2

memory: 200Mi

nodeName: localhost

---

apiVersion: v1

kind: Service

metadata:

name: master-tdbwv

labels:

name: master-tdbwv

spec:

type: NodePort

ports:

- port: 3306

nodePort:

selector:

name: master-tdbwv

4. 执行k8s 的yaml文件 slave, 文件名:mysql-slave.yaml

确保本地有 /data/mysql_slave_data目录

apiVersion: v1

kind: Pod

metadata:

name: slave-ncrxq

labels:

name: slave-ncrxq

spec:

volumes:

- name: data

hostPath:

path: /data/mysql_slave_data

containers:

- name: slave-ncrxq

image: mysql-slave:v1.0

env:

- name: MYSQL_ROOT_PASSWORD

value: uggTKd3xsIMM

- name: MYSQL_REPLICATION_USER

value: repl

- name: MYSQL_REPLICATION_PASSWORD

value: RQfUjBff

- name: MYSQL_MASTER_SERVICE_HOST

value: 127.0.0.1

ports:

- containerPort: 3306

name: slave-ncrxq

volumeMounts:

- name: data

mountPath: /var/lib/mysql

resources:

limits:

cpu: 2

memory: 200Mi

nodeName: localhost

---

apiVersion: v1

kind: Service

metadata:

name: slave-ncrxq

labels:

name: slave-ncrxq

spec:

type: NodePort

ports:

- port: 3306

nodePort:

selector:

name: slave-ncrxq

基本用法就是这样,具体文件请参照GitHub

https://github.com/haozhixin/docker-mysql

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐