项目说明
概述
-
该项目共分为2个子项目,由MYSQL集群高可用和数据监控平台两部分组成
-
MYSQL集群高可用属于云原生高级课数据库运维部分的知识
-
数据监控平台属于云原生拔高项目,旨在让学生增加知识面,提高项目实习经历,充实简历
业务需求
- 某企业由于业务增加,超出了单库性能阈值,则需要构建高可用的数据库服务器集群,且在业务增长初期,读写业务各半,需选择Active-Active Cluster集群架构,为了保证活性,使用恰当的技术实现high availability,要求架构图如下:

- 为了实现自动化运维,预使用开源监控实时报警软件实现服务器的检测、大屏展示,要求使用独立主机安装软件检测数据库集群的性能,以仪表盘形式展示:

-
具体要求
-
网络配置:确保集群中的MySQL服务器之间的网络连接稳定可靠,避免网络延迟或丢包对集群性能造成影响。
-
同步参数配置:对于需要数据同步的集群方案(如主从复制和组复制),需要合理配置同步参数,确保数据的实时性和一致性。
-
备份和恢复策略:制定完善的备份和恢复策略,定期备份集群数据,并测试恢复流程的可行性,以确保在发生故障时能够快速恢复数据和服务。
-
监控和告警:使用监控工具对集群进行实时监控,并设置合理的告警阈值。当集群出现异常情况时,能够及时发现并处理。
-
项目设计思路
-
MYSQL集群高可用使用双主双活+keepalived实现
-
MYSQL数据监控平台使用mysqld_exporter+prometheus+Grafana三件套实现
-
集群及监控平台搭建完毕后可以实现企业内部的mysql数据库双主机在线增加高可用性,通过keepalived的故障检测和VIP漂移能力使得发生故障后使用者无感知,增加系统的容错能力,通过监控平台实现mysql数据库监控可视化
项目组织方式及时间
-
时间:建议1.5天至2天内完成所有的项目搭建、压力测试、问题总结
-
方式:通过VmWare17虚拟机实现平台搭建
-
人数:1人
项目特点
-
综合项目从主从复制原理、数据同步方式、主从架构模式、主从架构/双主架构、高可用、数据可视化一步步从零搭建出一个完善的数据库集群/监控平台
-
综合项目完成后可以实现对MYSQL数据库高级运维知识的巩固,通过参与实际项目增加工作实战经验,提升技术能力、故障判断检测维护能力、充实简历项目经历
-
通过prometheus数据库监控三件套的项目搭建,可以掌握数据监控的知识应用能力,通过监控大屏数据的展示使得数据可视化得以实现,使得运维更自动化、直观化
-
该项目进一步巩固和掌握云原生高级数据库部分的知识以及数据监控可视化的知识点
项目背景知识
MySQL中的主从复制技术
MySQL是基于它自身的Bin-log日志来完成数据的异步复制,因为Bin-log日志中会记录所有对数据库产生变更的语句,包括DML数据变更和DDL结构变更语句,数据的同步过程如下:

集群机构模式
一主一从/多从架构
- 一主一从或一主多从,这是传统的主从复制模型,也就是多个主从节点组成的集群中,只有一个主节点,剩余的所有节点都为其附属关系,结构如下:

双主/多主架构
- 若公司项目中读写请求的比例对半开,同时整体的并发量也不算低,至少超出了单库的承载阈值,这时就可以选用双主/多主架构,结构如下:

keepalived高可用方案
- Keepalived是一个轻量级别的高可用解决方案,使用VRRP(Vritrual Router Redundancy Protocol,虚拟路由冗余协议)的VIP虚拟IP的漂移功能,实现单点故障转移

可视化监控平台三件套
-
Mysqld_exporter:是一款轻量级的mysql监控工具,用来收集MysQL数据库相关指标并将其暴露给prometheus进行监控和告警
-
Prometheus:普罗米修斯,一个开源的服务监控系统,它负责采集和存储应用的监控指标数据,并以可视化的方式进行展示,以便于用户实时掌握系统的运行情况,并对异常进行检测
-
Grafana:格拉法娜,是一个跨平台的开源的度量分析和可视化工具,可以从prometheus获取数据进行可视化数据大屏展示。
-
总结:mysqld_exporter用于抓取mysql监控指标数据,prometheus接收到数据后进行整理分析,grafana从prometheus获取数据使用大屏模版进行仪表盘展示

项目环境
项目拓扑结构

软硬件环境清单
| 主机名 | IP地址 | 硬件 | 软件 |
|---|---|---|---|
| master1 | 192.168.88.161 VIP:192.168.88.200 | cpu:1颗2核 内 存:2GB HDD:20GB 网 络:NAT | VmWare17 OpenEuler22.03 SP4 MySql8.0.37 Keepalived2.2.4 |
| master2 | 192.168.88.162 VIP:192.168.88.200 | cpu:1颗2核 内 存:2GB HDD:20GB 网 络:NAT | VmWare17 OpenEuler22.03 SP4 MySql8.0.37 Keepalived2.2.4 |
| monitor | 192.168.88.163 | cpu:1颗2核 内 存:2GB HDD:20GB 网 络:NAT | VmWare17 OpenEuler22.03 SP4 Mysqld_Exporter-0.15.1 Prometheus-2.53.2 grafana-enterprise-11.1.2 |
项目任务清单
系统平台部署
-
安装VmWare17
-
虚拟出三台计算机
-
安装OpenEuler22.03 SP4 LTS 操作系统
-
系统设置:主机名、防火墙、SELinux、hosts映射、IP地址:
安装2台MySql服务器
-
使用二进制包进行安装
-
配置MySql系统服务
部署高可用MySql双主集群
-
配置账户
-
配置主主复制
-
安装keepalived并配置
安装配置监控平台
-
安装Mysqld_Exporter+Prometheus+grafana-enterprise
-
配置监控平台组件
压力测试
-
查看VIP所在服务器,停止当前节点的mysql,查看VIP是否漂移,刷新监控界面,看是否高可用
-
MySQL自带的压力测试工具------Mysqlslap
修改最大连接数
vim /etc/my.cnf
max_connections=1024
systemctl restart mysql
完成压测,查看仪表盘
mysqlslap --defaults-file=/etc/my.cnf --concurrency=200,400 --iterations=1 --number-int-cols=50 --number-char-cols=60 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed --engine=innodb --number-of-queries=2000 -uroot -p123456 --verbose
项目实现报告
|------|-----|------|-------------------------|
| 姓 名 | 徐子晴 | 起止日期 | 2025年11月22日至2025年11月30日 |
| 项目名称 | MYSQL数据库集群高可用和数据监控平台 |||
| 项目搭建内容 ||||
| 一、安装三台虚拟机 为支撑MySQL集群与监控平台的分布式部署,搭建了3台独立的虚拟机节点,明确各节点角色与功能定位: mosnitor节点:作为监控专用节点,负责后续部署数据监控平台,承担监控数据的采集、存储、可视化展示等核心工作; master1节点:部署MySQL服务并处理业务的读写请求,是集群的核心数据节点; master2节点:部署MySQL服务并处理业务的读写请求,是集群的核心数据节点; 二、配置环境并制作主机快照 1. 环境配置:对3台虚拟机完成基础系统环境初始化,包括:设置固定IP地址并配置网络互通、关闭不必要的系统服务、调整内核参数、安装依赖工具,确保节点环境满足MySQL与后续组件的部署要求; 2. 制作主机快照 三、生产环境二进制包安装MySQL 采用生产环境中更灵活的二进制包方式安装MySQL,操作流程如下: 1. 从MySQL官方下载对应版本的二进制压缩包,上传至master1与2节点; 2. 解压压缩包至指定目录,配置系统环境变量; 3. 初始化MySQL实例,设置MySQL服务为开机自启动,启动服务后通过 mysql -uroot -p 验证登录正常,完成MySQL的基础部署。 四、MySQL集群搭建测试 基于master11主节点与克隆备用节点,搭建MySQL主从复制集群,实现数据同步: 1. 主节点配置:修改master11的MySQL配置文件,开启二进制日志、设置唯一服务器ID、指定binlog存储路径;重启MySQL后,创建用于主从同步的专用账号并授权; 2. 从节点配置:修改克隆节点的my.cnf文件,设置独立服务器ID;通过 change master to 命令关联主节点,启动从库同步进程; 3. 集群测试:在主节点执行数据写入,登录从节点验证数据是否同步更新;同时模拟主节点服务中断,检查从节点的数据一致性,确保主从复制链路稳定可用。 五、Keepalived故障转移的高可用环境 为MySQL集群部署Keepalived组件,实现故障自动转移,保障集群高可用性: 1. 在master11与克隆节点均安装Keepalived服务; 2. 配置Keepalived:设置集群虚拟IP(VIP)、编写MySQL服务状态检测脚本(用于监控MySQL是否正常运行); 3. 故障转移测试:手动停止主节点的MySQL服务,观察备用节点是否自动绑定VIP、接管业务请求;测试完成后恢复主节点,验证主从角色切换与数据同步状态,确保高可用机制生效。 六、安装监控平台 在mosnitor节点部署数据监控平台,实现MySQL集群的实时状态监控: 1. 下载并安装监控平台服务端(如PMM),包含Prometheus(数据存储)、Grafana(可视化展示)等核心组件; 2. 在master11与克隆节点部署MySQL监控采集器,配置采集器关联至mosnitor节点的监控服务端; 3. 配置监控面板:添加MySQL核心指标(如QPS、连接数、缓存命中率、主从同步延迟等)的可视化图表,设置告警规则(如连接数过高、同步延迟超时触发告警),最终实现数据库运行状态的实时可视化监控。 ||||
| 遇到的问题及解决方案 ||||
| 集群节点间网络通信失败,主从同步超时 解决方案: ◦ 检查防火墙/安全组,开放MySQL(3306)、集群同步(如MGR的33061)端口; ◦ 确认节点间my.cnf中bind-address配置为集群内可访问IP,而非仅本地回环地址; ◦ 测试节点间ping、telnet连通性,排查网络链路故障。 MGR/主从集群初始化失败,节点无法加入集群 解决方案: ◦ 确保所有节点MySQL版本一致(MGR要求版本≥5.7.17); ◦ 检查my.cnf中集群相关配置(如MGR的group_replication_*参数)是否统一; ◦ 清理节点残留的集群元数据(删除mysql库中group_replication_*相关表数据后重启)。 主节点故障后,集群未自动切换至从节点 解决方案: ◦ 检查高可用组件(如Keepalived、MHA)的状态与日志,确认故障检测脚本是否正常执行; ◦ 确认从节点已开启read_only=0(切换后可写),且主从数据同步无延迟; ◦ 调整故障检测超时时间(如Keepalived的interval、fall参数),避免误判。 ||||
| 结果图片:
||||
| ||||