当前位置: 首页 > 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.dtcms.com/a/282134.html

相关文章:

  • Django 接口自动化测试平台实现(一)
  • 蓝光三维扫描技术:汽车轮毂轴承模具检测的高效解决方案
  • 【tower】Rust tower库原理详解以及axum限流实战
  • 在新闻资讯 APP 底部切换不同类型界面,部分界面可以通过 ViewPager 实现滑动切换
  • 枫清科技参编的《人工智能知识工程指南(1.0)》发布
  • 压力测试Apache Bench(ab)
  • 从缓存 CAS 看Kimi K2使用的MuonClip优化器
  • 电力政策解读:山东电网新型储能集中调用的能源管理系统实现点
  • LinkedList集合源码解析
  • 超级天才如何批量制造?天才成长引擎模型:超级天才 = (学习速度泛化力 × 创造力 × 专注力) × 驱动力
  • python基础②-数据结构
  • AlpineLinux的用户管理
  • conda activate 时报错: CondaError: Run ‘conda init‘ before ‘conda activate‘
  • XC7A75T‑2FGG484I Xilinx Artix‑7 FPGA AMD
  • go项目实战
  • 深入解析Linux进程地址空间与虚拟内存管理
  • 虚拟内存管理--请求分页管理方式
  • 15.dispatcherRunner启动
  • 图机器学习(10)——监督学习中的图神经网络
  • LLM大语言模型不适合统计算数,可以让大模型根据数据自己建表、插入数据、编写查询sql统计
  • ether.js的calldata
  • 探索阿里云DMS:解锁高效数据管理新姿势
  • 【WRFDA数据教程第一期】LITTLE_R 格式详细介绍
  • 常用 Benchmark 总结-GPT 4.1、GPT 4.5、DeepSeek模型
  • 【游戏引擎之路】登神长阶(十七):Humanoid动画——长风破浪会有时,直挂云帆济沧海
  • 联网工人安全解决方案:技术赋能下的安全新范式
  • Django REST Framework 入门指南:从 0 到 1 实现 RESTful API
  • 【LLM】OpenRouter调用Anthropic Claude上下文缓存处理
  • cudaOccupancyMaxActiveBlocksPerMultiprocessor配置内核的线程块大小
  • Linux运维新手的修炼手扎之第18天