> 技术文档 > MYSQL高可用集群搭建--docker

MYSQL高可用集群搭建--docker

使用docker搭建高可用mysql集群
手动清理 iptables 规则并重置 Docker 网络

永久关闭 SELinux:

sudo vi /etc/selinux/configSELINUX=disabled

关闭防火墙

[root@k8s ~]# systemctl stop firewalld [root@k8s ~]# systemctl disable firewalld
# 停止 Dockersystemctl stop docker# 清理 Docker 的 iptables 规则iptables -t nat -F DOCKERiptables -t nat -X DOCKERiptables -t filter -F DOCKERiptables -t filter -X DOCKERiptables -t filter -F DOCKER-ISOLATION-STAGE-1iptables -t filter -X DOCKER-ISOLATION-STAGE-1# 启动 Dockersystemctl start docker

临时关闭 SELinux:

setenforce 0

拉取percona-xtradb-cluster的镜像

docker pull percona/percona-xtradb-cluster:5.7.21

tag一下

docker tag percona/percona-xtradb-cluster:5.7.21 pxcdocker images

创建一个单独的网段,给mysql数据库集群使用

docker network create --subnet=172.19.0.0/24 pxc-cluster-netdocker network lsdocker network inspect pxc-cluster-net

创建volume,为了给3个container持久化数据使用

docker volume create pxc-v1docker volume create pxc-v2docker volume create pxc-v3docker volume ls

创建node1容器

docker run -d --name=node1 -p 3301:3306 -v pxc-v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=jack666 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=jack666 --net=pxc-cluster-net --privileged pxcdocker run -d --name=node2 -p 3302:3306 -v pxc-v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=jack666 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=jack666 --net=pxc-cluster-net -e CLUSTER_JOIN=node1 pxcdocker run -d --name=node3 -p 3303:3306 -v pxc-v3:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=jack666 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=jack666 --net=pxc-cluster-net -e CLUSTER_JOIN=node1 pxc

如果创建容器失败,清空数据卷内容并删除容器

删除网段

[root@k8s ~]# docker network rm pxc-cluster-net
[root@k8s ~]# docker stop node1node1[root@k8s ~]# docker rm -f node1node1[root@k8s ~]# rm -rf /data/app/dockerWork/volumes/pxc-v1/_data/*

创建成功后集群搭建成功

mysql -uroot -pjack666create database jvue;

在主节点创建数据库,自动同步副节点

MYSQL高可用集群搭建--docker

查看docker运行日志

journalctl -u docker.service -ftail -f /var/log/messages