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

Keepalived实战:用MySQL主从高可用方案解决你的数据库单点故障

Keepalived与MySQL主从架构构建零宕机数据库高可用方案当数据库成为业务系统的核心支柱时单点故障可能意味着灾难性的业务中断。我曾亲历一次凌晨3点的数据库故障整个电商平台瘫痪两小时损失超过七位数。这次教训让我深刻认识到数据库高可用不是可选项而是生存底线。本文将分享如何用KeepalivedMySQL主从架构打造企业级高可用方案这套方案在金融、电商等对可用性要求苛刻的场景中经过实战检验。1. 高可用架构设计原理1.1 为什么传统主从复制不够标准的MySQL主从复制只能解决数据冗余问题当主库宕机时需要人工介入执行CHANGE MASTER命令提升从库。这个过程中平均故障恢复时间(MTTR)通常在15分钟以上应用需要手动修改连接配置存在数据不一致风险# 典型的主从切换操作人工介入 STOP SLAVE; RESET SLAVE ALL; SET GLOBAL read_only OFF;1.2 Keepalived如何解决痛点Keepalived基于VRRP协议实现虚拟IP(VIP)自动漂移配合健康检查脚本可构建全自动故障转移方案。其核心优势在于毫秒级故障检测默认1秒通告间隔零配置变更应用始终连接VIP无缝切换TCP会话保持不中断关键指标对比方案故障检测时间切换时间人工介入传统主从分钟级10min需要Keepalived方案秒级3s无需2. 生产环境部署实战2.1 系统架构规划推荐的双节点热备架构--------------------- | Application Layer | -------------------- | ------------------ | Virtual IP | | 192.168.10.29 | ------------------ | -------------------------------------------- | | ------------ ------------ | MySQL Master | | MySQL Slave | | Keepalived MASTER | | Keepalived BACKUP | | 192.168.10.30 | | 192.168.10.31 | --------------- ---------------2.2 增强版健康检查脚本原始脚本仅检查MySQL进程存在与否这可能导致僵尸MySQL情况。改进后的脚本增加了以下检测维度#!/bin/bash # 增强版MySQL健康检查脚本 MYSQL_USERmonitor MYSQL_PASSSecurePass123! SOCKET/var/lib/mysql/mysql.sock LOG_FILE/var/log/keepalived/mysql-check.log # 1. 检查进程存活 if ! pgrep -x mysqld /dev/null; then echo $(date) - MySQL process not running $LOG_FILE exit 1 fi # 2. 检查TCP端口监听 if ! ss -tln | grep -q :3306; then echo $(date) - MySQL port not listening $LOG_FILE exit 1 fi # 3. 检查可写状态主库专属 if mysql -u$MYSQL_USER -p$MYSQL_PASS -S $SOCKET -e SET GLOBAL read_only0 2$LOG_FILE; then # 4. 检查复制线程状态从库专属 SLAVE_STATUS$(mysql -u$MYSQL_USER -p$MYSQL_PASS -S $SOCKET -e SHOW SLAVE STATUS\G) if [[ -n $SLAVE_STATUS ]]; then IO_RUNNING$(echo $SLAVE_STATUS | grep Slave_IO_Running: | awk {print $2}) SQL_RUNNING$(echo $SLAVE_STATUS | grep Slave_SQL_Running: | awk {print $2}) [[ $IO_RUNNING ! Yes || $SQL_RUNNING ! Yes ]] exit 1 fi else echo $(date) - MySQL read_only check failed $LOG_FILE exit 1 fi # 5. 关键表查询测试 if ! mysql -u$MYSQL_USER -p$MYSQL_PASS -S $SOCKET -e SELECT 1 FROM mysql.user LIMIT 1 /dev/null; then echo $(date) - MySQL query test failed $LOG_FILE exit 1 fi exit 03. 高级配置技巧3.1 脑裂防护机制在跨机房部署时网络分区可能导致脑裂现象。解决方案多播检测配置额外的网络心跳检测仲裁节点引入第三方仲裁服务优先级调整设置nopreempt避免频繁切换vrrp_instance VI_1 { ... track_interface { eth0 weight -20 # 主网卡故障时降权 eth1 weight -10 # 备用网卡 } notify_master /etc/keepalived/scripts/notify_master.sh notify_backup /etc/keepalived/scripts/notify_backup.sh notify_fault /etc/keepalived/scripts/notify_fault.sh }3.2 状态变更通知通过notify脚本实现状态变更时的告警通知#!/bin/bash # notify_master.sh TYPE$1 NAME$2 STATE$3 case $STATE in MASTER) # 发送邮件/短信通知 echo 节点 $(hostname) 成为MASTER | mail -s Keepalived状态变更 adminexample.com # 自动激活主库读写 mysql -uroot -p$MYSQL_ROOT_PASS -e SET GLOBAL read_only0 ;; BACKUP) # 设置从库只读 mysql -uroot -p$MYSQL_ROOT_PASS -e SET GLOBAL read_only1 ;; FAULT) # 触发紧急告警 /usr/local/bin/send_alert Keepalived进入FAULT状态 ;; esac4. 验证与排错指南4.1 切换测试方案测试类型操作方法预期结果主库MySQL宕机systemctl stop mysqlVIP在3秒内漂移到备库主库Keepalived宕机systemctl stop keepalived立即切换网络中断ifdown eth0根据track_interface配置切换从库IO线程停止STOP SLAVE IO_THREAD主库保持VIP依赖健康检查4.2 常见问题排查问题1VIP不漂移检查步骤确认VRRP报文是否可达tcpdump -i eth0 vrrp检查防火墙规则iptables -L -n | grep 224.0.0.18验证健康检查脚本返回值手动执行看exit code问题2切换后应用连接失败解决方案检查应用连接池配置增加testOnBorrow参数配置MySQL连接重试机制// JDBC示例 String url jdbc:mysql://vip:3306/db?autoReconnecttruefailOverReadOnlyfalse;5. 性能优化建议5.1 参数调优vrrp_instance VI_1 { advert_int 1 # 局域网可设置为1秒 garp_master_delay 5 # 主库切换后ARP刷新延迟 track_script { chk_mysql weight 50 # 健康检查权重 } }5.2 监控集成Prometheus监控配置示例scrape_configs: - job_name: keepalived static_configs: - targets: [192.168.10.30:9125, 192.168.10.31:9125]关键监控指标keepalived_vrrp_state(0init, 1backup, 2master)keepalived_check_status(0OK, 1FAIL)mysql_slave_status(0正常, 1异常)这套方案在某证券交易系统中实现了全年99.999%的可用性全年计划外宕机时间控制在30秒以内。实际部署时建议先在测试环境验证所有故障场景特别是网络分区情况下的行为表现

相关文章:

Keepalived实战:用MySQL主从高可用方案解决你的数据库单点故障

Keepalived与MySQL主从架构:构建零宕机数据库高可用方案 当数据库成为业务系统的核心支柱时,单点故障可能意味着灾难性的业务中断。我曾亲历一次凌晨3点的数据库故障,整个电商平台瘫痪两小时,损失超过七位数。这次教训让我深刻认识…...

飞书机器人集成OpenClaw与百川2-13B-4bits量化版:对话触发任务实战

飞书机器人集成OpenClaw与百川2-13B-4bits量化版:对话触发任务实战 1. 为什么选择这个技术组合 去年冬天,我接手了一个小团队的内部效率优化项目。团队每天需要从海量行业报告中提取关键数据,整理成简报表。最初尝试用传统RPA工具&#xff…...

OpenClaw+千问3.5-35B-A3B-FP8:个人知识库自动化更新系统

OpenClaw千问3.5-35B-A3B-FP8:个人知识库自动化更新系统 1. 为什么需要自动化知识库更新 作为一个长期依赖个人知识库的技术写作者,我深刻体会到手动维护知识库的痛点。每当遇到新资料,我需要经历"阅读→摘录→分类→归档"的全流…...

RTX 50系显卡用户看过来:在Windows上为CUDA 12.8和PyTorch Nightly版安装Triton的实战记录

RTX 50系显卡用户看过来:在Windows上为CUDA 12.8和PyTorch Nightly版安装Triton的实战记录 当GeForce RTX 50系列显卡遇上PyTorch Nightly和CUDA 12.8,这可能是目前最前沿的AI开发环境组合。但官方文档和主流教程往往跟不上硬件迭代的速度,让…...

PX4固件版本不对,Offboard模式失灵?手把手教你给Pixhawk 4刷回旧版固件(附v1.11.0固件下载)

PX4固件版本不匹配导致Offboard模式失效?Pixhawk 4降级刷机全指南 最近在调试无人机Offboard模式时,不少开发者反馈最新版PX4固件出现兼容性问题——明明MAVLink指令发送正常,飞控却拒绝进入Offboard模式。这种"沉默式失效"往往让…...

从光纤通信到超快光学:非线性薛定谔方程仿真在工程研究中的5个典型应用场景

从光纤通信到超快光学:非线性薛定谔方程仿真在工程研究中的5个典型应用场景 当一束激光脉冲在光纤中传输时,其强度分布会随时间发生微妙变化——这种看似简单的物理现象背后,隐藏着非线性光学中最富魅力的数学描述:非线性薛定谔方…...

图像去雾新思路:当无监督学习遇上注意力机制(CycleGAN+SK Fusion深度解析)

图像去雾新思路:当无监督学习遇上注意力机制(CycleGANSK Fusion深度解析) 清晨的山间薄雾给风景增添了几分朦胧美,但对于计算机视觉系统而言,这种大气散射效应却是清晰感知世界的障碍。从自动驾驶车辆的环境感知到卫星…...

从课程设计到毕业设计:手把手教你用STC89C52和DS1302做一个带温度显示的电子钟(附完整代码)

从课程设计到毕业设计:STC89C52与DS1302打造高精度温度显示电子钟实战指南 1. 项目规划与硬件选型 在开始动手之前,我们需要对整个项目进行系统性的规划。一个完整的电子钟系统需要考虑时间显示、温度监测、用户交互和电源管理等多个功能模块。对于高校电…...

Android Studio课程设计实战:从零构建一个多功能备忘录记事本

1. 项目背景与开发环境搭建 第一次用Android Studio做课程设计时,我盯着空白的项目界面发呆了半小时——明明老师演示时行云流水,自己动手却连开发环境都配不齐。这个多功能备忘录项目就是从这种困境中摸索出来的实战经验,特别适合刚接触Andr…...

千问3.5-27B入门指南:无需GPU知识,30分钟跑通图文理解全流程

千问3.5-27B入门指南:无需GPU知识,30分钟跑通图文理解全流程 你是不是也对那些能“看懂”图片的AI模型感到好奇?想自己动手试试,但一看到“多模态”、“GPU部署”这些词就头疼?别担心,今天这篇文章就是为你…...

GME-Qwen2-VL-2B-Instruct保姆级教程:多GPU并行推理加速图文批量匹配效率

GME-Qwen2-VL-2B-Instruct保姆级教程:多GPU并行推理加速图文批量匹配效率 1. 工具简介 GME-Qwen2-VL-2B-Instruct是一个专门用于图文匹配度计算的本地工具,基于先进的多模态模型开发。这个工具解决了传统图文匹配中经常遇到的打分不准问题,…...

Harbor镜像同步到阿里云ACR和华为云SWR的保姆级避坑指南(附实操截图)

Harbor镜像同步到阿里云ACR和华为云SWR的保姆级避坑指南(附实操截图) 在多云架构成为主流的今天,企业往往需要将容器镜像同步到不同云平台以满足业务部署需求。Harbor作为企业级镜像仓库,其复制功能虽然强大,但在实际对…...

单稳态vs双稳态电路全对比:从延时控制到状态保持的5个典型应用场景

单稳态与双稳态电路工程实战:5大应用场景深度解析与芯片选型指南 在物联网设备与自动化控制系统中,电路设计往往需要在瞬时响应与状态保持之间寻找平衡点。单稳态与双稳态电路作为两种基础却强大的电路结构,各自在特定场景下展现出独特优势。…...

Qwen-Image-Edit快速上手:模糊图片变清晰,效果惊艳实测

Qwen-Image-Edit快速上手:模糊图片变清晰,效果惊艳实测 1. 引言:从模糊到清晰的魔法 你是否遇到过这样的困扰?手机里珍藏的老照片变得模糊不清,或是抓拍的精彩瞬间因为手抖而糊成一片。传统修图软件对这些模糊图片往…...

知识图谱在电商推荐系统中的5个落地场景:从商品关系到用户画像的实践指南

知识图谱在电商推荐系统中的5个落地场景:从商品关系到用户画像的实践指南 当你在电商平台搜索"蓝牙耳机"时,系统不仅会推荐同类商品,还可能智能搭配运动臂包或防水手机壳——这背后正是知识图谱在重新定义推荐逻辑。不同于传统协同…...

Qwen3.5-4B-Claude-Opus实战案例:Top-P=0.9时逻辑结论一致性测试

Qwen3.5-4B-Claude-Opus实战案例:Top-P0.9时逻辑结论一致性测试 1. 模型介绍 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF是一个基于Qwen3.5-4B的推理蒸馏模型,特别强化了结构化分析、分步骤回答以及代码与逻辑类问题的处理能力。该模型以GG…...

使用OpenGL纹理数组实现高精度实时Lut滤镜

之前写过的文章(使用OpenGL实现滤镜转换的一种思路_轮子初级玩家-CSDN博客),我把一整个Lut滤镜图作为单个纹理贴图,把图像原颜色采样后当作坐标,然后从lut纹理中查找出替换颜色实现滤镜功能,这是最简易的一种滤镜实现方式&#xf…...

Open UI5 源代码解析之841:VerticalLayout.js

源代码仓库: https://github.com/SAP/openui5 源代码位置:src\sap.ui.layout\src\sap\ui\layout\VerticalLayout.js VerticalLayout 文件解析 本文围绕 VerticalLayout.js 在 OpenUI5 项目中的角色与实现展开,重点说明该控件在布局体系中的定位、元数据设计、渲染协作、…...

Open UI5 源代码解析之842:ChartSelectionDetails.js

源代码仓库: https://github.com/SAP/openui5 源代码位置:src\sap.ui.mdc\src\sap\ui\mdc\chart\ChartSelectionDetails.js ChartSelectionDetails 文件详解与项目作用说明 概览 ChartSelectionDetails.js 在 openui5 的 sap.ui.mdc chart 相关模块里,承担了将图表选择…...

AnimateDiff写实视频生成教程:基于SD1.5+Motion Adapter的全流程实操

AnimateDiff写实视频生成教程:基于SD1.5Motion Adapter的全流程实操 想用AI把文字变成生动的视频?AnimateDiff让你用几句话就能生成专业级的写实视频,无需任何绘画基础,8G显存就能流畅运行。 1. 项目简介:文字直接变视…...

OpenClaw部署指南:2026年百度云部署OpenClaw、配置百炼API、集成Skill、接入微信/QQ/飞书/钉钉步骤

OpenClaw部署指南:2026年百度云部署OpenClaw、配置百炼API、集成Skill、接入微信/QQ/飞书/钉钉步骤。OpenClaw(原Clawdbot)作为2026年主流的AI自动化助理平台,可通过阿里云轻量服务器实现724小时稳定运行,并快速接入钉…...

vLLM-v0.17.1效果展示:多LoRA热切换,支持10+垂类模型动态加载

vLLM-v0.17.1效果展示:多LoRA热切换,支持10垂类模型动态加载 1. vLLM框架核心能力 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库,最初由加州大学伯克利分校的天空计算实验室开发,现已发展成为社区驱动的开源项目。…...

2026年4月OpenClaw部署方法:本地服务器部署OpenClaw、配置百炼APIKey、集成Skill详细教程

2026年4月OpenClaw部署方法:本地服务器部署OpenClaw、配置百炼APIKey、集成Skill详细教程。OpenClaw(原Clawdbot)作为2026年主流的AI自动化助理平台,可通过阿里云轻量服务器实现724小时稳定运行,并快速接入钉钉&#x…...

【RAG】基于 RAG 的知识库问答系统设计与实现

基于 RAG 的知识库问答系统设计与实现1. 系统介绍2. 技术与方法3. 核心功能代码片段3.1 知识库创建3.2 知识对话问答3.3 知识库清空4. 系统运行效果截图4.1 文件上传与知识库创建4.2 知识库问答4.3 文件删除与知识库清空总结项目代码地址:https://github.com/AI-Mee…...

【云服务器】在Linux CentOS 7上快速搭建我的世界 Minecraft Fabric 服务器搭建,Fabric 模组详细搭建教程

【云服务器】在Linux CentOS 7上快速搭建我的世界 Minecraft Fabric 服务器搭建,Fabric 模组详细搭建教程一、 服务器介绍二、安装 JDK 21三、搭建 Minecraft 服务端四、本地测试连接五、如何添加模组(mods)六、添加服务,并设置开…...

图文对话AI快速部署:Qwen3-VL-WEBUI Docker实战教程

图文对话AI快速部署:Qwen3-VL-WEBUI Docker实战教程 1. 认识Qwen3-VL-WEBUI 1.1 什么是Qwen3-VL-WEBUI? Qwen3-VL-WEBUI是一个基于Docker的图文对话AI解决方案,它将强大的Qwen3-VL视觉语言模型封装成易于使用的网页界面。通过这个工具&…...

双模型协作!OpenClaw同时调用Qwen3-4B与Codex完成编程任务

双模型协作!OpenClaw同时调用Qwen3-4B与Codex完成编程任务 1. 为什么需要双模型协作 作为一个经常需要写代码的技术博主,我一直在寻找更高效的编程方式。传统的单模型调用虽然能完成基础任务,但在复杂场景下往往力不从心——要么生成的代码…...

OpenClaw飞书机器人配置:Qwen3-4B模型对话触发实战

OpenClaw飞书机器人配置:Qwen3-4B模型对话触发实战 1. 为什么选择OpenClaw飞书本地模型组合 去年我接手了一个小团队的内部效率优化项目,需要解决两个核心痛点:一是团队成员频繁在飞书群聊中重复处理相似问题(比如数据查询、文档…...

OpenClaw自然语言编程:千问3.5-27B理解模糊需求并执行

OpenClaw自然语言编程:千问3.5-27B理解模糊需求并执行 1. 当AI学会追问:模糊指令的自动化实践 上周日晚上11点,我盯着电脑里散落的387张旅行照片发呆——它们杂乱地堆在Downloads文件夹里,有手机直出的JPG、相机导入的RAW、截图…...

中央空调组态王6.55版本脚本程序动画仿真系统

中央空调组态王脚本程序动画仿真系统,组态王6.55版本凌晨三点盯着组态王工程画面里的虚拟风机打哈欠时,突然发现温度曲线开始抽风——这大概就是每个做过工业组态的老哥都经历过的魔幻时刻。今天咱们要折腾的是中央空调系统的动画仿真,用组态…...