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;
在主节点创建数据库,自动同步副节点
查看docker运行日志
journalctl -u docker.service -ftail -f /var/log/messages