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

七十二、【Linux数据库】MySQL数据库MHA集群概述 、 部署MHA集群

MHA架构全景图

故障转移流程
监控
监控
监控
1.检测主库故障
2.选举新主库
3.数据一致性检查
4.提升新主库
5.VIP漂移
故障检测
MHA Manager
192.168.1.100
选举算法
日志差异恢复
切换完成
应用透明访问
应用程序
VIP:192.168.1.200
主库
192.168.1.101
从库1
192.168.1.102
从库2
192.168.1.103

MySQL MHA 集群概述

MHA 核心功能

  1. 自动故障转移:主库故障时自动提升新主
  2. 数据一致性:确保故障切换后数据完整
  3. 主从监控:实时检测复制状态
  4. 透明切换:应用层无需修改配置
  5. 在线切换:计划内维护不中断服务

架构组件

组件功能描述部署位置
MHA Manager监控主从状态、执行故障转移独立服务器
MHA Node运行在主从库,执行具体命令所有数据库服务器
VIP管理虚拟IP漂移,实现透明切换主库服务器

一、环境准备

1. 服务器规划

角色IP地址主机名
主库192.168.1.101master
从库1192.168.1.102slave1
从库2192.168.1.103slave2
MHA Manager192.168.1.100manager

2. 配置SSH互信

# 所有节点生成密钥
[root@localhost ~]# ssh-keygen -t rsa
[root@localhost ~]# ssh-copy-id root@master
[root@localhost ~]# ssh-copy-id root@slave1
[root@localhost ~]# ssh-copy-id root@slave2
[root@localhost ~]# ssh-copy-id root@manager

3. 安装MySQL主从复制

# 主库配置
[root@master ~]# vi /etc/my.cnf
[mysqld]
server-id=1
log-bin=mysql-bin
binlog_format=row# 从库配置
[root@slave1 ~]# vi /etc/my.cnf
[mysqld]
server-id=2
relay-log=relay-bin
read-only=1# 启动主从复制(参考主从配置章节)

二、MHA 集群部署

1. 安装依赖包

# 所有节点安装Perl模块
[root@localhost ~]# yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager -y

2. 安装MHA Node

# 所有数据库节点安装
[root@master ~]# yum install https://github.com/yoshinorim/mha4mysql-node/releases/download/v0.58/mha4mysql-node-0.58-0.el7.noarch.rpm -y

3. 安装MHA Manager

# Manager节点安装
[root@manager ~]# yum install https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-manager-0.58-0.el7.noarch.rpm -y

4. 配置MHA

# 创建配置目录
[root@manager ~]# mkdir -p /etc/mha# 编辑配置文件
[root@manager ~]# vi /etc/mha/app1.cnf
[server default]
manager_workdir=/var/log/mha/app1
manager_log=/var/log/mha/app1/manager.log
ssh_user=root
repl_user=repl
repl_password=ReplPass123!
ping_interval=3[server1]
hostname=192.168.1.101
port=3306
candidate_master=1[server2]
hostname=192.168.1.102
port=3306
candidate_master=1[server3]
hostname=192.168.1.103
port=3306
no_master=1

5. 配置VIP漂移

# 安装ARPing
[root@master ~]# yum install arping -y# 编辑VIP脚本
[root@manager ~]# vi /usr/bin/vip_manager
#!/bin/bash
VIP=192.168.1.200
INTERFACE=eth0
case $1 instart)ssh $2 "ip addr add $VIP/24 dev $INTERFACE"ssh $2 "arping -c 3 -A -I $INTERFACE $VIP";;stop)ssh $2 "ip addr del $VIP/24 dev $INTERFACE";;
esac# 添加执行权限
[root@manager ~]# chmod +x /usr/bin/vip_manager# 配置MHA使用VIP
[root@manager ~]# vi /etc/mha/app1.cnf
master_ip_failover_script=/usr/bin/vip_manager

三、启动与测试

1. 检查MHA配置

[root@manager ~]# masterha_check_ssh --conf=/etc/mha/app1.cnf
Wed Jul 21 15:30:01 2025 - [info] All SSH connection tests passed successfully.[root@manager ~]# masterha_check_repl --conf=/etc/mha/app1.cnf
MySQL Replication Health is OK.

2. 启动MHA监控

[root@manager ~]# nohup masterha_manager --conf=/etc/mha/app1.cnf > /var/log/mha/app1/manager.log 2>&1 &

3. 查看监控状态

[root@manager ~]# masterha_check_status --conf=/etc/mha/app1.cnf
app1 (pid:1234) is running(0:PING_OK), master:192.168.1.101

4. 故障转移测试

# 模拟主库故障
[root@master ~]# systemctl stop mysqld# 查看MHA日志
[root@manager ~]# tail -f /var/log/mha/app1/manager.log
...
Wed Jul 21 15:32:22 2025 - [info] Master failover to 192.168.1.102(192.168.1.102:3306) completed successfully.
...# 验证VIP漂移
[root@slave1 ~]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000inet 192.168.1.200/24 scope global secondary eth0

5. 在线切换

# 计划内切换
[root@manager ~]# masterha_master_switch --conf=/etc/mha/app1.cnf --master_state=alive --new_master_host=192.168.1.103 --orig_master_is_new_slave

命令总结表格

演示命令功能描述关键参数
masterha_check_ssh --conf=file检查SSH连接配置文件路径
masterha_check_repl --conf=file检查复制状态配置文件路径
masterha_manager --conf=file启动MHA监控后台运行
masterha_check_status --conf=file查看MHA状态显示运行状态
masterha_stop --conf=file停止MHA监控
masterha_master_switch --conf=file手动主从切换--new_master_host 新主库
master_ip_failover_script=pathVIP管理脚本故障转移时执行
ip addr add VIP dev eth0添加虚拟IPVIP地址
arping -c 3 -A -I eth0 VIP广播ARP更新通知网络设备
no_master=1禁止提升为主配置特定从库

功能作用详解

1. MHA 工作流程

故障转移流程

MHA Manager主库从库候选主库其他从库VIP脚本应用定期PING检测无响应检查复制延迟提升为新主指向新主漂移虚拟IP切换完成MHA Manager主库从库候选主库其他从库VIP脚本应用

2. 数据一致性保障

差异日志处理

# 从库差异日志保存
save_binary_logs --command=save --start_pos=12345 --binlog_dir=/backup/binlogs

半同步增强

# 配置文件添加
[server default]
check_repl_delay=0
check_repl_filter=0

3. 高可用架构设计

推荐架构

监控
监控
监控
VIP
主库
从库1
从库2
MHA Manager

多Manager防单点

# 备用Manager配置
[root@backup-manager ~]# masterha_secondary_check --conf=/etc/mha/app1.cnf
http://www.dtcms.com/a/339314.html

相关文章:

  • 当MySQL的int不够用了
  • GTSAM中实现多机器人位姿图优化(multi-robot pose graph optimization)示例
  • 权限管理系统
  • 动手学深度学习(pytorch版):第四章节—多层感知机(7、8)数值稳定性和模型初始化
  • 《算法导论》第 31 章 - 数论算法
  • 个人介绍CSDNmjhcsp
  • Kubernetes集群安装部署--flannel
  • Vue 2 项目中快速集成 Jest 单元测试(超详细教程)
  • 云计算学习100天-第23天
  • github 上传代码步骤
  • 【Python】新手入门:python模块是什么?python模块有什么作用?什么是python包?
  • Day13_【DataFrame数据组合merge连接】【案例】
  • 嵌入式开发学习———Linux环境下网络编程学习(三)
  • 第5.5节:awk算术运算
  • RabbitMQ:交换机(Exchange)
  • LeetCode-17day:贪心算法
  • 95、23种设计模式之建造者模式(4/23)
  • 大模型 + 垂直场景:搜索/推荐/营销/客服领域开发新范式与技术实践
  • 抓取手机游戏相关数据
  • 细化的 Spring Boot 和 Spring Framework 版本对应关系
  • c++计算器(简陋版)
  • 【全面推导】策略梯度算法:公式、偏差方差与进化
  • 差分(附带例题题解)
  • 深度学习 --- 基于ResNet50的野外可食用鲜花分类项目代码
  • 基于单片机身体健康监测/身体参数测量/心率血氧血压
  • 接口性能测试工具 - JMeter
  • . keepalived+haproxy
  • Ubuntu22.04安装docker最新教程,包含安装自动脚本
  • 【QT入门到晋级】进程间通信(IPC)-socket(包含详细分析及性能优化)
  • Day08 Go语言学习