我们来学mysql -- keepalive主从高可用

简明扼要

  • 搭建mysql的主从
  • 八股文如是:主用来写,从作为读(大量报表业务或其他读较多的需求)
    • 实际业务中,从顶多就是个备份
    • 至少binlog被破坏,数据在从还有一份
  • 或许正是源于此种解释,客户认为我认为的不是他认为的
  • 便有了这样的需求
    • 主节点下线,数据服务要能切换到从
  • 呵呵,那便有了keepalive,便会造成两种情况
    • 主恢复了后,主从关系易位
      • 涉及将从的数据恢复到主(此时做了些业务,从的数据多余主)
      • 修改my.cnf配置,调整主从
    • 保持之前主从关系
      • 从的数据恢复到主(此时做了些业务,从的数据多余主)
      • 开启主从
  • 友情提示
    • 本篇只是验证数据服务的切换,上述的两种情况不做记录
    • 本篇通过主数据服务的下线,关闭KP,实现切换

安装KP

场景

  • 两台服务器,都安装了KP
  • 两台服务器,做了mysql主从
  • 主mysql下线,从mysql提供数据服务

“高可用”配置

主keepalived.conf

  • 配置 authentication 两个节点一样
  • 配置virtual_ipaddress 未被占用的IP
  • 配置 interface 实际的网卡
  • 配置 virtual_router_id 虚拟路由id,双节点需要一致
  • 配置 priority 优先级,以优先级为主,state 没啥意义
  • 配置 vrrp_script 检测脚本
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script mysql_check {  # 健康检查脚本,通过命令判断MySQL的状态值,如果状态值不为零,则MySQL异常,停止keepalived服务,VIP将飘逸到另一台backup上面。
	script "/u01/soft/oracle/script/mysql_check.sh" # 脚本别忘了加上可执行权限。
	interval 2 # 没2秒检查一次
	# weight -30 # 检查失败,优先级减30
}

vrrp_instance VI_1 {
    state MASTER
    interface ens192 # 实际网卡名称
    virtual_router_id 51 # 虚拟路由id,双节点需要一致
    priority 100 # 主节点优先级
    advert_int 1
    # 认证密码,双节点需一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {	
        mysql_check        # 使用vrrp_script定义的名称
    }
    virtual_ipaddress {
        10.2.0.200
    }

    # Allow packets addressed to the VIPs above to be received
    accept
}

从keepalived.conf

  • 除了优先级,其他都一样
  • 当然,网卡要配置当前服务器的
  • 没有数据库检测的脚本
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface ens192 # 实际网卡名称
    virtual_router_id 51 # 虚拟路由id,双节点需要一致
    priority 90 # 节点优先级
    advert_int 1
    # 认证密码,双节点需一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {	
    }
    virtual_ipaddress {
        10.2.0.200
    }

    # Allow packets addressed to the VIPs above to be received
    accept
}

mysql_check.sh

  • 检查不到数据库服务,关闭KP
#!/bin/bash

ss -tnl |grep 3308
i=$?

ps -ef | grep mysqld |grep -v color |grep -v "grep mysqld"
j=$?

mysql -uroot -proot@000 -e "select version();"
k=$?

if [ $i -ne 0 -a $j -ne 0 -a $k -ne 0 ];then
# 通过命令判断MySQL的状态值,如果状态值不为零,则MySQL异常,停止keepalived服务,VIP将飘逸到另一台backup上面。
  systemctl stop keepalived
  exit 1
else
  exit 0
fi

高可用验证

KP运行情况

在这里插入图片描述
在这里插入图片描述

通过vip连接mysql

在这里插入图片描述

vip连接上创建数据库

在这里插入图片描述

关闭主库所在服务器的KP

在这里插入图片描述
在这里插入图片描述

vip连接上再次创建数据库

在这里插入图片描述

结尾

  • 给个赞呦!!!
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UCoding

说话好听~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值