当前位置: 首页 > news >正文

MySQL部署

MySQL Galera 集群部署实践

一、结构框架

整体架构包含多个部分,用户通过 Nginx Proxy(R6)访问 Web 集群(R4、R5 等),Web 集群与 MySQL Galera 集群(R1、R2、R3 等)以及 MFS 网络存储(R7)交互,各组件通过网络设备连接,形成一个完整的服务架构,保障服务的高可用性与可扩展性。

二、MySQL Galera 部署

(一)环境准备

主机名IP系统软件版本配置信息
galera1192.168.25.134Rocky_linux9.4mysql-wsrep-8.0 galera-26.4.14-12 核 2G
galera2192.168.25.138Rocky_linux9.4mysql-wsrep-8.0 galera-26.4.14-12 核 2G
galera3192.168.25.129Rocky_linux9.4mysql-wsrep-8.0 galera-26.4.14-12 核 2G
galera4192.168.25.170Rocky_linux9.4mysql-wsrep-8.0 galera-26.4.14-12 核 2G
1. 关闭防火墙和 selinux,进行时间同步

执行以下命令:

cpp

sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
systemctl restart sshd
systemctl disable --now firewalld.service
setenforce 0
2. 主机解析(给每台主机进行解析,galera1 - 4)

通过以下命令配置:

cpp

cat << e >/etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.52.133 galera1
192.168.52.178 galera2
192.168.52.179 galera3
192.168.52.180 galera4
e
3. 给每台虚拟机都导入创建该服务的 yum 源

配置命令如下:

cpp

cat  << e >> /etc/yum.repos.d/mysql-wsrep.repo
[galera]
name=galera
baseurl=http://releases.galeracluster.com/mysql-wsrep-8.0/redhat/8/x86_64/
enabled=1
gpgcheck=0
e
4. 每台主机禁用 mysql 模块

运行:

cpp

dnf module disable -y mysql
5. 每台虚拟机都下载 mysql - wsrep - 8.0 和 galera

执行安装命令:

cpp

yum install -y mysql-wsrep-8.0 galera

(二)配置 Galera1 - 4

1. 四台虚拟机都启动服务,并改个密码

启动服务:

cpp

systemctl start mysqld
2. 获取数据库初始化密码

使用命令:

cpp

password=$(cat /var/log/mysqld.log | awk '/\[^\]password/{print $NF}' | tr -d ' ')
echo $password
3. 改密码

执行:

cpp

mysqladmin -uroot -p password 'Q1w2e3@123!!!!!'

四、Nginx Proxy 部署(1 节点)

1. 节点配置清单

主机名IP 地址系统版本软件版本硬件配置
nginx proxy192.168.52.187Rocky Linux 9.4nginx、php、php-mysqlnd2 核 2G

2. 核心操作

  • 安装 Nginx

    bash

    yum install -y nginx php php-mysqlnd php-fpm lrzsz
    
  • 配置负载均衡:编辑/etc/nginx/nginx.conf,添加 Web 节点集群与代理规则:

    bash

    vim /etc/nginx/nginx.conf
    
    http块中添加以下内容:

    ini

    # 1. 定义Web节点集群(upstream块)
    upstream webs {server 192.168.52.185:80;  # web1server 192.168.52.186:80;  # web2
    }# 2. 修改默认location块,代理到webs集群
    location / {proxy_pass http://webs;  # 转发请求到Web集群proxy_set_header Host $host;  # 传递原始主机名(避免路径解析错误)proxy_set_header X-Real-Ip $remote_addr;  # 传递客户端真实IPproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 传递IP链proxy_set_header X-Forwarded-Proto $scheme;  # 传递协议(http/https)
    }
    
  • 启动 Nginx

    bash

    systemctl start nginx
    
  • 验证:浏览器访问http://192.168.52.187,应能正常打开 Discuz 页面,且请求会自动分发到 web1 或 web2。

6. Web1、Web2 节点挂载 NFS 共享目录

功能目标

将 NFS 服务器(IP:192.168.52.188)的/home/webdata目录,挂载到 Web 节点(Web1:192.168.52.185、Web2:192.168.52.186)的 Nginx 根目录/usr/share/nginx/html/,实现 Web 节点文件统一存储。

操作命令(Web1、Web2 节点均执行)

bash

# 挂载NFS共享目录到Web节点的Nginx根目录
mount 192.168.52.188:/home/webdata /usr/share/nginx/html/
关键说明
  • 前提条件:需先在 NFS 服务器完成/home/webdata目录创建及/etc/exports配置(允许192.168.52.0/24网段访问),并启动nfs-server服务。
  • 临时挂载:上述命令为临时挂载,重启 Web 节点后挂载会失效;若需永久挂载,需编辑/etc/fstab文件,添加如下内容:

    bash

    # 编辑fstab文件
    vim /etc/fstab
    # 添加一行(格式:NFS服务器目录 本地挂载点 文件系统 挂载参数 0 0)
    192.168.52.188:/home/webdata  /usr/share/nginx/html/  nfs  defaults  0  0
    # 生效配置(无需重启)
    mount -a
    

7. 在 NFS 服务器安装 DiscuzX-MitFrame

功能目标

在 NFS 共享目录/home/webdata中部署 Discuz 论坛应用,确保 Web1、Web2 挂载后可直接访问统一的应用文件,避免节点间文件不一致。

操作命令(仅在 NFS 服务器192.168.52.188执行)

bash

# 1. 进入NFS共享目录
cd /home/webdata# 2. 上传DiscuzX-MitFrame压缩包(通过lrzsz工具,本地选择文件上传)
rz# 3. 解压压缩包(假设压缩包名为DiscuzX-MitFrame.zip,需根据实际文件名调整)
unzip DiscuzX-MitFrame.zip
关键说明
  • 工具依赖:需先在 NFS 服务器安装unzip(解压工具)和lrzsz(文件传输工具),命令:yum install -y unzip lrzsz
  • 目录结构:解压后会生成DiscuzX-MitFrame目录,后续需将其中的upload(Discuz 核心应用目录)移动到/home/webdata根目录。

8. 移动 Discuz 的 upload 目录到 NFS 共享根目录

功能目标

简化 Web 节点访问路径(直接通过http://Web节点IP/upload访问应用),并确保应用文件在 NFS 共享目录的根层级,便于权限管理。

操作命令(仅在 NFS 服务器192.168.52.188执行)

bash

# 进入NFS共享目录
cd /home/webdata# 移动upload目录到当前目录(即/home/webdata/下)
mv DiscuzX-MitFrame/upload/ ./
关键说明
  • 路径验证:执行后通过ls命令查看,/home/webdata目录下应存在upload文件夹,此时可删除无用的DiscuzX-MitFrame空目录:rm -rf DiscuzX-MitFrame

9. 查看 Web1、Web2 节点的 apache 用户 ID

功能目标

获取 Web 节点(Web1、Web2)中apache用户的 UID(用户 ID)和 GID(组 ID),后续在 NFS 服务器统一配置相同 ID,避免因权限不匹配导致 Web 节点无法读写 NFS 文件。

操作命令(Web1、Web2 节点均执行)

bash

# 查看apache用户的ID信息(包含UID、GID及所属组)
id apache
输出示例与解读

plaintext

uid=48(apache) gid=48(apache) groups=48(apache)
  • 关键信息:上述输出中,uid=48(用户 ID)、gid=48(组 ID)为默认值,若 Web 节点输出不同(如uid=500),需以实际输出的 UID/GID 为准,后续在 NFS 服务器同步配置。

10. 在 NFS 服务器统一 apache 用户 ID(与 Web 节点一致)

功能目标

确保 NFS 服务器的apache用户 UID/GID 与 Web1、Web2 完全相同,解决 “Web 节点有权限但无法读写 NFS 文件” 的权限映射问题(NFS 权限基于 UID/GID 而非用户名)。

操作命令(仅在 NFS 服务器192.168.52.188执行,以 UID=48、GID=48 为例)

bash

# 1. 创建apache组,指定GID=48(需与Web节点的apache组GID一致)
groupadd -g 48 apache# 2. 创建apache用户,指定UID=48、GID=48,禁止登录(仅用于文件权限),家目录为/usr/share/httpd
useradd -u 48 -g 48 -s /sbin/nologin -d /usr/share/httpd apache
关键说明
  • 冲突处理:若 NFS 服务器已存在apache用户 / 组,需先删除旧用户 / 组(谨慎操作,确保无其他应用依赖):

    bash

    # 删除旧apache用户(需先删除用户所属进程,避免占用)
    userdel apache
    # 删除旧apache组
    groupdel apache
    
  • 参数解释
    • -s /sbin/nologin:禁止 apache 用户登录系统(仅作为权限载体);
    • -d /usr/share/httpd:指定用户家目录(与 Web 节点 apache 用户家目录一致,避免异常)。

11. 给 NFS 中的 upload 目录授权 apache 用户

功能目标

赋予apache用户(Web 节点运行 Nginx/PHP 的用户)对upload目录的读写权限,确保 Web 节点可正常安装、运行 Discuz 应用(如写入配置文件、上传附件)。

操作命令(仅在 NFS 服务器192.168.52.188执行)

bash

# 进入NFS共享目录
cd /home/webdata# 递归授权:将upload目录及所有子文件的所有者改为apache用户
chown -R apache upload/
http://www.dtcms.com/a/519532.html

相关文章:

  • ubuntu中为什么查看CPU的步进?查看命令是什么?
  • 【2025】libtorch_cpu.so: undefined symbol: iJIT_NotifyEvent
  • 广告设计网站免费樟树市建设局网站
  • Redis Jedis 快速入门
  • 未来之窗昭和仙君(三十一)全球化多国语言——东方仙盟筑基期
  • 面试常问笔记整理
  • 如何提高技能和知识
  • 小白python入门 - 6. Python 分支结构——逻辑决策的核心机制
  • 证件阅读器在酒店案例
  • 免费做app的网站有哪些物流公司网站怎么做
  • 公司网站制作商濮阳到上海
  • 网络编程-初识
  • 十六、OpenCV中的图像文件处理
  • 你的图表太安静了!3行代码让Highcharts“开口说话“
  • 网站地图制作工具抽卡 wordpress
  • digiCamControl,一款专业级 DSLR 远程控制工具
  • 成功解决NVIDIA Jetson docker环境下Opencv+Gstreamer 无法对rtsp相机拉流问题
  • 2025年保姆级C++环境配置教程(Windows/macOS双平台)
  • Linux内核中RDMA资源的精细化管理:cgroup子系统实现解析
  • Rust 性能优化指南:内存管理、并发调优与基准测试案例
  • 手机免费注册网站网站的根目录怎么找
  • 贯通 “车 - 网 - 储” 关键节点,推动新能源汽车与能源网融合助力 “双碳” 目标
  • 计网4.2.5 路由聚合
  • 基于PRIDE PPP-AR的低轨卫星运动学定轨脚本
  • 【Rust实战】打造高性能命令行工具:从grep到ripgrep的进化之路
  • 2510rs,rust,1.89
  • 移动归因平台对比:洞察AppsFlyer、Adjust与Singular的胜负手
  • 2510rs,rust,1.88
  • 网站的文案电商关键字优化
  • 网站如何屏蔽中国ip如何看网站做打好坏