当前位置: 首页 > news >正文

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

keepalive主从高可用

  • 简明扼要
  • 安装KP
  • 场景
  • “高可用”配置
    • 主keepalived.conf
    • 从keepalived.conf
    • mysql_check.sh
  • 高可用验证
    • KP运行情况
    • 通过vip连接mysql
    • vip连接上创建数据库
    • 关闭主库所在服务器的KP
    • vip连接上再次创建数据库
  • 结尾

简明扼要

  • 搭建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 keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_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 MASTERinterface ens192 # 实际网卡名称virtual_router_id 51 # 虚拟路由id,双节点需要一致priority 100 # 主节点优先级advert_int 1# 认证密码,双节点需一致authentication {auth_type PASSauth_pass 1111}track_script {	mysql_check        # 使用vrrp_script定义的名称}virtual_ipaddress {10.2.0.200}# Allow packets addressed to the VIPs above to be receivedaccept
}

从keepalived.conf

  • 除了优先级,其他都一样
  • 当然,网卡要配置当前服务器的
  • 没有数据库检测的脚本
! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTERinterface ens192 # 实际网卡名称virtual_router_id 51 # 虚拟路由id,双节点需要一致priority 90 # 节点优先级advert_int 1# 认证密码,双节点需一致authentication {auth_type PASSauth_pass 1111}track_script {	}virtual_ipaddress {10.2.0.200}# Allow packets addressed to the VIPs above to be receivedaccept
}

mysql_check.sh

  • 检查不到数据库服务,关闭KP
#!/bin/bashss -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 keepalivedexit 1
elseexit 0
fi

高可用验证

KP运行情况

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

通过vip连接mysql

在这里插入图片描述

vip连接上创建数据库

在这里插入图片描述

关闭主库所在服务器的KP

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

vip连接上再次创建数据库

在这里插入图片描述

结尾

  • 给个赞呦!!!
    在这里插入图片描述
    在这里插入图片描述
http://www.xdnf.cn/news/980407.html

相关文章:

  • 线 性 数 据 结 构 双 雄:栈 与 队 列 的 原 理、实 现 与 应 用
  • K8S多维度问题排查
  • argocd部署cli工具并添加k8s集群
  • Spring cloud-k8s容器化部署
  • 6.10【Q】网络安全期末复习
  • 动态多目标进化算法:VARE(Vector Autoregressive Evolution)求解DF1-DF14,提供完整MATLAB代码
  • 线程(下)【Linux操作系统】
  • 鸿蒙Next仓颉语言开发实战教程:订单列表
  • 削皮刨结构化网格划分
  • Ubuntu 24.04 systemd-journald日志系统 journalctl 查看日志
  • 与AI联手,ModbusTCP 转Ethercat控制系统升级解决刚需新思路
  • 区块链世界的“破冰“之旅:比特币与以太坊首次组网全解析
  • 【MySQL进阶】MySQL程序
  • Spring Cache+Redis缓存方案 vs 传统redis缓存直接使用RedisTemplate 方案对比
  • 中心化交易所(CEX)架构:高并发撮合引擎与合规安全体系
  • Stream流常用方法大全
  • DAS-U250高性能分布式光纤声波传感器
  • 谷粒商城-分布式微服务 -集群部署篇[一]
  • MYSQL 字段切分特定值
  • 从 8 秒到 1 秒:前端性能优化的 12 个关键操作
  • 鱼书第三章代码MNIST
  • LVDS系列16:Xilinx 7系输出延迟ODELAYE2
  • AI实用特性
  • 使用R进行数字信号处理:婴儿哭声分析深度解析
  • Anaconda 迁移搭建完成的 conda 环境到另一台设备
  • 涨薪技术|Docker容器技术之镜像(image)
  • Object.defineProperty()详解
  • React 18 渲染机制优化:解决浏览器卡顿的三种方案
  • AX620Q上模型部署流程
  • Spring Security是如何完成身份认证的?