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

MySQL试验部署

一、结构框架

二、MySQL Galera部署

1、 环境准备

主机名IP系统软件版本配置信息
galera1192.168.52.133Rocky_linux9.4mysql-wsrep-8.0 galera-26.4.14-12核2G
galera2192.168.52.178Rocky_linux9.4mysql-wsrep-8.0 galera-26.4.14-12核2G
galera3192.168.52.179Rocky_linux9.4mysql-wsrep-8.0 galera-26.4.14-12核2G
galera4192.168.52.180Rocky_linux9.4mysql-wsrep-8.0 galera-26.4.14-12核2G

1.1、关闭防火墙和selinux,进行时间同步

sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
systemctl restart sshd
systemctl disable --now firewalld.service 
setenforce 0

1.2、主机解析(给每台主机进行解析,galera1-4)

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

1.3、给每台虚拟机都导入创建该服务的yum源

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

1.4、每台主机禁用myql模块

dnf module disable -y mysql

1.5、每台虚拟机都下载mysql-wsrep-8.0和galera

yum install -y mysql-wsrep-8.0 galera

2、配置Galera1-4

1.1、四台虚拟器都启动服务,并改个密码

systemctl start mysqld

1.2、获取数据库初始化密码

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

1.3、改密码

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

1.4、给每个服务都配置一个远程用户并授权,采用脚本方式执行

vim sql.sh
#!/bin/bash# MySQL 连接参数MYSQL_USER="root"
MYSQL_PASS='Q1w2e3@123!!!!!'  # 替换为实际的 root 密码
MYSQL_HOST="localhost"           # 或者使用 IP 地址# 创建远程用户和授予权限的 SQL 命令SQL_COMMANDS="
CREATE USER 'syncuser'@'%' IDENTIFIED BY 'Q1w2e3@123!!!!!';
GRANT ALL PRIVILEGES ON *.* TO 'syncuser'@'%';
FLUSH PRIVILEGES;
"# 执行 SQL 命令mysql -u "$MYSQL_USER" -p"$MYSQL_PASS" -h "$MYSQL_HOST" -e "$SQL_COMMANDS"

给sql.sh一个权限并运行

1.5、四台虚拟机服务都先停止

systemctl stop mysqld

3、配置 galera1 主机的my.cnf的文件

进入配置文件

vim /etc/my.cnf

添加配置文件

server-id=1  # 服务器 ID,用于唯一标识 MySQL 服务器
binlog_format=row  # 二进制日志格式,行级别;statement:基于sql语句的复制;row:基于行的复制;mixed:混合复制
innodb_file_per_table=1  # 为每个 InnoDB 表使用一个独立的表空间文件
innodb_autoinc_lock_mode=2  # 自增锁模式,2表示更高效的锁模式wsrep_on=ON  # 启用 Galera 集群
wsrep_provider=/usr/lib64/galera/libgalera_smm.so  # Galera 提供者库的路径
wsrep_cluster_name='galera'  # Galera 集群的名称
wsrep_cluster_address='gcomm://'  # Galera 集群的地址,通常为 `gcomm://` 表示集群初始节点
wsrep_node_name='galera1'  # 当前节点的名称
wsrep_node_address='192.168.166.139'  # 当前节点的 IP 地址
wsrep_sst_auth=syncuser:'Q1w2e3@123!!!!!'  # SST(状态快照传输)认证信息
wsrep_sst_method=rsync  # SST 方法,使用 rsync 进行状态快照传输

启动galera1主机的mysql

systemctl start mysqld

查看端口是否开启

ss -tnlp

4、配置 galera2 主机的my.cnf的文件

server-id=2
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://galera1,galera3'
wsrep_node_name='galera2'
wsrep_node_address='192.168.166.140'
wsrep_sst_auth=syncuser:'Q1w2e3@123!!!!!'
wsrep_sst_method=rsync

5、配置 galera3 主机的my.cnf的文件

server-id=3
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://galera1,galera2,galera4'
wsrep_node_name='galera3'
wsrep_node_address='192.168.166.141'
wsrep_sst_auth=syncuser:'Q1w2e3@123!!!!!'
wsrep_sst_method=rsync

6、配置 galera4 主机的my.cnf的文件

server-id=4
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://galera2,galera3,galera1'
wsrep_node_name='galera4'
wsrep_node_address='192.168.166.142'
wsrep_sst_auth=syncuser:'Q1w2e3@123!!!!!'
wsrep_sst_method=rsync

7、在给galera1 主机的my.cnf的文件增加节点

[root@galera1 ~]# vim /etc/my.cnf  #增加上节点,即修改这行内容如下,或见下图所示:wsrep_cluster_address='gcomm://galera2,galera3,galera4'  # Galera 集群的地址,通常为 `gcomm://` 表示集群初始节点

重启galera1

systemctl restart mysqld

8、写入数据验证同步

登录g1数据库

mysql -uroot -p

创建数据库jx

create database jx;

查看g1数据库

show databases;

查看g2数据库同步

三、web集群部署

主机名IP系统软件版本配置信息
web1192.168.52.185Rocky_linux9.4mysql-wsrep-8.0 galera-26.4.14-12核2G
web2192.168.52.186Rocky_linux9.4mysql-wsrep-8.0 galera-26.4.14-12核2G

1、两台web安装yum文件

yum install -y nginx php php-mysqlnd php-fpm
yum install -y lrzsz

并解压DiscuzX-MitFrame

把upload文件转移到HTML中

给upload赋予apache权限

2、启动nginx php-fpm

systemctl start nginx php-fpm

3、配置Galrea与web互通(在galera1中)

mysql> create user discuz@'%' identified by 'Q1w2e3@123!!!!!';
mysql> grant all on discuzdb.* to discuz@'%';

4、打开web1 http://192.168.52.185/upload

5、安装完在glera1数据库中使用discuzdb

mysql> show databases;
mysql> use discuzdb

6、压缩upload,并发送给web2

tar zcvf upload.tgz upload/
scp upload.tgz 192.168.52.186:/root

7、web2中把upload移动到HTML目录下

tar xf /root/upload.tgz -C ./

四、Nginx proxy部署

主机名IP系统软件版本配置信息
nginx proxy192.168.52.187Rocky_linux9.4mysql-wsrep-8.0 galera-26.4.14-12核2G

1、安装yum文件

yum install -y nginx php php-mysqlnd php-fpm
yum install -y lrzsz

2、进入配置文件

cd /etc/nginx/
vim nginx.conf

3、修改配置文件(添加Web1,2端口)

upstream webs {server 192.168.52.185:80;server 192.168.52.186:80;}
 location / {proxy_pass http://webs;proxy_set_header Host $host; # 传递主机名(关键,影响路径解析)proxy_set_header X-Real-Ip $remote addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme; #传递协议(http/https)}

4、开启nginx

systemctl start nginx

五、NFS 网络存储

主机名IP系统软件版本配置信息
NFS192.168.52.188Rocky_linux9.4mysql-wsrep-8.0 galera-26.4.14-12核2G

1、安装yum

yum install -y nfs-utils
yum install -y lrzsz

2、启动nfs并查看

systemctl start nfs-server.service 
nfsstat

3、创建目录,创建vim

mkdir /home/webdata
vim /etc/exports

4、添加vim

/home/webdata   192.168.52.0/24(rw,sync,no_root_squash)

5、开启并查看

6、在Web1,2挂载nfs

mount 192.168.52.188:/home/webdata /usr/share/nginx/html/

7、在/home/webdata/目录下安装DiscuzX-MitFrame

8、把upload移出来

mv DiscuzX-MitFrame/upload/ ./

9、查看Web1,2中的ID

id apache

10、统一NFS的ID

groupadd -g 48 apache
useradd -u 48 -g 48 -s /sbin/nologin -d /usr/share/httpd apache

11、给upload授权限

chown -R apache upload/

http://www.dtcms.com/a/520100.html

相关文章:

  • 【文献笔记】ICLR 2018 | Graph Attention Networks
  • Day69 SQLite3动态库移植 + BMP图像解析显示 + 进度条控件设计与动态文本管理
  • 通过自构建的时间服务器主机给客户端主机同步时间
  • [特殊字符] 软考架构师 vs. 考研408:全方位对比
  • C语言进阶:(一)深度剖析函数栈帧:从创建到销毁
  • 零基础从头教学Linux(Day 55)
  • 哪里有学做ppt的网站资阳的网站建设
  • Apple 开源FastVLM:AI看图说话更快更准
  • 交互式UTM坐标查询工具:让地理坐标转换变得简单
  • 初学者小白复盘15之指针(4)
  • 轻量级且简单的 macOS 应用 Forklift for mac
  • 和平板电脑厂商定制智慧养老平板有那种合作模式?
  • 无人机安防体系的音视频超低延迟重构:从“空地融合”到“实时智控”
  • 做网站推广业务怎么样专业仿站网站建设
  • 三分钟部署最新开源大模型!Amazon SageMaker JumpStart 生成式 AI 实战指南
  • AWS云服务故障复盘——从故障中汲取的 IT 运维经验
  • Adobe Dimension 2025 (3D可视化设计神器) 解锁版
  • CUDA安装备忘录
  • 泰安网站建设流程软文营销文章300字
  • 医院为什么要做门户网站建设无锡专业网站推广
  • freeRTOS学习
  • K8s 集群环境搭建 - yaml 版本(一)
  • RAM和ROM的定义和区别总结!!!
  • GELU(高斯误差线性单元)激活函数全面解析
  • 企业网站可以做淘宝客吗wordpress 用户密码加密
  • WordPress + React 无头架构搭建指南
  • 聚类算法实战:从 KMeans 到 DBSCAN
  • 网站信息登记表网络营销考试题及答案
  • 宁夏建设工程招投标管理中心网站工程建设标准化期刊网站
  • 网站建设模板ppt模板微信公众网站开发