1 第一步 利用docker 拉取pxc镜像, 生成4个mysql节点
1. 安装PXC镜像
docker pull percona/percona-xtradb-cluster
2. 给镜像改名
docker tag percona/percona-xtradb-cluster pxc
3. 创建net1网段:
docker network create --subnet=172.18.0.0/16 net1
4.创建4个数据卷
(pxc无法直接存取宿组机的数据,所以创建4个docker数据卷)
docker volume create v1
docker volume create v2
docker volume create v3
docker volume create v4
docker volume create v5
ps 如果要删除数据卷 命令 docker volume rm v3
5. 查看数据卷位置:
docker inspect v1
6. 创建四节点的PXC集群
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v1:/var/lib/mysql -v backup:/data --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc
7.root账户进入容器
docker exec -it --user root node1 bash
8.修改/etc/my.cnf 退出容器 重启容器
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
exit
docker restart node1
等待2分钟后,再创建第二个节点,等待第一个节点实例化完毕后,才能开启第二个节点实例,不然会瞬间停止
创建其他节点:
创建第2个MySQL节点
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v2:/var/lib/mysql -v backup:/data --privileged --name=node2 --net=net1 --ip 172.18.0.3 pxc
创建第3个MySQL节点
docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v3:/var/lib/mysql --privileged --name=node3 --net=net1 --ip 172.18.0.4 pxc
创建第4个MySQL节点
docker run -d -p 3309:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -v v4:/var/lib/mysql --privileged --name=node4 --net=net1 --ip 172.18.0.5 pxc
7. 利用navcat分别连接四个mysql, 连接成功,测试一下数据同步 没问题的话,mysql 的四个节点搞定了
####宕机处理
rm -rf /var/lib/docker/volumes/v1/_data/grastate.dat
rm -rf /var/lib/docker/volumes/v2/_data/grastate.dat
rm -rf /var/lib/docker/volumes/v3/_data/grastate.dat
rm -rf /var/lib/docker/volumes/v4/_data/grastate.dat
rm -rf /var/lib/docker/volumes/v5/_data/grastate.dat
重新执行集群创建的命令即可,因为数据都在数据卷中,所有放心,集群重新启动都数据仍然都在.
网友评论