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

mysql双主模式下基于keepalived的虚拟ip实现高可用模式搭建

数据库安装和升级和双主配置的操作可以参考我的另一篇文章:
数据库安装和升级和双主配置

1、在两台服务器都下载和安装keepalived

下载:
yumdownloader --resolve keepalived
下载后得到:

[root@localhost keepalivedRpm]# ll
总用量 1896
-rw-r--r--. 1 root root  39568 8月  23 2019 ipset-7.1-1.el7.x86_64.rpm
-rw-r--r--. 1 root root  65112 8月  23 2019 ipset-libs-7.1-1.el7.x86_64.rpm
-rw-r--r--. 1 root root 339840 10月 15 2020 keepalived-1.3.5-19.el7.x86_64.rpm
-rw-r--r--. 1 root root 723960 1月  26 2024 net-snmp-agent-libs-5.7.2-49.el7_9.4.x86_64.rpm
-rw-r--r--. 1 root root 770000 1月  26 2024 net-snmp-libs-5.7.2-49.el7_9.4.x86_64.rpm

安装:
rpm -ivh keepalived*
遇到报错后,提示哪个就先安装哪个。

安装完成后,查看版本:
rpm -qa | grep keepalived # 应输出 keepalived 版本号

2、配置keepalived

第一台:
vi /etc/keepalived/keepalived.conf

global_defs {router_id MYSQL_MASTER1  # 唯一标识符
}vrrp_script chk_mysql {script "/etc/keepalived/check_mysql.sh"  # 检查 MySQL 进程是否存在user root   # 确保使用 root 用户或存在的用户
#   weight -20  # 失败后降低的优先级interval 2                                # 每3秒检测一次timeout 2                                 # 超时时间fall 1                                    # 失败x次则切换rise 1                                    # 成功x次认为恢复
}vrrp_instance VI_1 {state MASTER          # 从库设为 BACKUPinterface enp0s3        # 替换为你的网卡名称(如 ens192)virtual_router_id 51   # 与集群内其他节点一致priority 100          # 主库优先级高于从库(如 100,从库设为 90)advert_int 1         # 心跳间隔(秒)authentication {auth_type PASSauth_pass 1111    # 集群内节点密码一致}virtual_ipaddress {192.168.0.233/24  # 你的 VIP 地址}track_script {chk_mysql}
}

第二台:

global_defs {router_id MYSQL_MASTER2  # 唯一标识符
}vrrp_script chk_mysql {script "/etc/keepalived/check_mysql.sh"  # 检查 MySQL 进程是否存在user root   # 确保使用 root 用户或存在的用户
#   weight -20  # 失败后降低的优先级interval 2                                # 每3秒检测一次timeout 2                                 # 超时时间fall 1                                    # 失败3次则切换rise 1                                    # 成功2次认为恢复
}vrrp_instance VI_1 {state BACKUP          # 初始状态为BACKUPinterface enp0s3        # 替换为你的网卡名称(如 ens192)virtual_router_id 51  # 与集群内其他节点一致priority 90          # 主库优先级高于从库(如 100,从库设为 90)advert_int 1        # VRRP通告间隔authentication {auth_type PASSauth_pass 1111    # 集群内节点密码一致}virtual_ipaddress {192.168.0.233/24  # 你的 VIP 地址}track_script {chk_mysql}
}

chk_mysql脚本如下:
vi /etc/keepalived/check_mysql.sh

#!/bin/bash
# 检查MySQL服务是否运行
if ! pgrep -x "mysqld" > /dev/null; thenecho 1exit 1
fi
echo 0
exit 0

赋予执行权限:
chmod +x /etc/keepalived/check_mysql.sh

3、启动keepalived

两台服务器都启动:

systemctl start keepalived
systemctl enable keepalived

查看 VIP 是否生效:
ip addr show

4、测试vip的自动切换

连接虚拟ip,然后停止一台mysql
systemctl stop mysqld
经过实测,停止后切换的时候可能会连接失败一次,然后就恢复正常。

http://www.xdnf.cn/news/709759.html

相关文章:

  • spark-AQE/Tungsten介绍及其触发条件
  • 接口自动化测试(六)
  • Kotlin委托机制使用方式和原理
  • ABP 框架集成 EasyAbp.Abp.GraphQL 构建高性能 GraphQL API
  • macOS 安装 Grafana + Prometheus + Node Exporter
  • React从基础入门到高级实战:React 生态与工具 - React 单元测试
  • 嵌入式软件--stm32 DAY 8.5 基础复习总结
  • Vue-列表过滤排序
  • 手机设备多?怎样设置IP保证不关联
  • [Redis] Redis:高性能内存数据库与分布式架构设计
  • 深入理解 Pinia:Vue 状态管理的革新与实践
  • 【MySQL】C语言连接
  • 十、【核心功能篇】项目与模块管理:前端页面开发与后端 API 联调实战
  • MySQL进阶篇(存储引擎、索引、视图、SQL性能优化、存储过程、触发器、锁)
  • 敏捷开发中如何避免迭代失控
  • 大数据学习(124)-spark数据倾斜
  • YOLOX 的动态标签分类(如 SimOTA)与 Anchor-free 机制解析2025.5.29
  • C++中IO文件输入输出知识详解和注意事项
  • Spring:从青铜到王者,你的Java修炼手册
  • MySQL入门笔记
  • AI新手入门解锁元生代MaaS平台:API工作流调用全攻略
  • 行业沙龙 | 博睿数据联合承办2025 湾区金科(FinTech)沙龙——智能运维专场,分享主题演讲
  • 基于Web的分布式图集管理系统架构设计与实践
  • grid网格布局
  • day40 python图像数据与显存
  • 嵌入式鸿蒙系统中水平和垂直以及图片调用方法
  • 纯数据挖掘也能发Microbiome?
  • pikachu靶场通关笔记07 XSS关卡03-存储型XSS
  • DeepSeek 赋能卫星遥感:AI 驱动数据分析新范式
  • ubuntu 22.04安装k8s高可用集群