Loading

MySQL MHA (Master High Availability) 架构

MySQL MHA (Master High Availability) 架构

1. MHA 架构概述

graph TB MHA_Manager[MHA Manager] Master[(Master DB)] Slave1[(Slave DB 1)] Slave2[(Slave DB 2)] Slave3[(Slave DB 3)] MHA_Manager -->|监控| Master MHA_Manager -->|监控| Slave1 MHA_Manager -->|监控| Slave2 MHA_Manager -->|监控| Slave3 Master -->|复制| Slave1 Master -->|复制| Slave2 Master -->|复制| Slave3

2. MHA 工作原理

sequenceDiagram participant Manager as MHA Manager participant Master as Master DB participant Slave1 as Slave1 DB participant Slave2 as Slave2 DB Manager->>Master: 定期检测存活状态 Manager->>Slave1: 定期检测存活状态 Manager->>Slave2: 定期检测存活状态 Note over Master: Master发生故障 Manager->>Master: 检测到故障 Manager->>Slave1: 检查复制状态 Manager->>Slave2: 检查复制状态 Manager->>Slave1: 应用剩余日志 Manager->>Slave1: 提升为新Master Manager->>Slave2: 指向新Master

3. MHA 核心组件

  1. MHA Manager

    • 负责监控Master节点
    • 执行故障检测
    • 执行自动故障转移
    • 管理复制关系
  2. MHA Node

    • 运行在每个MySQL服务器上
    • 执行日志传输
    • 提供远程命令执行能力

4. 故障转移流程

graph TD A[检测到Master故障] --> B[确认Slave状态] B --> C[选择最新的Slave] C --> D[应用未传输的日志] D --> E[提升Slave为新Master] E --> F[调整其他Slave指向] F --> G[更新路由配置]

5. 具体实例说明

假设有如下配置:

  • Master: 192.168.1.100
  • Slave1: 192.168.1.101
  • Slave2: 192.168.1.102
  • MHA Manager: 192.168.1.200

配置示例:

[server default]
manager_workdir=/var/log/masterha/app1
manager_log=/var/log/masterha/app1/manager.log
master_binlog_dir=/var/lib/mysql
remote_workdir=/var/log/masterha

[server1]
hostname=192.168.1.100
candidate_master=1

[server2]
hostname=192.168.1.101
candidate_master=1

[server3]
hostname=192.168.1.102
no_master=1

6. MHA 优势特点

  1. 数据一致性保证

    • 保存所有中继日志
    • 应用所有未传输的日志
    • 确保零数据丢失
  2. 快速故障转移

    • 通常在10秒内完成
    • 自动化程度高
    • 无需人工干预
  3. 灵活的配置选项

    • 支持复杂的拓扑结构
    • 可自定义故障转移策略
    • 支持脚本扩展

7. 注意事项

  1. 网络要求

    • 各节点间需要SSH互通
    • 网络延迟要求低
    • 带宽要求适中
  2. 配置建议

    • 建议至少3个节点
    • 关键业务建议使用GTID
    • 定期进行故障演练
  3. 监控建议

    • 配置邮件告警
    • 集成现有监控系统
    • 记录详细日志
posted @ 2025-04-25 16:07  夷某蓁  阅读(43)  评论(0)    收藏  举报