背景
最近在进行 MySQL 集群搭建测试的研究中
对于业界主流方案自然不能跳过
在此,整理成完整的文章,希望道友能得到参考价值 …
【注】:Percona XtraDB Cluster(简称 PXC 集群) —— 业界主流的 MySQL 集群方案
★ PXC 集群介绍
PXC 是基于 Galera 协议的高可用集群方案。
可以实现多个节点间的数据同步复制以及读写,并且可保障数据库的服务高可用及数据强一致性
PXC 最大的优势:强一致性、无同步延迟 (牺牲性能)
环境
CentOS版本: CentOS Linux release 7.9.2009 (Core)
MySQL 版本: 5.7.32
PXC 版本 : percona/percona-xtradb-cluster 最新
前期准备
1). 三台 Vmware 虚拟机
我以三台创建运行的 CentOS7 作为宿主机进行配置操作
虚拟机 ip
角色
192.168.80.221
Docker Swarm 管理节点,Master 节点
192.168.80.222
worker 节点
192.168.80.223
worker 节点
2). 开启四个 PXC 环境所涉及的端口:
3306:# mysql 实例端口
4567:# PXC cluster 相互通讯的端口
4444:# 用于 SST(State Snapshot Transfer): 全量传输
4568:# 用于 IST(Incremental state Transfer):增量传输传送
以鄙人使用宝塔面板操作为例,注意以上端口的开启:
3). 部署前建议关闭 SELINUX、将 MySQL 数据库服务停止
安全增强型 Linux(Security-Enhanced Linux)SELinux 主要由美国国家安全局开发
一种方法【荐】,永久关闭 Selinux:
"vi /etc/selinux/config" 把 "SELINUX" 属性值设置成 disabled,然后 reboot 重启
另一种方法,或者执行命令 Linux 临时关闭 Selinux: "setenforce 0"
4). 配置 ntp 服务,确保时间同步
[root@localhost ~]# yum -y install ntp ntpdate
[root@localhost ~]# ntpdate 0.asia.pool.ntp.org
[root@localhost ~]# hwclock --systohc
[root@localhost ~]# date
2021年 01月 08日 星期五 09:54:23 CST
5). 创建 Docker Swarm 集群
为了使三台服务器进行连接,如果没有安装 "docker",需要先执行命令: yum install -y docker
【拓展】:
查看 docker 版本: docker -v
判断 docker 是否安装成功:docker
docker 的启动/关闭/重启:service docker start、service docker stop、service docker restart
然后,要在各个服务器中,开放所需的三个端口号
(开放后重启 docker 服务 : service docker restart)
2377:用于集群管理通信的TCP端口
4789:用于容器覆盖网络
7946:用于容器网络发现
firewall-cmd --zone=public --add-port=2377/tcp --permanent
firewall-cmd --zone=public --add-port=4789/tcp --permanent
firewall-cmd --zone=public --add-port=4789/udp --permanent
firewall-cmd --zone=public --add-port=7946/tcp --permanent
firewall-cmd --zone=public --add-port=7946/udp --permanent
firewall-cmd --reload
注意,以上的操作,要对三台虚拟机,全部进行配置哦!!!
选择一台服务器作为管理集群的服务器,此处,我选择的是 【192.168.80.221】
运行命令:docker swarm init
则会得到一个形如下面的管理者口令
[root@localhost /]# docker swarm init
Swarm initialized: current node (g706owlgszx493xhpsb44k9t0) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-4ea65xsm8xsyhrmn42qg125b10dxtcmt80gnuijnnskddces2n-6fok68mg86nf5lkah1wnnj6ra \
192.168.80.221:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
然后在其他两个虚拟服务器中( 192.168.80.222、19