docker中搭建mysql高可用集群-percona-xtradb-cluster
*percona-xtradb-cluster是一款很棒的mysql高可用集群解决方案。
- 特点是每个节点都能进行读写且都保存全量的数据。也就是说在任何一个节点进行写入操作,都会同步给其它所有节点写入到自己的磁盘。
- Mysql pxc中任何一台机器挂了,集群照常运转,因为节点间并不共享磁盘。
3.推荐percona-xtradb-cluster 3个节点
首先你要先有一个docker(自行安装)
开始操作:
- 拉取perconea-xtradb-cluster镜像,我拉取的是稳定版本(版本自行定夺),记得用docker镜像加速器,要不然拉取镜像慢的怀疑人生。
[root@docker ~]# docker pull percona/percona-xtradb-cluster:5.7.31
- 查看拉取的镜像
[root@docker ~]# docker images
利于后面操作把image名称改的简单点
[root@docker ~]# docker tag 3a0dc027d8ac pxc:5.7.31
- 创建数据卷进行数据持久化
[root@docker ~]# docker volume create v1
- 创建网络给mysql用,集群要单独在一个网段内
[root@docker ~]# docker network create --subnet=172.18.0.0/24 mypxc
接下来基于pxc这个镜像来启动容器
[root@docker ~]# docker run -d --name node1 -p 3301:3306 -v v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123.com -e CLUSTER_NAME=PC -e XTRABACKUP_PASSWORD=123.com --privileged --net=mypxc --ip 172.18.0.2 pxc:5.7.31
#MYSQL_ROOT_PASSWORD:给数据库设置密码默认root用户
#CLUSTER_NAME:给集群起个名字
#XTRABACKUP_PASSWORD:集群的密码
#privileged --net:指定网络
查看下创建的容器
[root@docker ~]# docker ps
可以看到容器正在运行,接下来创建剩下的2个容器。
- 创建剩下的2个节点时要加入集群中。
[root@docker ~]# docker run -d --name node2 -p 3302:3306 -v v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123.com -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123.com -e CLUSTER_JOIN=node1 --privileged --net=mypxc --ip 172.18.0.3 pxc:5.7.31
[root@docker ~]# docker run -d --name node3 -p 3303:3306 -v
v3:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123.com -e CLUSTER_NAME=PXC
-e XTRABACKUP_PASSWORD=123.com -e CLUSTER_JOIN=node1 --privileged --net=mypxc --ip 172.18.0.4 pxc:5.7.31
#CLUSTER_JOIN:这个参数就是加入到node1这个集群中,记得要节点名称和映射端口
7.进行测试,我直接用链接工具进行测试
可以看到3个节点都能连接上
在node1新建库
可以看到node1上有了这个库
node2、node3刷新一下
可以看到数据同步,关于测试我就不做过多演示了,大家如果没有连接工具,可以进入到node1、2、3容器里,登录到mysql数据库里进行操作,验证。