环境:centos8.4 ,pxc5.7.21
1,下载pxc
docker pull percona/percona-xtradb-cluster:5.7.21
docker tag percona/percona-xtradb-cluster:5.7.21 pxc5721
docker rmi percona/percona-xtradb-cluster:5.7.21
2,创建虚拟网
docker network create --subnet=172.18.0.0/24 net1
3,创建docker卷
docker volume create v1
docker volume create v2
docker volume create v3
4,启动主节点
docker run -di -p 3306:3306 \
-v v1:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-e CLUSTER_NAME=cluster1 \
-e XTRABACKUP_PASSWORD=123456 \
--privileged=true --name=node1 --net=net1 --ip 172.18.0.2 \
pxc5721
5,配置主节点远程访问,和配置同步账户
docker exec -it node1 bash
mysql -uroot -p #回车之后输入密码123456,node1节点启动时设置的密码
#再mysql节点下输入
use mysql;
select user,host from user;
#没有root和%的列需要执行以下sql,可以根据情况设置其他账号远程访问
update user set host = '%' where user = 'root';
GRANT ALL ON *.* TO root@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'xtrabackup'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
6,配置防火墙
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=3307/tcp --permanent
firewall-cmd --zone=public --add-port=3308/tcp --permanent
firewall-cmd --reload
setenforce 0
vi /etc/sysconfig/selinux
#修改为如下,保存关闭
SELINUX=disabled
7,远程可以访问node1之后,开启node2,node3,。。。。
docker run -di -p 3307:3306 \
-v v2:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-e CLUSTER_NAME=cluster1 \
-e XTRABACKUP_PASSWORD=123456 \
-e CLUSTER_JOIN=node1 \
--privileged=true --name=node2 --net=net1 --ip 172.18.0.3 \
pxc5721
docker run -di -p 3308:3306 \
-v v3:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-e CLUSTER_NAME=cluster1 \
-e XTRABACKUP_PASSWORD=123456 \
-e CLUSTER_JOIN=node1 \
--privileged=true --name=node3 --net=net1 --ip 172.18.0.4 \
pxc5721
之后即可验证连接和同步,完成后还需要设置负载,不然群集没有意义