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

从零开始的云计算生活——番外4,使用 Keepalived 实现 MySQL 高可用

目录

前言

一、架构原理​

​Keepalived 作用​

​MySQL 主从复制​

二、环境准备​ 

服务器要求​:

      安装基础软件​

三、配置 MySQL 主从复制

四、配置 Keepalived

主节点配置​(/etc/keepalived/keepalived.conf)

从节点配置

五、启动与验证

六、注意事项​


前言

        使用 Keepalived 实现 MySQL 高可用(HA)的核心是通过 ​虚拟 IP(VIP)漂移​ 在主节点故障时自动切换流量到备用节点,结合 MySQL 主从复制保证数据一致性。以下是详细步骤和配置说明:

一、架构原理

  1. Keepalived 作用

    • 基于 VRRP 协议管理 VIP,主节点正常时持有 VIP。
    • 通过健康检查脚本监控 MySQL 服务状态,若主节点故障,VIP 漂移到备用节点。
    • 客户端通过 VIP 访问 MySQL,无需感知后端节点切换
  2. MySQL 主从复制

    • 主节点(Master)处理写请求,从节点(Slave)同步数据。
    • 故障切换后,原从节点提升为新主节点(需配合复制配置或工具)

二、环境准备​ 

  1. 服务器要求​:

    • 两台 Linux 服务器(如 CentOS 7+),分别部署 MySQL 主从复制。
    • 示例 IP:
      • 主节点:192.168.71.177
      • 从节点:192.168.71.169
    • 虚拟 IP(VIP):192.168.71.100

      安装基础软件

# 在两台服务器上安装 MySQL 和 Keepalived
yum install -y mysql-server keepalived
systemctl enable mysqld keepalived

三、配置 MySQL 主从复制

创建了一个测试用的数据库

主节点配置​(my.cnf):

[mysqld]
server-id = 1
log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db = your_database  # 需同步的数据库

从节点配置(my.cnf)

[mysqld]
server-id = 2
relay-log = /var/log/mysql/mysql-relay-bin

启动复制

-- 在主节点创建复制用户
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

-- 在从节点配置主库信息
CHANGE MASTER TO
  MASTER_HOST='192.168.71.177',
  MASTER_USER='repl',
  MASTER_PASSWORD='password';
START SLAVE;

验证同步:SHOW SLAVE STATUS\G 检查 Slave_IO_Running: Yes

四、配置 Keepalived

主节点配置​(/etc/keepalived/keepalived.conf

global_defs {router_id mysql_master  # 唯一标识,建议用主机名
}vrrp_script chk_mysql {script "/usr/bin/mysqladmin ping"  # MySQL 健康检查命令interval 2                          # 每 2 秒检查一次weight 2                            # 检查失败时降低优先级
}vrrp_instance VI_1 {state MASTERinterface eth0                      # 绑定 VIP 的网卡virtual_router_id 51                # 集群 ID,主从必须一致priority 100                        # 主节点优先级更高(范围 1-254)advert_int 1                        # 心跳间隔authentication {auth_type PASSauth_pass 1111                  # 主从密码需相同}virtual_ipaddress {192.168.71.100/24 dev eth0       # VIP 配置}track_script {chk_mysql                       # 引用健康检查脚本}notify_master "/path/to/promote_script.sh"  # 切换为主时执行的脚本(可选)
}

从节点配置

五、启动与验证

启动服务​:

故障转移测试​:

模拟主节点故障

观察 VIP 漂移​:
在从节点执行 ip addr,应看到 VIP 绑定到从节点网卡。

主:

从:

客户端连接测试​:

恢复主节点​:

  • 重启主节点 MySQL 后,若需切回 VIP,可手动重启主节点 Keepalived(或通过优先级调整)

此时从节点无法登录

六、注意事项

  1. 数据一致性风险​:
    • 主从复制延迟可能导致数据丢失。建议启用半同步复制(Semi-Sync Replication)或 GTID
  2. 脑裂问题​:
    • 确保 virtual_router_id 唯一,避免多个集群冲突
  3. 自动切换限制​:
    • Keepalived 仅负责 VIP 漂移,​不会自动切换 MySQL 主从角色。需配合脚本或工具(如 MHA、Orchestrator)实现完整故障转移
  4. 监控与告警​:
    • 配置 Keepalived 邮件通知(global_defs 区块),实时感知切换事件

http://www.lryc.cn/news/590000.html

相关文章:

  • PyTorch 损失函数详解:从理论到实践
  • 《通信原理》学习笔记——第二章
  • Qt小组件 - 7 SQL Thread Qt访问数据库ORM
  • qt udp接收时 丢包
  • FreeRTOS学习笔记之任务调度
  • 《机器学习数学基础》补充资料:标准差与标准化
  • 《Qt信号与槽机制》详解:从基础到实践
  • Qt中实现文件(文本文件)内容对比
  • 若依框架下前后端分离项目交互流程详解
  • ScratchCard刮刮卡交互元素的实现
  • MR 处于 WIP 状态的WIP是什么
  • Django+Celery 进阶:Celery可视化监控与排错
  • 手撕Spring底层系列之:IOC、AOP
  • hadoop 集群问题处理
  • gem install报错解析
  • mac电脑无法阅读runc源码
  • UE5多人MOBA+GAS 24、创建属性UI(一)
  • 从 “洗澡难” 到 “洗得爽”:便携智能洗浴机如何重塑生活?
  • RK3566-EVB开发板如何新建一个产品分支
  • Jetpack Compose 中 Kotlin 协程的使用
  • 基于Hadoop与LightFM的美妆推荐系统设计与实现
  • Chrome紧急更新,谷歌修复正遭活跃利用的关键零日漏洞
  • iPhone 数据擦除软件评测(最新且全面)
  • 力扣面试150题--建立四叉树
  • 分布式光伏气象站:光伏产业的智慧守护者
  • 秘塔AI搜索的深度研究推出:它的“免费午餐”还能走多远?
  • 分布式弹性故障处理框架——Polly(1)
  • PyCharm(入门篇)
  • Python设计模式深度解析:建造者模式(Builder Pattern)完全指南
  • vivo S30评测:用设计诠释科技,以性能书写情怀