排查流程
1
确认影响范围
观察报错信息、业务影响面、是否集中在某个时间段或实例。
2
收集证据
查看错误日志、慢日志、
SHOW PROCESSLIST,记录相关 SQL 与会话 ID。3
分析定位
结合
performance_schema、系统指标找出瓶颈点(锁、IO、CPU、权限等)。4
执行修复并验证
应用修复措施、回归测试,并关注是否引入新的隐患。
错误日志位置
查看日志前可通过
SHOW VARIABLES LIKE 'log_error'; 获取实际路径。连接失败
ERROR 1045 (28000): Access denied:用户名/密码/来源主机不匹配,SHOW GRANTS FOR 'user'@'host'检查授权Can't connect to MySQL server (10061/2003):服务未启动/端口被占用/防火墙拦截ERROR 2059 (HY000): Authentication plugin:客户端不支持caching_sha2_password,升级驱动或更换插件
权限问题
mysql.db、mysql.tables_priv 手动定位具体权限。
锁等待与死锁
慢查询
- 开启慢查询日志并分析热点 SQL,确认是否缺失索引或存在不必要的排序
- 使用
EXPLAIN ANALYZE观察实际耗时 - 关注
performance_schema.events_statements_summary_by_digest
连接数与资源
Too many connections:提升max_connections,同时使用连接池与合理超时Out of memory:检查innodb_buffer_pool_size、大查询/排序导致的临时内存Disk full:确认tmpdir、innodb_log_group_home_dir所在分区空间
字符集与乱码
确保客户端与服务器均为utf8mb4,并统一排序规则。
--default-character-set=utf8mb4。
大事务与回滚慢
- 避免一次性更新/删除海量数据,分批提交,每批控制在数千行以内
- 检查是否有长事务未提交:
SHOW ENGINE INNODB STATUS中的TRANSACTIONS段落 - 使用
performance_schema.events_transactions_history_long查找持续时间长的事务
复制延迟
SHOW SLAVE STATUS\G(5.7)或SHOW REPLICA STATUS\G(8.0)查看Seconds_Behind_Master- 关注
Replica_IO_Running、Replica_SQL_Running状态 - 检查大事务、DDL 或网络延迟是否导致积压
工具建议
mysqlslap:简单性能压测pt-heartbeat:监控主从延迟Percona Toolkit:提供行对比、复制检查、锁监控等工具
小结
遇到问题先观测:日志、SHOW ...、performance_schema,再定位根因,最后验证修复。建立标准化的排查流程能在压力下保持清晰思路。