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

MySQL 高可用

架构

组件作用核心优势
MySQL 主主复制两台 MySQL 互为主从,双向同步数据数据冗余、无单点、支持读写分离
HAProxy数据库负载均衡、健康检查、连接管理读写分发、自动剔除异常节点
Keepalived提供 VIP、故障漂移、HAProxy 高可用秒级切换、对业务透明

整体访问链路

客户端 → VIP(Keepalived) → HAProxy → MySQL Master1/Master2

环境

节点IP角色
Master1192.168.1.101MySQL 主、HAProxy、Keepalived 主
Master2192.168.1.102MySQL 主、HAProxy、Keepalived 备
VIP192.168.1.200对外统一入口

前置要求

  • 关闭防火墙 / 开放 3306、8080、VRRP 端口
  • 关闭 SELinux 或设为 Permissive
  • 时间同步(NTP)
  • 两台 MySQL 版本一致

MySQL 双主复制

1. Mater1 my.cnf 配置

[mysqld] server-id = 101 log-bin = mysql-bin binlog-format = ROW auto-increment-increment= 2 auto-increment-offset = 1 relay-log = mysql-relay-bin log-slave-updates = 1 sync-binlog = 1 innodb_flush_log_at_trx_commit = 1

2. Master2 my.cnf

[mysqld] server-id = 102 log-bin = mysql-bin binlog-format = ROW auto-increment-increment= 2 auto-increment-offset = 2 relay-log = mysql-relay-bin log-slave-updates = 1 sync-binlog = 1 innodb_flush_log_at_trx_commit = 1

3. 创建复制账号(两台都执行)

CREATEUSER'repl'@'192.168.1.%'IDENTIFIEDBY'Repl@123';GRANTREPLICATIONSLAVEON*.*TO'repl'@'192.168.1.%';FLUSHPRIVILEGES;

4. 建立双向复制

  1. 节点 1 执行show master status;记录 File & Position

  2. 节点 2 执行:

    change mastertomaster_host='192.168.1.101',master_user='repl',master_password='Repl@123',master_log_file='mysql-bin.000001',master_log_pos=154;startslave;showmasterstatus;
  3. 反向配置节点 1 指向节点 2,完成主主

HAProxy 配置

1. 安装

yum-yinstallhaproxy

2. haproxy.cfg

vim /etc/haproxy/haproxy.cfg

global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid user haproxy group haproxy daemon maxconn 4000 defaults # MySQL使用四层代理 mode tcp log global option tcplog retries 3 timeout connect 5s timeout client 50s timeout server 50s listen mysql-read-write # 监听 bind 0.0.0.0:3306 mode tcp balance roundrobin option mysql-check user haproxy_check # 配置MySQL服务 server mysql1 192.168.1.101:3306 check weight 1 server mysql2 192.168.1.102:3306 check weight 1 listen stats bind 0.0.0.0:8080 mode http stats enable stats uri /haproxy-stats stats auth admin:admin

3. MySQL 健康检查用户

CREATEUSER'haproxy_check'@'%'IDENTIFIEDBY'';FLUSHPRIVILEGES;

4. 启动

systemctl start haproxy systemctlenablehaproxy

Keepalived 配置

1. 安装

yuminstall-ykeepalived

2. MySQL 检测脚本

#!/bin/bashMYSQL_USER="haproxy_check"MYSQL_HOST="localhost"MYSQL_PORT="3306"mysql -u$MYSQL_USER-h$MYSQL_HOST-P$MYSQL_PORT-e"SELECT 1">/dev/null2>&1if[$?-ne0];thensystemctl stop haproxyexit1fiexit0
chmod+x /usr/local/bin/check_mysql.sh

3. Mater1 keepalived.conf

global_defs { router_id mysql_ha_master } vrrp_script check_mysql { script "/usr/local/bin/check_mysql.sh" interval 2 weight -20 fall 3 rise 2 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.200/24 } track_script { check_mysql } }

4. Master2 keepalived.conf

global_defs { router_id mysql_ha_backup } vrrp_script check_mysql { script "/usr/local/bin/check_mysql.sh" interval 2 weight -20 fall 3 rise 2 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.200/24 } track_script { check_mysql } }

5. 启动

systemctl start keepalived systemctlenablekeepalived
http://www.jsqmd.com/news/583496/

相关文章:

  • 以IBMS为翼,驱动企业数字化转型,斩获降本增效双丰收
  • C语言_函数_题1
  • 基于深度学习的水下海洋生物识别(YOLOv12/v11/v8/v5模型+数据集)(源码+lw+部署文档+讲解等)
  • 霸王餐外卖接口对接中的签名校验、加密传输 Java 后端实现细节
  • QMCDecode:解锁QQ音乐加密音频,让Mac用户实现音乐自由
  • MES系统如何统领全局:曜华激光200-500MW产线数字神经中枢揭秘
  • 边缘计算的“数据中枢”——智能网关与数据采集
  • C语言_函数
  • 水厂供水泵房自控案例(工程实际在用) PLC程序+触摸屏程序+组态软件程序+图纸
  • 2026届学术党必备的降重复率平台推荐榜单
  • 基于深度学习的隧道缺陷检测系统(YOLO12/11/v8/v5模型+django)(源码+lw+部署文档+讲解等)
  • Unity入门:新建第一个3D/2D项目的完整步骤
  • 西方艺术画作作家识别名画作者识别检测数据集VOC+YOLO格式3006张34类别
  • 告别模糊边界!用PraNet+Res2Net实战结肠息肉分割,附PyTorch保姆级代码解读
  • 文字识别OCR 在线工具 vs OCR API 接口平台:普通用户和开发者该怎么选?
  • 基于Simulink与Carsim的LKA车道保持系统:横向预瞄PID控制与纵向稳定性研究——...
  • 嘉兴脱发白发理疗养发馆哪家好?黑奥秘近20年深耕头发理疗更专业 - 美业信息观察
  • Redis 缓存穿透怎么解决?3 种方案实测 + 踩坑全记录(2026)
  • javaweb高校两校区通勤校车预约系统的设计与实现 论文
  • 【Pygame】第17章 游戏用户界面系统与菜单交互设计实现
  • 《吐槽大会》编剧与导演团队意见平衡机制深度研究报告
  • 兰亭妙微教育App设计案例研究:Chegg Study的UI/UX设计亮点与专业总结 - ui设计公司兰亭妙微
  • 开挖煤层这事儿看着像在挖煤,实际是在跟地下水的流动玩捉迷藏。咱今天不整那些虚的,直接上COMSOL模型里的硬货
  • Xray-强大的漏洞扫描工具
  • ArcGIS Pro 3.0 保姆级教程:用‘渔网’工具把全球人口TIFF数据变成深圳1公里网格热力图
  • 解锁论文写作新境界:书匠策AI——学术路上的智慧导航
  • **发散创新:基于同态加密的隐私保护计算在Python中的实战实现**随
  • 2026企业微信服务商深度解析:从选工具到运营增长,微盛·企微管家如何助力?
  • OpenClaw多模型对比:Qwen3-14B与Llama3在本地自动化中的表现
  • 枫叶互动