Mysql5.7高可用数据库集群自动部署脚本分享

一 前言

今天我将与大家分享一个令人兴奋的进展,即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直播

  • 28
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值