博客
关于我
MySQL 高可用性之keepalived+mysql双主
阅读量:796 次
发布时间:2023-02-11

本文共 2151 字,大约阅读时间需要 7 分钟。

Keepalived + MySQL 双主高可用架构配置实践

在生产环境中部署高可用系统是确保业务连续性的重要手段。本文将详细介绍如何利用 Keepalived 和 MySQL 双主架构实现 MySQL 的高可用性。

主从复制原理

在这个高可用架构中,主从复制是关键的实现机制。主服务器 (Master) 记录二进制日志,而从服务器 (Slave) 将这些日志复制到本地的中继日志中。具体流程如下:

  • 二进制日志记录:主服务器在每个事务完成之前,将数据更改记录到二进制日志中。
  • 中继日志复制:从服务器从主服务器的二进制日志中读取事件,将其写入本地的中继日志。
  • SQL 线程处理:从服务器使用 SQL 线程将中继日志中的事件重新放到本地数据库中,使数据与主服务器保持一致。
  • 通过这种方式,主从复制确保了数据的一致性和高可用性。

    Keepalived 安装与配置

    Keepalived 是一个开源的高可用性解决方案,常用于实现虚拟IP (VIP) 的负载均衡和故障转移。以下是 Keepalived 的安装和配置步骤:

    1. 安装 Keepalived

    在两台服务器 (master1 和 master2) 上安装 Keepalived 软件包。注意,在安装之前,需要先安装以下依赖软件包:

    yum install kernel-devel openssl-devel popt-devel

    在 CentOS 7 上,默认已经支持 Keepalived 的安装,不需要手动指定内核目录。

    安装完成后,Keepalived 会自动生成初始脚本文件 /etc/init.d/keepalived,但需要手动添加为系统服务:

    chmod 755 /etc/init.d/keepalivedchkconfig keepalived on

    2. 配置 Keepalived

    Keepalived 的配置文件为 /etc/keepalived.conf,主要包含以下配置项:

    global_defs

    global_defs {    router_id MYSQL-1}

    vrrp_instance

    vrrp_instance VI_1 {    state BACKUP    interface ens33    virtual_router_id 51    priority 100    auth_type PASS    auth_pass 1111    virtual_ipaddress 192.168.0.30/32 3306    delay_loop 2    lb_algo rr    lb_kind DR    persistence_timeout 60    protocol TCP    real_server 192.168.0.10/32 3306    weight 3    notify_down /etc/keepalived/bin/mysql.sh    TCP_CHECK {        connect_timeout 3        nb_get_retry 3        delay_before_retry 3        connect_port 3306    }}

    3. 创建 MySQL 停止脚本

    在两台服务器上创建以下脚本,用于检测到 MySQL 服务停止时自动关闭 Keepalived:

    #!/bin/bash# 检查 MySQL 服务状态status=$(mysqldsafe --status | grep -c "Percona server is running")if [ $status -eq 0 ]; then    # 停止 Keepalived    systemctl stop keepalivedfi

    脚本需保存为 mysql.sh,并在 keepalived.conf 中指定路径。

    测试与验证

    1. 查看 VIP 控制权

    在 master1 和 master2 上运行以下命令,查看 VIP 的控制权:

    ip addr show dev ens33 | grep 192.168.0.30

    2. 停止 MySQL 服务

    在 master1 上停止 MySQL 服务,观察 Keepalived 是否能自动触发脚本,完成故障转移。

    3. 启动 Keepalived 服务

    在两台服务器上启动 Keepalived 服务:

    systemctl start keepalived

    注意事项

  • Keepalived 模式设置:建议两台服务器都设置为 BACKUP 模式,并开启 nopreempt 选项,避免因脑裂等问题导致服务抢占。
  • 自增字段设置:确保两台服务器的 auto_increment_incrementauto_increment_offset 不同,避免主从复制失败导致的自增冲突。
  • 硬件配置要求:从服务器的硬件配置不能低于主服务器,否则可能导致复制延迟或失败。
  • 通过以上配置,Keepalived + MySQL 双主架构能够有效实现 MySQL 的高可用性,确保业务的连续性和稳定性。

    转载地址:http://ldbfk.baihongyu.com/

    你可能感兴趣的文章
    Mysql学习总结(6)——MySql之ALTER命令用法详细解读
    查看>>
    Mysql学习总结(70)——MySQL 优化实施方案
    查看>>
    Mysql学习总结(71)——MySQL 重复记录查询与删除总结
    查看>>
    Mysql学习总结(71)——数据库介绍(MySQL安装 体系结构、基本管理)再回顾
    查看>>
    Mysql学习总结(72)——MySQL 开发者开发,设计规范再总结
    查看>>
    Mysql学习总结(73)——MySQL 查询A表存在B表不存在的数据SQL总结
    查看>>
    Mysql学习总结(74)——慢SQL!压垮团队的最后一根稻草!
    查看>>
    Mysql学习总结(75)——并发量大、数据量大的互联网业务数据库设计军规
    查看>>
    Mysql学习总结(76)——MySQL执行计划(explain)结果含义总结
    查看>>
    Mysql学习总结(77)——温故Mysql数据库开发核心原则与规范
    查看>>
    Mysql学习总结(78)——MySQL各版本差异整理
    查看>>
    Mysql学习总结(79)——MySQL常用函数总结
    查看>>
    Mysql学习总结(7)——MySql索引原理与使用大全
    查看>>
    Mysql学习总结(80)——统计数据库的总记录数和库中各个表的数据量
    查看>>
    Mysql学习总结(81)——为什么MySQL不推荐使用uuid或者雪花id作为主键?
    查看>>
    Mysql学习总结(82)——MySQL逻辑删除与数据库唯一性约束如何解决?
    查看>>
    Mysql学习总结(83)——常用的几种分布式锁:ZK分布式锁、Redis分布式锁、数据库分布式锁、基于JDK的分布式锁方案对比总结
    查看>>
    Mysql学习总结(84)—— Mysql的主从复制延迟问题总结
    查看>>
    Mysql学习总结(85)——开发人员最应该明白的数据库设计原则
    查看>>
    Mysql学习总结(8)——MySql基本查询、连接查询、子查询、正则表达查询讲解
    查看>>