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

关系型数据库MySQL(五):Galara高可用

数据库高可用

一、Galera 高可用理论基础

1.1 什么是高可用?

高可用(High Availability, HA)指系统能够持续提供服务的能力,目标是最小化停机时间。在数据库领域,高可用通常通过冗余节点故障自动转移实现。

1.2 Galera Cluster 简介

Galera Cluster 是一个基于 MySQL 的多主同步复制集群,具有以下特点:

  • 多主架构:所有节点均可读写。
  • 强一致性:通过组通信(Group Communication)实现事务同步。
  • 自动故障转移:节点故障时自动重新选举。
  • 无单点故障:所有节点地位平等。
1.3 复制模式对比
复制类型同步方式一致性保障性能影响适用场景
异步复制主节点异步推送跨地域备份
半同步复制主节点等待从节点中等金融交易
组复制(Galera)事务组提交中高高并发多活业务

二、Galera 核心原理

2.1 组通信协议

Galera 使用组通信系统(GCS)实现节点间消息传递,常用协议包括:

  • gcomm:Galera 自带的轻量级通信层。
  • Corosync:成熟的集群通信框架。
2.2 事务认证复制

每个事务在提交前需经过集群认证:

  1. 节点 A 发起事务。
  2. 事务写入集(WriteSet)广播至所有节点。
  3. 节点投票是否允许提交。
  4. 多数节点同意后,事务在所有节点提交。
2.3 SST 与 IST
  • SST(State Snapshot Transfer):全量数据同步,用于新节点加入。
  • IST(Incremental State Transfer):增量同步,用于落后节点追数据。

三、OpenEuler 环境部署 Galera 集群

3.1 环境准备
  • 操作系统:OpenEuler 22.03 LTS
  • 节点规划
    • Node1: 192.168.1.101
    • Node2: 192.168.1.102
    • Node3: 192.168.1.103
  • 软件依赖
    sudo dnf install mariadb-server-galera rsync socat
3.2 配置文件详解

编辑/etc/my.cnf.d/galera.cnf

[mysqld] binlog_format=ROW default_storage_engine=InnoDB innodb_autoinc_lock_mode=2 wsrep_on=ON wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address=gcomm://192.168.1.101,192.168.1.102,192.168.1.103 wsrep_cluster_name=galera_cluster wsrep_node_address=192.168.1.101 # 当前节点IP wsrep_node_name=node1 # 节点名称 wsrep_sst_method=rsync # 同步方法
3.3 启动集群
  1. 初始化第一个节点
    sudo galera_new_cluster systemctl start mariadb
  2. 加入其他节点
    systemctl start mariadb
3.4 验证集群状态
SHOW STATUS LIKE 'wsrep%';

关键指标:

  • wsrep_cluster_size:集群节点数(应为3)
  • wsrep_local_state_comment:状态("Synced"表示正常)

四、运维实战案例

4.1 节点故障恢复

场景:Node2 宕机后重新加入。

# 在 Node2 上 sudo systemctl restart mariadb

观察日志:

[Note] WSREP: Member 2.0 (node2) requested state transfer from 'node1' [Note] WSREP: IST receiver started.
4.2 数据一致性验证

测试步骤

  1. 在 Node1 创建表:
    CREATE TABLE test (id INT, name VARCHAR(20));
  2. 在 Node3 插入数据:
    INSERT INTO test VALUES (1, 'Galera');
  3. 在 Node2 查询:
    SELECT * FROM test; -- 应返回 (1, 'Galera')
4.3 脑裂(Split-Brain)处理

预防配置

wsrep_provider_options="pc.wait_prim=ON; pc.ignore_sb=OFF"

手动恢复

  1. 关闭所有节点:
    systemctl stop mariadb
  2. 重新引导集群:
    galera_new_cluster # 在主节点执行

五、性能调优与监控

5.1 参数优化
# 减少网络延迟影响 wsrep_slave_threads=8 innodb_flush_log_at_trx_commit=2 # 提升 SST 效率 wsrep_sst_method=mariabackup wsrep_sst_auth="sst_user:password"
5.2 监控工
  • Prometheus + Grafana
    # prometheus.yml scrape_configs: - job_name: 'galera' static_configs: - targets: ['192.168.1.101:9104', '192.168.1.102:9104']
  • 关键指标
    • wsrep_flow_control_paused(流控暂停时间)
    • wsrep_replicated(复制事务数)

六、常见问题排查

6.1 节点无法加入集群

错误日志

[ERROR] WSREP: Failed to read from: ssl://0.0.0.0:4567

解决方案

  1. 检查防火墙:
    sudo firewall-cmd --add-port=4567/tcp --permanent
  2. 验证wsrep_cluster_address配置是否一致。
6.2 SST 失败

错误信息

[ERROR] WSREP: Process completed with error: wsrep_sst_rsync ...

处理步骤

  1. 确保rsync已安装。
  2. 检查目标节点磁盘空间:
    df -h /var/lib/mysql

七、总结

Galera Cluster 为 MySQL 提供了强一致性多活架构,适合高并发业务场景。在 OpenEuler 系统上需注意:

  • 依赖包兼容性(如mariadb-server-galera)。
  • 防火墙策略(4567、4444端口)。
  • 定期监控wsrep状态指标。

运维口诀
配置一致是基础,网络畅通是关键;
监控指标日日看,脑裂预防记心间。


附录:常用命令速查

# 查看集群状态 mysql -e "SHOW STATUS LIKE 'wsrep_cluster_size';" # 强制移除故障节点 SET GLOBAL wsrep_provider_options='pc.bootstrap=1';
http://www.jsqmd.com/news/653944/

相关文章:

  • 如何用四维矩阵建模计算性的态势感知与算计性的势态知感?
  • python面向对象————图书馆借阅系统(综合练习)
  • CLIP-GmP-ViT-L-14图文匹配工具惊艳效果展示:Softmax置信度进度条可视化
  • 元机器人codebuddy开发实践,阶段一:搭建元智能体基础框架
  • 保姆级教程:在Ubuntu 20.04上从源码编译Carla 0.9.4(含Anaconda环境配置与UE4.21.2安装)
  • 从Focal Loss到ASL:多标签分类损失函数演进史与实战选型指南
  • 三步掌握百度网盘秒传:永久分享文件不再失效
  • 5分钟学会mPLUG视觉问答:本地图片分析工具搭建教程
  • 元机器人codebuddy开发实践,阶段二:接入沙箱 + 3D 建模模块生成智能体
  • LFM2.5-1.2B-Thinking完整教程:Ollama环境配置、模型使用与高级功能
  • 别再拍脑袋估算了!手把手教你用山东新规里的‘功能点法’算准软件开发预算
  • 如何用树状书签管理工具彻底解决浏览器书签混乱问题?
  • Vision Pro 8.4 保姆级安装教程:从下载到激活,手把手带你避开许可证过期坑
  • https://www.cnblogs.com/Un1corn/p/18615567
  • 从流体模拟到电磁场:梯度、散度、旋度在Unity/Blender中的3D可视化实战
  • SUPER COLORIZER色彩科学解析:模型如何学习并再现人类色彩认知
  • Qwen2.5-7B-Instruct商业应用:广告公司创意文案+分镜脚本生成
  • 别再死磕手册了!STM32F429以太网实战:手把手教你搞定MAC与PHY芯片选型与连接
  • 告别STM32,试试用FPGA+Verilog做超声波测距:精度与实时性的提升实战
  • C 语言转义字符算字节的完整规则
  • CC3200 Launchpad烧录避坑指南:TI Uniflash详细配置与常见错误解决
  • FUTURE POLICE在在线教育中的应用:如何为课程视频生成逐字对齐字幕
  • 别再默认轮询16台了!台达PLC-LINK高效通讯的M1355手动联机配置详解
  • 10分钟掌握Whisper-WebUI:如何免费快速完成语音转文字?
  • PMC P460-B4阵列卡在华三服务器上的RAID配置详解:从RAID1/RAID6选择到热备盘(专用 vs 自动替换)的实战对比
  • 为什么你的LangChain应用无法复现线上问题?生成式AI链路追踪的5个反直觉真相(内部审计报告首次公开)
  • Telemetry技术在现代网络运维中的高效应用
  • 告别PS!用Qwen-Image-Edit-2511实现智能抠图、局部重绘,简单3步
  • Spring AI 智能体开发实战:基于 Java 的落地方案详解
  • 别再手动催周报了!用泛微OA E9的提醒功能,5分钟搞定每周五自动邮件提醒