博客
关于我
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/

    你可能感兴趣的文章
    MSCRM调用外部JS文件
    查看>>
    MSTP是什么?有哪些专有名词?
    查看>>
    Mstsc 远程桌面链接 And 网络映射
    查看>>
    Myeclipse常用快捷键
    查看>>
    MyEclipse用(JDBC)连接SQL出现的问题~
    查看>>
    myeclipse的新建severlet不见解决方法
    查看>>
    MyEclipse设置当前行背景颜色、选中单词前景色、背景色
    查看>>
    MyEclipse配置SVN
    查看>>
    MTCNN 人脸检测
    查看>>
    MyEcplise中SpringBoot怎样定制启动banner?
    查看>>
    MyPython
    查看>>
    MTD技术介绍
    查看>>
    mysql
    查看>>
    MTK Android 如何获取系统权限
    查看>>
    MySQL - 4种基本索引、聚簇索引和非聚索引、索引失效情况、SQL 优化
    查看>>
    MySQL - ERROR 1406
    查看>>
    mysql - 视图
    查看>>
    MySQL - 解读MySQL事务与锁机制
    查看>>
    mysql 1264_关于mysql 出现 1264 Out of range value for column 错误的解决办法
    查看>>
    mysql 1593_Linux高可用(HA)之MySQL主从复制中出现1593错误码的低级错误
    查看>>