Centos通过Docker搭建MySQL的PXC集群

PXC集群的简介

Percona XtraDB Cluster(下文简称PXC集群)提供了MySQL高可用的一种实现方法。PXC集群以节点组成(推荐至少3节点,便于故障恢复,后面会讨论两节点的情况),每个节点都是基于常规的 MySQL/Percona Server,意味着你可以从集群中分离出某节点单独使用。集群中每个节点都包含完整的数据。

在开篇之前我们先来了解一下为什么需要MySQL集群?PXC集群方案特点?PXC集群方案与Replication区别?让我们带着疑问开始我们的教程。

为什么需要MySQL集群?

相比于传统数据库单机单节点,容灾性能差,例如数据库挂掉,整个网站就会挂掉。单机单节点的数据库性能差,抗并发能力有限。

PXC集群方案特点

PXC方案保证数据的强一致性,当程序向PXC的一个节点写入,先同步其它节点,如果其它节点同步失败会立即回滚返回给程序插入数据失败,只有所有节点都同步成功才返回给程序插入数据成功,所以PXC可以保证各数据库节点数据的强一致性。

PXC集群方案与Replication方案的对比

在这里插入图片描述

这里的图不是重点,画图画的不好,大家明白这个就可以,接下来就开始安装教程。Docker的安装不在这篇博客介绍,如果有不会安装Docker的可以看下我的其他博文里面有详细的介绍安装教程。

DockerHub网站

https://hub.docker.com/r/percona/percona-xtradb-cluster/

环境配置

  1. 系统:Centos7.0
  2. Docker版本:Docker version 19.03.8, build afacb8b
  3. PXC镜像:percona/percona-xtradb-cluster

安装部署

默认安装的Docker下载镜像很慢,建议大家换成国内的镜像下载

1,配置镜像加速器

针对Docker客户端版本大于 1.10.0 的用户
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    
    
  "registry-mirrors": ["https://替换成自己的.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2,镜像拉取

docker pull percona/percona-xtradb-cluster

在这里插入图片描述
3,查看本地的镜像

 docker images

在这里插入图片描述
4,创建docker内部网络

docker network create --subnet=172.18.0.0/24 net1

5,查看创建的docker内部网络

docker network inspect net1

在这里插入图片描述
6,创建docker卷

docker volume create --name v1
docker volume create --name v2
docker volume create --name v3
docker volume create --name v4
docker volume create --name v5

6,查看下我们创建docker卷

docker inspect v1
docker inspect v2
docker inspect v3
docker inspect v4
docker inspect v5

在这里插入图片描述

注意:一定要先创建docker卷再去创建容器,要不然会报权限异常错误,不能创建容器。

7,创建容器

docker run -d -p 3306:3306 \
-v v1:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=Somnus123 \
-e CLUSTER_NAME=PXC \
-e XTRABACKUP_PASSWORD=Somnus123 \
--privileged --name=node1 --net=net1 --ip 172.18.0.2 \
percona/percona-xtradb-cluster 

在这里插入图片描述
接下来把我们剩下的四个容器创建出来

docker run -d -p 3307:3306 \
-v v2:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=Somnus123 \
-e CLUSTER_NAME=PXC \
-e XTRABACKUP_PASSWORD=Somnus123 \
-e CLUSTER_JOIN=node1 \
--privileged --name=node2 --net=net1 --ip 172.18.0.3 \
percona/percona-xtradb-cluster 

docker run -d -p 3308:3306 \
-v v3:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=Somnus123 \
-e CLUSTER_NAME=PXC \
-e XTRABACKUP_PASSWORD=Somnus123 \
-e CLUSTER_JOIN=node1 \
--privileged --name=node3 --net=net1 --ip 172.18.0.4 \
percona/percona-xtradb-cluster 

docker run -d -p 3309:3306 \
-v v4:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=Somnus123 \
-e CLUSTER_NAME=PXC \
-e XTRABACKUP_PASSWORD=Somnus123 \
-e CLUSTER_JOIN=node1 \
--privileged --name=node4 --net=net1 --ip 172.18.0.5 \
percona/percona-xtradb-cluster 


docker run -d -p 3310:3306 \
-v v5:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=Somnus123 \
-e CLUSTER_NAME=PXC \
-e XTRABACKUP_PASSWORD=Somnus123 \
-e CLUSTER_JOIN=node1 \
--privileged --name=node5 --net=net1 --ip 172.18.0.6 \
percona/percona-xtradb-cluster 

至此:我们的mysql 集群就已经搭建完成了,我们通过Navicat 客户端工具链接查看我们的mysql

以上文章如果对您有所帮助,欢迎转载点赞关注,谢谢

猜你喜欢

转载自blog.csdn.net/u012486840/article/details/107339321