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

MySQL Galera Cluster部署如何实现负载均衡和高可用

目录

1、 环境准备

1.1、配置主机解析:

2、配置

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

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

2.3、写入数据验证同步

2.7、配置nginx反向代理

1、 环境准备

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

 systemctl disable --now firewalld

 setenforce 0

1.1、配置主机解析:

四台主机依次配置

[root@galera1 ~]# cat <<e >/etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.150.17 galera1
192.168.150.18 galera2
192.168.150.19 galera3
192.168.150.20 galera4
e

四台虚拟机都导入创建该服务的yum源

[root@galera1 ~]# 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

四台虚拟机需要禁用本地mysql模块

[root@galera1 ~]# dnf module disable -y mysql

四台虚拟机都下载mysql-wsrep-8.0和galera

[root@galera1 ~]# yum install -y mysql-wsrep-8.0 galera
  • mysql-wsrep-8.0:

    • mysql-wsrep-8.0 是 MySQL 8.0 版本的一个变体,集成了 WSREP(Write Set Replication)协议。这是一个用于数据库集群的复制协议,允许 MySQL 数据库节点之间的同步复制。

    • 这个版本的 MySQL 是通过 WSREP 协议来实现数据的一致性和高可用性。WSREP 协议确保了所有节点的数据库状态保持一致,支持事务的自动同步和冲突解决。

    • 通常,这种版本的 MySQL 是在集群配置中使用的,旨在提高系统的容错能力和可扩展性。

  • Galera:

    • Galera 是一个用于 MySQL 数据库的同步复制插件,它实现了 WSREP 协议。Galera 提供了一个多主节点的数据库集群方案,允许所有节点同时进行读写操作,并且确保数据在所有节点之间保持一致。

    • 它主要用于提高数据库的可用性、容错性和扩展性。Galera 使得所有节点都能够同时处理读写请求,这比传统的主从复制模式更具灵活性。

    • Galera 可以与 MySQL 以及 MariaDB 配合使用,它的主要特点包括全同步复制、自动节点加入、冲突检测和解决等。

2、配置

四台虚拟器都启动服务,并修改密码

# 获取数据库初始化密码的步骤
[root@galera1 ~]# cat /var/log/mysqld.log |grep password
2025-10-22T11:23:35.283719Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: R0efj;qNC9A#
2025-10-22T11:23:41.233878Z 0 [Note] [MY-010733] [Server] Shutting down plugin 'caching_sha2_password'
2025-10-22T11:23:41.233892Z 0 [Note] [MY-010733] [Server] Shutting down plugin 'sha256_password'
2025-10-22T11:23:41.233902Z 0 [Note] [MY-010733] [Server] Shutting down plugin 'mysql_native_password'
#修改密码
[root@galera1 ~]# mysqladmin -uroot -p password 'Q1w2e3@123!!!!!'
Enter password: 
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

四台服务都配置一个远程用户并授权,采用脚本方式执行

#!/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"

四台虚拟机服务都先停止

[root@galera1 ~]# systemctl stop mysqld
2.1、配置 galera1 主机的my.cnf的文件
server-id=1  # 服务器 ID,用于唯一标识 MySQL 服务器
binlog_format=row  # 二进制日志格式,行级别
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.150.17'  # 当前节点的 IP 地址
wsrep_sst_auth=syncuser:'Q1w2e3@123!!!!!'  # SST(状态快照传输)认证信息
wsrep_sst_method=rsync  # SST 方法,使用 rsync 进行状态快照传输

依次配置galera2、galera3、galera4并启动mysql

2.2、在给galera1 主机的my.cnf的文件增加节点
server-id=1  # 服务器 ID,用于唯一标识 MySQL 服务器
binlog_format=row  # 二进制日志格式,行级别
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://galera2,galera3,galera4'  # Galera 集群的地址,通常为 `gcomm://` 表示集群初始节点
wsrep_node_name='galera1'  # 当前节点的名称
wsrep_node_address='192.168.150.17'  # 当前节点的 IP 地址
wsrep_sst_auth=syncuser:'Q1w2e3@123!!!!!'  # SST(状态快照传输)认证信息
wsrep_sst_method=rsync  # SST 方法,使用 rsync 进行状态快照传输
2.3、写入数据验证同步

在 galera1主机写入数据,创建一个库

mysql> create database jx;
Query OK, 1 row affected (0.02 sec)mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| jx                 |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

在其他主机上查看

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| jx                 |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

可以看到在 galera1主机创建的库,同步写入到了其他节点的mysql中。

2.4、在galera1中创建数据库用户并进行赋权

2.5、在web服务上搭建两个discuz站点,并将它们的数据库指向mysql galera 集群的其中一个站点

##2.4,2.5具体步骤查看博客https://blog.csdn.net/zzh_wj/article/details/153696288?spm=1001.2014.3001.5502

2.6、进入galera站点的数据库,可以看到同步的数据表

mysql> use discuzdb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;
+------------------------------------+
| Tables_in_discuzdb                 |
+------------------------------------+
| pre_common_admincp_cmenu           |
| pre_common_admincp_group           |
| pre_common_admincp_member          |
| pre_common_admincp_menu_platform   |
| pre_common_admincp_perm            |
| pre_common_admincp_session         |
| pre_common_admingroup              |
| pre_common_adminnote               |
2.7、配置nginx反向代理

配置ip_hash算法,指向两台discuz站点的web服务器

    include /etc/nginx/conf.d/*.conf;upstream discuz {ip_hash;server 192.168.150.1:80;server 192.168.150.4:80;}server {listen       80;listen       [::]:80;server_name  _;
#        root         /usr/share/nginx/html;location / {proxy_pass      http://discuz;proxy_set_header Host $host;}

2.8、浏览器上访问nginx代理站点进行测试

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

相关文章:

  • 唐山哪个公司做网站wordpress 新增页面
  • Cursor:GIT版本控制
  • 怎么把服务器做网站优秀网站设计 pdf
  • express框架 获取请求体数据
  • 用Python轻松提取视频音频并去除静音片段
  • 常德网站公司百度快速排名软件原理
  • 在blender中安装vtk插件
  • 河南做网站的费用做网站需要准备什么资料
  • 我国成功研制新型芯片:以更贴近人类直觉的计算方式,显著提升了计算效率并大幅降低能耗
  • 高级软考-系统架构设计师知识点3
  • 算法练习:前缀和专题
  • 网站建设与运营就业品牌推广与传播方案
  • 赣州网站建设哪家好加强网站建设的意义
  • 中国城市建设控股集团有限公司网站网站优化试卷
  • 网站建设框架模板下载网站运营一个月多少钱
  • 临漳企业做网站推广做中东服装有什么网站
  • 模块化有什么好处?
  • 算法训练.17
  • ESD整改实战手册:4 大核心措施(含 8kV/15kV 案例)+ 阿赛姆电子一站式方案助过测
  • 建站网络建立科技开发建筑工程资质合作
  • 建设信用卡银行商城网站学物联网工程后悔死了
  • Truffle 合约编译与部署:从.sol 文件到上链全流程
  • 石家庄网站建设求职简历wordpress 前台英文
  • 山东省建设管理中心网站做企业网站需要注意哪些
  • 《信息系统项目管理师》案例分析题及解析模拟题4
  • 摄像网站建设个人网站的设计流程
  • 毕业设计成品网站优质院校建设网站
  • spark动态分区参数spark.sql.sources.partitionOverwriteMode
  • 绿算GP Spark引爆关注,成为AI工厂存储利器
  • 免费个人网站自助建设哈尔滨站建筑面积