MySQL:性能瓶颈与高可用异常切换的排查思路、步骤、常用工具与命令

好的,下面是针对 MySQL 数据库的性能瓶颈与高可用异常切换的排查手段、步骤、常用工具与命令的详细清单,结构清晰、可操作性强。


🧱 一、MySQL 性能瓶颈排查清单

1. 监控初判

  • 目标:发现“是否真的慢”、“慢在哪”、“慢多久了”

  • 推荐监控项

    • QPS/TPS
    • Threads_connected / Threads_running
    • InnoDB Buffer Pool Hit Rate
    • Table Locks / Row Locks
    • Handler_*、Select_scan、Sort_merge_passes 等执行计划相关指标
  • 工具

    • Grafana + Prometheus(mysqld_exporter)
    • 阿里云、腾讯云 RDS 控制台监控
    • 自建 Percona PMM

2. 系统层诊断(主机资源)

top -c                     # CPU、内存消耗
vmstat 1 5                 # 系统整体性能
iostat -x 1 3              # 磁盘瓶颈
free -m                   # 内存使用
sar -n DEV 1 3             # 网络瓶颈

3. 数据库内部排查

3.1 连接状态分析
SHOW PROCESSLIST;  -- 当前连接/线程/阻塞情况
SHOW FULL PROCESSLIST\G;
SHOW STATUS LIKE 'Threads%';  -- 连接、运行线程数
3.2 锁/事务/死锁
SHOW ENGINE INNODB STATUS\G;  -- 死锁信息、阻塞等待
SELECT * FROM performance_schema.data_locks;  -- 行锁情况(8.0+)
SELECT * FROM information_schema.innodb_locks; -- 5.7 手动启用
3.3 慢查询日志分析
-- 开启慢查询日志(my.cnf)
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
pt-query-digest /var/log/mysql/slow.log  # SQL优化神器

4. Performance Schema 视角

SELECT * FROM sys.user_summary_by_statement_type;
SELECT * FROM sys.statements_with_sorting;
SELECT * FROM sys.schema_table_lock_waits;

5. 优化方向建议(基于瓶颈类型)

类型症状优化手段
CPU高多SQL并发,SQL逻辑复杂索引优化、分表分库、limit优化
IO高全表扫描、未命中缓存提升 Buffer Pool,优化慢SQL
内存不足查询缓存命中低,临时表多增加内存、调整 join_buffer_size 等
死锁频发大事务/长事务冲突事务细粒度、锁排序一致性
连接爆满应用无连接池引入连接池,设置 max_connections 合理值

🌐 二、MySQL 高可用异常切换排查清单

MySQL 常见高可用架构:主从复制(Async)、GTID+Semi-sync、MGR(Group Replication)、MHA、Orchestrator、Keepalived + VIP。

1. 主从复制排查

1.1 查看主从状态
SHOW SLAVE STATUS\G;

关键字段说明:

  • Slave_IO_Running, Slave_SQL_Running:都要是 Yes
  • Seconds_Behind_Master:延迟秒数
  • Last_IO_Error, Last_SQL_Error:错误日志
1.2 常见问题分析
问题原因排查方法
延迟大SQL慢、主库负载大SHOW PROCESSLIST、查慢日志
复制中断网络闪断、GTID不一致Last_SQL_Error 查看
主从数据不一致忽略事务、忽略库表pt-table-checksum 工具校验

2. MGR(Group Replication)

2.1 状态查看
SHOW STATUS LIKE 'group_replication%';
SELECT * FROM performance_schema.replication_group_members;
2.2 异常场景排查
  • 网络分区 → 成员退出群组(单节点运行,降级为读写)
  • MGR 切换失败 → auto_increment_offset/GTID冲突
  • 多节点无法投票 → quorum 不足

3. MHA/Orchestrator/Keepalived 异常切换

工具排查方式关键日志/命令
MHA看 manager 日志,确认是否成功 failover/var/log/masterha/manager.log
OrchestratorWeb UI + Agent 日志/var/log/orchestrator/orchestrator.log
Keepalived查看 VIP 漂移状态ip addr, systemctl status keepalived
Pacemakercrm status 查看资源状态pcs status, corosync

🔧 三、常用工具和命令清单

类型工具/命令用途说明
资源分析top, iostat, vmstat, free系统层面瓶颈
SQL分析SHOW PROCESSLIST, EXPLAIN, pt-query-digest慢查询优化
锁分析SHOW ENGINE INNODB STATUS, performance_schema.data_locks锁冲突分析
复制故障SHOW SLAVE STATUS, Last_SQL_Error主从复制问题
高可用切换systemctl, orchestrator, keepalived, crm status故障切换定位
数据一致性pt-table-checksum, pt-table-sync主从一致性校验
网络问题分析ping, telnet, tcpdump, ss网络中断或连接失败

✅ 建议的抽象方式(MySQL专用)

你可以将 MySQL 故障排查标准化成如下“排查表”:

维度子维度检查项工具/命令判断标准
系统资源CPU占用是否过高top, vmstat> 80% 持续高负载
系统资源I/O磁盘延迟高iostatawait > 10ms
数据库内部慢SQL有慢查询堆积slow.log + pt-query-digest查询时间 > 1s
数据库内部是否存在死锁SHOW ENGINE INNODB STATUS有死锁信息
复制状态异常IO/SQL线程中断SHOW SLAVE STATUSRunning != Yes
高可用VIP未漂移keepalived故障ip addr, systemctl statusVIP不在主库
高可用主节点退出MGR成员缺失replication_group_members成员数异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值