docker搭建mysql高可用集群

docker中搭建mysql高可用集群-percona-xtradb-cluster

*percona-xtradb-cluster是一款很棒的mysql高可用集群解决方案。

  1. 特点是每个节点都能进行读写且都保存全量的数据。也就是说在任何一个节点进行写入操作,都会同步给其它所有节点写入到自己的磁盘。
  2. Mysql pxc中任何一台机器挂了,集群照常运转,因为节点间并不共享磁盘。
    3.推荐percona-xtradb-cluster 3个节点

首先你要先有一个docker(自行安装)

docker搭建mysql高可用集群_第1张图片

开始操作:

  1. 拉取perconea-xtradb-cluster镜像,我拉取的是稳定版本(版本自行定夺),记得用docker镜像加速器,要不然拉取镜像慢的怀疑人生。
    [root@docker ~]# docker pull percona/percona-xtradb-cluster:5.7.31

docker搭建mysql高可用集群_第2张图片

  1. 查看拉取的镜像
    [root@docker ~]# docker images

在这里插入图片描述

利于后面操作把image名称改的简单点
[root@docker ~]# docker tag 3a0dc027d8ac pxc:5.7.31

在这里插入图片描述

  1. 创建数据卷进行数据持久化
    [root@docker ~]# docker volume create v1

docker搭建mysql高可用集群_第3张图片

  1. 创建网络给mysql用,集群要单独在一个网段内
    [root@docker ~]# docker network create --subnet=172.18.0.0/24 mypxc

docker搭建mysql高可用集群_第4张图片

  1. 接下来基于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个容器。

  1. 创建剩下的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个节点都能连接上
docker搭建mysql高可用集群_第5张图片
在node1新建库
docker搭建mysql高可用集群_第6张图片
可以看到node1上有了这个库
docker搭建mysql高可用集群_第7张图片
node2、node3刷新一下
docker搭建mysql高可用集群_第8张图片

可以看到数据同步,关于测试我就不做过多演示了,大家如果没有连接工具,可以进入到node1、2、3容器里,登录到mysql数据库里进行操作,验证。

你可能感兴趣的:(数据库,mysql,docker,centos)