MYSQL高可用集群搭建--docker
使用docker搭建高可用mysql集群
手动清理 iptables 规则并重置 Docker 网络
# 停止 Docker
systemctl stop docker# 清理 Docker 的 iptables 规则
iptables -t nat -F DOCKER
iptables -t nat -X DOCKER
iptables -t filter -F DOCKER
iptables -t filter -X DOCKER
iptables -t filter -F DOCKER-ISOLATION-STAGE-1
iptables -t filter -X DOCKER-ISOLATION-STAGE-1# 启动 Docker
systemctl 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 pxc
docker images
创建一个单独的网段,给mysql数据库集群使用
docker network create --subnet=172.19.0.0/24 pxc-cluster-net
docker network ls
docker network inspect pxc-cluster-net
删除网段
[root@k8s ~]# docker network rm pxc-cluster-net
创建volume,为了给3个container持久化数据使用
docker volume create pxc-v1
docker volume create pxc-v2
docker volume create pxc-v3
docker 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 pxc
docker 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 pxc
docker 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 stop node1
node1
[root@k8s ~]# docker rm -f node1
node1
[root@k8s ~]# rm -rf /data/app/dockerWork/volumes/pxc-v1/_data/*
创建成功后集群搭建成功
mysql -uroot -pjack666
create database jvue;
在主节点创建数据库,自动同步副节点
查看docker运行日志
journalctl -u docker.service -ftail -f /var/log/messages