• ADADADADAD

    怎么用KeepAlived搭建MySQL高可用环境[ mysql数据库 ]

    mysql数据库 时间:2024-11-28 13:24:19

    作者:文/会员上传

    简介:

    使用KeepAlived搭建MySQL的高可用环境。首先搭建MySQL的主从复制在Master开启binlog,创建复制帐号,然后在Slave输入命令change master tomaster_host='192.168.1.70&#39

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。



    使用KeepAlived搭建MySQL的高可用环境。
    首先搭建MySQL的主从复制
    在Master开启binlog,创建复制帐号,
    然后在Slave输入命令

      change master to

      master_host='192.168.1.70',

      master_port=3306,

      master_user='xx',

      master_password='xx';

    然后使用start slave开启复制。

    然后编译安装KeepAlived
    进入keepalived-1.2.12目录
    然后使用
    ./configure
    make && make install

    然后在Master服务器编辑KeepAlived的配置文件
    vim /etc/keepalived/keepalived.conf

      ! Configuration File for keepalived

      global_defs {

      router_id HA_MySQL

      }

      vrrp_instance VI_1 {

      state BACKUP

      interface eth0

      virtual_router_id 51

      priority 100

      advert_int 1

      nopreempt

      authentication {

      auth_type PASS

      auth_pass 1111

      }

      virtual_ipaddress {

      192.168.1.199

      }

      }

      virtual_server 192.168.1.199 3306 {

      delay_loop 2

      lb_algo wrr

      lb_kind DR

      persistence_timeout 60

      protocol TCP

      real_server 192.168.1.70 3306 {

      weight 3

      notify_down /root/shutdown.sh

      TCP_CHECK {

      connect_timeout 10

      nb_get_retry 3

      delay_before_retry 3

      connect_port 3306

      }

      }

      }

    然后编辑Slave的配置文件
    vim /etc/keepalived/keepalived.conf

      ! Configuration File for keepalived

      global_defs {

      router_id HA_MySQL

      }

      vrrp_instance VI_1 {

      state BACKUP

      interface eth0

      virtual_router_id 51

      priority 90

      advert_int 1

      nopreempt

      authentication {

      auth_type PASS

      auth_pass 1111

      }

      virtual_ipaddress {

      192.168.1.199

      }

      }

      virtual_server 192.168.1.199 3306 {

      delay_loop 2

      lb_algo wrr

      lb_kind DR

      persistence_timeout 60

      protocol TCP

      real_server 192.168.1.80 3306 {

      weight 3

      notify_down /root/shutdown.sh

      TCP_CHECK {

      connect_timeout 10

      nb_get_retry 3

      delay_before_retry 3

      connect_port 3306

      }

      }

      }

    其中
    priority 表示优先级
    virtual_ipaddress 虚拟的IP地址(VIP)
    delay_loop每个2秒检查一次real_server状态
    notify_down 检测到服务down后执行的脚本
    connect_timeout 连接超时时间
    nb_get_retry 重连次数
    delay_before_retry 重连间隔时间
    connect_port 健康检查端口

    shutdown.sh 可以考虑加入邮件告警的功能。

      #!/bin/bash

      pkill keepalived


    在两个服务器上启动MySQL和KeepAlived服务
    service mysql start
    service keepalived start

    Master的server_id为1
    Slave的server_id为2

    然后 连接VIP的MySQL,可以看到已经连接到了Master服务器(server_id为1)



    如果kill掉Master的MySQL,KeepAlived会自动转移到Slave

    在Master服务器上执行
    killall mysqld

    然后再次查看server_id,
    短暂的失去连接之后,再次连接上VIP,server_id已经变为2,说明VIP已经指向了Slave



    nopreempt参数表示Master恢复正常之后,是否将VIP继续指向Master
    这样的话,会再次引发切换。

    两台服务器的KeepAlived会有心跳检测,
    如果Master的MySQL服务挂了(3306端口挂了),那么他会选择自杀.
    Slave的KeepAlived通过心跳检测发现这个情况,就会将VIP的请求接管。

    KeepAlived还有很多参数没有明白是什么意思
    生产环境的切换脚本,在Slave提升为Master之后,应该等待所有的中继日志应用完毕,否则可能丢失数据

    参考:
    http://blog.csdn.net/wzy0623/article/details/38587839

    怎么用KeepAlived搭建MySQL高可用环境.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: keepalivedmysql