• 技术文章 >数据库 >mysql教程

    关于MySQL 的高可用性:Keepalived 双主热备

    jacklovejacklove2018-06-08 09:55:26原创1261
    通常说的「双机热备」是指两台机器都在运行,但并不是两台机器都同时在提供服务。当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短。

    Keepalived的工作原理是VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议。在VRRP中有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。

    VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑概念。一组VRRP路由器协同工作,共同构成一台虚拟路由器。 Vrrp中存在着一种选举机制,用以选出提供服务的路由即主控路由,其他的则成了备份路由。当主控路由失效后,备份路由中会重新选举出一个主控路由,来继续工作,来保障不间断服务。

    环境描述:

    OS:Ubuntu16.04
    MASTER:172.16.29.205
    BACKUP:172.16.29.197
    VIP:172.16.29.206

    [root@masterr ~]# vi /etc/keepalived/keepalived.conf
    global_defs {
    notification_email {
    test@sina.com
     }
    notification_email_from  admin@test.com
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id MYSQL_HA      #标识,双主相同
     }
    vrrp_instance VI_1 {
     state BACKUP           #两台都设置BACKUP
     interface eth0
     virtual_router_id 51       #主备相同
     priority 100           #优先级,backup设置90
     advert_int 1
     nopreempt             #不主动抢占资源,只在master这台优先级高的设置,backup不设置
     authentication {
     auth_type PASS
     auth_pass 1111
     }
     virtual_ipaddress {
     172.16.29.206
     }
    }
    virtual_server 172.16.29.206 3306 {
     delay_loop 2
     #lb_algo rr              #LVS算法,用不到,我们就关闭了
     #lb_kind DR              #LVS模式,如果不关闭,备用服务器不能通过VIP连接主MySQL
     persistence_timeout 50  #同一IP的连接60秒内被分配到同一台真实服务器
     protocol TCP
     real_server 172.16.29.205 3306 {   #检测本地mysql,backup也要写检测本地mysql
     weight 3
     notify_down /etc/keepalived/mysql.sh    #当mysq服down时,执行此脚本,杀死keepalived实现切换
     TCP_CHECK {
     connect_timeout 3    #连接超时
     nb_get_retry 3       #重试次数
     delay_before_retry 3 #重试间隔时间
      }
    }   
    [root@masterr ~]# vi /usr/local/keepalived/mysql.sh
    #!/bin/bash
    sudo service keepalived stop
    [root@masterr ~]# chmod +x /usr/local/keepalived/mysql.sh
    [root@masterr ~]# /etc/init.d/keepalived start

    backup服务器只修改priority为90、nopreempt不设置、real_server设置本地IP。

    3、测试高可用性

    1.通过Mysql客户端通过VIP连接,看是否连接成功。

    2.停止master这台mysql服务,是否能正常切换过去,可通过ip addr命令来查看VIP在哪台服务器上。

    3.可通过查看/var/log/messges日志,看出主备切换过程

    4.master服务器故障恢复后,是否主动抢占资源,成为活动服务器。

    本文讲解了利用Keepalived ,让MySQL 实现高可用性,更多相关推荐请关注php中文网。

    相关推荐:

    使用php写出几种常见的排序算法程序

    PHP如何判断是否为AJAX请求?

    php程序报date()警告的处理的解决方法

    php入门到就业线上直播课:查看学习

    以上就是关于MySQL 的高可用性:Keepalived 双主热备的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    千万级数据并发解决方案(理论+实战):点击学习

    Mysql单表千万级数据量的查询优化与性能分析

    Mysql主从原理及其在高并发系统中的应用

    专题推荐:MySQL,Keepalived
    上一篇:用SQL进行集合运算 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 实例分析MySQL中pt-query-digest工具的使用记录• 简单聊聊MySQL中join查询• 深入理解MySQL索引优化器工作原理• MySQL子查询详细教程• MySQL关于Count函数的用法区别总结
    1/1

    PHP中文网