博客
关于我
MySQL 高可用性之keepalived+mysql双主
阅读量:791 次
发布时间: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 Connector/Net 句柄泄露
    查看>>
    multiprocessor(中)
    查看>>
    mysql CPU使用率过高的一次处理经历
    查看>>
    Multisim中555定时器使用技巧
    查看>>
    MySQL CRUD 数据表基础操作实战
    查看>>
    multisim变压器反馈式_穿过隔离栅供电:认识隔离式直流/ 直流偏置电源
    查看>>
    mysql csv import meets charset
    查看>>
    multivariate_normal TypeError: ufunc ‘add‘ output (typecode ‘O‘) could not be coerced to provided……
    查看>>
    MySQL DBA 数据库优化策略
    查看>>
    multi_index_container
    查看>>
    MySQL DBA 进阶知识详解
    查看>>
    Mura CMS processAsyncObject SQL注入漏洞复现(CVE-2024-32640)
    查看>>
    Mysql DBA 高级运维学习之路-DQL语句之select知识讲解
    查看>>
    mysql deadlock found when trying to get lock暴力解决
    查看>>
    Musetalk如何优化嘴部,提高清晰度?
    查看>>
    MuseTalk如何生成高质量视频(使用技巧)
    查看>>
    mutiplemap 总结
    查看>>
    MySQL DELETE 表别名问题
    查看>>
    Mutual Training for Wannafly Union #8 D - Mr.BG Hates Palindrome 取余
    查看>>
    MySQL Error Handling in Stored Procedures---转载
    查看>>