一 前言
今天我将与大家分享一个令人兴奋的进展,即PXC5.7数据库集群的自动部署脚本。这个脚本可以一键完成以Docker方式的PXC5.7集群部署,结合前面的文章,让大家可以快速验证数据库的高可用性。
在之前的文章中,我们深入探讨了PXC集群的概念、优势以及为何它是数据库高可用性的理想选择。然而,手动部署和配置PXC集群可能是一项繁琐的任务,需要耗费大量时间和精力。为了解决这个问题,我为大家带来了一个自动部署脚本,它可以极大地简化这个过程,使你能够在短时间内搭建起一个功能强大的PXC5.7集群。
二 系统环境说明
操作系统:CentOS 7
防火墙:Firewalld
在CentOS 7上,Firewalld是默认的防火墙管理工具。为了放开对应的端口3306、3307和3308,你需要执行以下步骤:
检查Firewalld状态:运行以下命令查看Firewalld是否已启用:
sudo systemctl status firewalld
如果显示"active (running)",则表示Firewalld已启用。如果未启用,你可以使用以下命令启动它:
sudo systemctl start firewalld
开放端口:运行以下命令来放开对应的端口:
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
注:生产环境中注意不要暴露数据库端口。请使用其他防火墙方式
上述命令将端口3306、3307和3308添加到public区域,并使用--permanent选项使其永久生效。
重新加载防火墙配置:运行以下命令重新加载防火墙配置,使放开的端口生效:
firewall-cmd --reload
这将重新加载防火墙配置并使放开的端口生效。
三 PXC集群脚本
# mkdir /data/pxc/ -p
#cd /data/pxc/
vim pxc_install.sh
#!/bin/bash -
#this shell write by ljb for install pxc5.7 cluster
#first install docker soft
# docker install
if ! command -v wget > /dev/null 2>&1 ;then
yum install wget -y
else
echo "wget already install !!"
fi
if ! command -v docker >/dev/null 2>&1 && [ ! -f "/usr/lib/systemd/system/docker.service" ];then
cat >/usr/lib/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF
mkdir /etc/docker/
cat >/etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"data-root": "/home/spang/docker-data/docker"
}
EOF
cd /opt/
wget https://download.docker.com/linux/static/stable/x86_64/docker-23.0.0.tgz
#解压
tar xf docker-*.tgz
#拷贝二进制文件
cp docker/* /usr/bin/
echo "start docker now !!"
sleep 2
systemctl daemon-reload
systemctl start docker
systemctl enable docker
fi
echo "docker soft install finished!!"
echo "PXC cluster will install now !!"
sleep 3
###############
# 提示用户输入
read -p "确认继续安装PXC吗? (Y/y): " input
# 判断用户输入
if [ "$input" == "Y" ] || [ "$input" == "y" ]; then
echo "程序继续执行..i."
docker pull percona/percona-xtradb-cluster:5.7.21
docker tag percona/percona-xtradb-cluster:5.7.21 pxc:5.7.21
#创建 network
docker network create --subnet=172.18.0.0/24 pxc-net
docker network inspect pxc-net #查看网络信息
#创建 volume 容器持久化
docker volume create --name pxc_v1
docker volume create --name pxc_v2
docker volume create --name pxc_v3
volume 信息查询 docker volume inspect pxc_v1
#pxc 集群创建 3节点为例
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e TZ="Asia/Shanghai" -v pxc_v1:/var/lib/mysql --privileged --name=node1 --net=pxc-net --ip 172.18.0.2 pxc5.7.21
sleep 60
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e TZ="Asia/Shanghai" -e CLUSTER_JOIN=node1 -v pxc_v2:/var/lib/mysql --privileged --name=node2 --net=pxc-net --ip 172.18.0.3 px
c5.7.21
sleep 60
docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e TZ="Asia/Shanghai" -e CLUSTER_JOIN=node1 -v pxc_v3:/var/lib/mysql --privileged --name=node3 --net=pxc-net --ip 172.18.0.4 px
c5.7.21
#注:以上创建需要一个个创建,依次完成。
echo "pxc5.7 cluster install finished!!"
sleep 3
else
echo "程序退出..."
exit 1 # 退出脚本,返回状态码1
fi
###############
通过这个自动部署脚本,你不再需要花费大量时间学习和掌握复杂的部署过程。它提供了一个简洁、高效的方式来快速搭建PXC5.7集群,使你能够专注于数据库的开发和管理。
一旦你使用自动部署脚本成功搭建了PXC5.7集群,你可以使用MySQL客户端连接到任意一个PXC节点,开始数据库操作测试。这将验证集群是否正常工作并具备高可用性。你可以尝试插入数据、执行查询、进行事务处理等操作,以测试集群的性能和稳定性。
此外,为了增强容器的安全性,我建议采取一些额外的安全措施,如使用强密码、限制网络访问等。定期备份重要数据也是至关重要的,以确保数据的安全性和可恢复性。
四 高可用负载均衡设置
负载均衡这块不在赘述,自行搭建LVS 或者使用nginx 进行负载均衡配置即可实现。
下面是nginx负载均衡例子仅供参考
stream {
upstream demo_mysql{
server 10.198.12.215:3306;
server 10.198.12.215:3308;
server 10.198.12.215:3307;
}
server {
listen 12306;
proxy_pass demo_mysql;
}
}
五 总结:
通过今天的分享,我希望能够为大家提供一种快速验证PXC5.7数据库集群高可用性的方法。通过结合前面的文章和自动部署脚本,你可以迅速搭建起一个基于Docker的PXC5.7集群,并进行测试。这将帮助你更好地理解和体验PXC集群的优势,以及它在数据库高可用性方面的杰出表现。如果你对PXC集群的部署和管理有任何疑问或进一步的需求,请随时与我联系。感谢大家的阅读和支持!
效果视频链接:Mysql集群PXC三节点部署应用演示-CSDN直播