博客
关于我
MySQL高可用之——keepalived+互为主从
阅读量:790 次
发布时间:2023-02-13

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

配置Keepalived双机热备架构与MySQL主从复制

环境概述

  • 操作系统:Red Hat Enterprise Linux 6.4
  • 数据库:Percona Server 5.6.15
  • 虚拟IP(VIP):192.168.17.166
  • 主机名
    • Master1: zlm177, IP: 192.168.17.177
    • Master2: zlm188, IP: 192.168.17.188

一、软件安装

  • 下载与安装keepalived

    • latest版本为1.2.13,下载地址:keepalived-1.2.13.tar
    • 解压并编译:
      cp keepalived-1.2.13.tar /usr/local/srccd /usr/local/srctar zxvf keepalived-1.2.13.tar -C /optcd /opt/keepalived-1.2.13./configure --prefix=/usr/local/keepalivedmake; make install
    • 编译时需安装gcc和openssl:
      yum install gccyum install openssl openssl-devel
  • 默认配置路径

    • keepalived的配置文件默认路径:/usr/local/keepalived/etc/keepalived/keepalived.conf
  • 二、VRRP配置

  • 主节点配置

    • 打开主节点的配置文件:
      vim /usr/local/keepalived/etc/keepalived/keepalived.conf
    • 清空原有内容并添加以下配置:
      global_defs {    notification_email {        aaron8219@xxx.xxx    }    router_id aaron8219}vrrp_instance my_177 {    state BACKUP    interface eth0    virtual_router_id 88    priority 90    advert_int 1    nopreempt {        authentication {            auth_type PASS            auth_pass 1234        }    }    virtual_ipaddress {        192.168.17.166    }    virtual_server {        192.168.17.166:3306 {            delay_loop 2            lb_algo wrr            lb_kind DR            persistence_timeout 60            protocol TCP            real_server {                192.168.17.177:3306 {                    weight 3                    notify_down /opt/mysql/mysql.sh                }            }            tcp_check {                connect_timeout 10                nb_get_retry 3                delay_before_retry 3                connect_port 3306            }        }    }}
    • virtual_router_id需与另一节点保持一致,router_id可任意设置。
  • 从节点配置

    • 从节点的配置文件修改:
      vim /usr/local/keepalived/etc/keepalived/keepalived.conf
    • 类似主节点配置,但state设为BACKUPpriority90virtual_router_id保持一致。
  • 注意事项

    • nopreempt仅在stateBACKUP时生效。
    • virtual_router_id必须一致,router_id可任意。
    • 主从节点的state可同时设为BACKUP,但需确保priority较高的节点能接管VIP。
  • 三、测试验证

  • 启动keepalived

    /usr/local/keepalived/sbin/keepalived -f /usr/local/keepalived/etc/keepalived/keepalived.conf -D
    • -D参数启用详细日志。
  • 验证启动状态

    tail -30f /var/log/messages
    • 查看启动日志,确保无错报。
  • VIP浮动测试

    • 关闭某一网络接口:
      ifdown eth0
    • 检查VIP状态:
      ip a show
    • 确保VIP仍可通过指定IP访问数据库。
  • 故障恢复测试

    • 停机测试:
      init 6
    • 检查VIP状态及数据库连通性。
  • keepalived进程管理

    • 杀死进程并验证:
      pkill keepalivedip a show
    • 确保VIP仍可通过指定IP访问数据库。
  • 四、数据库同步配置

  • 配置主从复制

    • 确保两端server-id不同,建议格式为IP+port。
    • 示例:Master1设置为1773306,Master2设置为1883306
  • 设置复制用户

    grant replication slave on *.* to 'rep'@'192.168.17.%' identified by 'rep';grant file, select on *.* to 'rep'@'%' identified by 'rep';
  • 初始化同步

    • 主库执行:
      reset master;flush tables with read lock;mysqldump -uroot -p --all-databases -l -F > full_db.sqlscp full_db.sql root@192.168.17.188:/data/mysql/percona_3306/data
    • 从库导入:
      mysql -uroot -p < /data/mysql/percona_3306/data/full_db.sql
  • 验证主从状态

    show master status\Gshow slave status\G
    • 确保master_log_posread_master_log_pos一致。
  • 启动从库

    change master to master_host='192.168.17.177', master_user='rep', master_password='rep', master_log_file='percona-bin.000001', master_log_pos='120';start slave;
    • 如遇到错误:
      Error: Slave I/O: Fatal error: Master and slave have same UUID...
      • 手动修改master.info文件中的UUID,或删除文件后重新初始化。
  • 测试数据一致性

    • 主库执行:
      insert into zlm.tb_zlm values(4, 'def');
    • 从库查询:
      select * from zlm.tb_zlm;
    • 确保数据一致。
  • 结论

    通过上述配置,实现了一个简单的MySQL高可用架构。无论哪一节点故障,VIP仍能正常提供数据库服务,确保系统的稳定性和可用性。

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

    你可能感兴趣的文章
    MySQL分组函数
    查看>>
    MySQL分组查询
    查看>>
    Mysql分表后同结构不同名称表之间复制数据以及Update语句只更新日期加减不更改时间
    查看>>
    mysql创建函数报错_mysql在创建存储函数时报错
    查看>>
    mysql加强(4)~多表查询:笛卡尔积、消除笛卡尔积操作(等值、非等值连接),内连接(隐式连接、显示连接)、外连接、自连接
    查看>>
    mysql加强(5)~DML 增删改操作和 DQL 查询操作
    查看>>
    mysql加强(6)~子查询简单介绍、子查询分类
    查看>>
    MySQL基础day07_mysql集群实例-MySQL 5.6
    查看>>
    Mysql基础命令 —— 数据库、数据表操作
    查看>>
    Mysql基础命令 —— 系统操作命令
    查看>>
    MySQL基础学习总结
    查看>>
    mysql基础教程三 —常见函数
    查看>>
    mysql基础教程二
    查看>>
    mysql基础教程四 --连接查询
    查看>>
    MySQL基础知识:创建MySQL数据库和表
    查看>>
    MySQL处理千万级数据分页查询的优化方案
    查看>>
    mysql备份
    查看>>
    mysql备份与恢复
    查看>>
    mysql备份工具xtrabackup
    查看>>
    MySQL外键约束
    查看>>