下面是一个针对 关系型数据库(MySQL、PostgreSQL、Oracle、SQL Server) 的通用、跨平台的 性能瓶颈与高可用异常切换的标准化排查 SOP(Standard Operating Procedure)。它便于统一运维流程、快速定位问题,适合 DBA、SRE 或平台团队使用。
📘 跨数据库系统标准化排查 SOP
一、📊 性能瓶颈排查通用步骤
步骤 | 目标 | 工具/命令 | 判断标准 |
---|
1️⃣ 收集资源指标 | 判断是否存在 系统级瓶颈(CPU/内存/磁盘) | top 、vmstat 、iostat 、CloudWatch、AWR、PerfMon | CPU >80%、IO 延迟 >15ms、内存命中率 <90% |
2️⃣ 获取活跃会话 | 查看是否有活跃连接、慢查询、锁等待 | DM Views、SHOW PROCESSLIST 、pg_stat_activity 、v$session | 活跃连接数高、WAIT 状态频繁 |
3️⃣ 排查慢SQL | 分析 SQL 执行频率与平均耗时 | SQL Profiler、pg_stat_statements、AWR、Query Stats | Top SQL avg_time > 1s |
4️⃣ 检查等待事件 | 是否存在系统瓶颈或资源竞争 | pg_stat_activity.wait_event 、v$system_event 、sys.dm_os_wait_stats | 频繁出现 I/O / Lock / Latch 等等待 |
5️⃣ 查看锁与阻塞 | 是否存在死锁、长时间阻塞 | SHOW ENGINE INNODB STATUS 、锁视图 | 多个 session 等待锁资源 |
6️⃣ 检查执行计划 | 是否索引缺失或走错计划 | EXPLAIN / EXPLAIN PLAN / SQL Hints | 全表扫描、低效 Join、没有使用索引 |
7️⃣ 检查连接数和参数 | 是否连接数爆满或配置不当 | 配置文件、动态参数视图 | 超过 max_connections 限制 |
8️⃣ 日志排查 | 查看是否有内部错误或慢 SQL 记录 | Error Log、Slow Log、alert.log、CloudWatch Logs | 报错堆栈、异常堆积、连接失败 |
二、🔁 高可用异常与故障切换排查 SOP
步骤 | 目标 | 工具/命令 | 异常判断 |
---|
1️⃣ 查看集群状态 | 主从、主备是否在线 | SHOW SLAVE STATUS 、pg_stat_replication 、v$archive_dest_status 、AlwaysOn 视图 | 状态不为 Running /SYNCHRONIZED 视为异常 |
2️⃣ 检查同步延迟 | 判断复制是否滞后 | Seconds_Behind_Master 、replica_lag 、apply_lag | 延迟 > 5 秒为关注点 |
3️⃣ 检查切换历史 | 是否存在自动切换、漂移记录 | AWS RDS Events、OS 日志、Cluster 日志 | 最近切换、漂移、告警记录 |
4️⃣ 检查仲裁与心跳 | 多节点系统仲裁是否生效 | Pacemaker、Windows Cluster、pg_auto_failover | 仲裁失败、节点分裂 |
5️⃣ 检查高可用组件状态 | Keepalived、ProxySQL、Patroni 等组件状态 | systemctl status 、组件日志 | 服务未运行或状态异常 |
6️⃣ 查应用连接状态 | 应用是否未自动重连/切换 | 应用日志 | 错误如 connection refused 或 read-only mode |
三、📦 抽象分层模型:统一排查框架(“4 层模型”)
层级 | 内容 | 排查维度 | 常用命令/指标 |
---|
🟦 1. 系统层 | CPU / 内存 / 磁盘 | top , vmstat , iostat , CloudWatch | CPU%、I/O延迟、内存命中率 |
🟩 2. 数据库引擎层 | 连接池、线程、缓冲区、锁机制 | SHOW STATUS , DMV, pg_stat* , v$ 视图 | 活跃连接数、Buffer Pool、锁等待 |
🟨 3. SQL 层 | SQL 执行计划、索引、慢 SQL | EXPLAIN , query_stats , Profiler | 扫描方式、Join 类型、慢查询数 |
🟥 4. 高可用层 | 主从/主备状态、漂移、切换 | replication_status , Cluster Tool | Lag、状态、切换记录 |
四、🧰 常用命令与工具(对比表)
工具 / 目的 | MySQL | PostgreSQL | Oracle | SQL Server |
---|
活跃连接 | SHOW PROCESSLIST | pg_stat_activity | v$session | sys.dm_exec_requests |
慢 SQL | slow_query_log | pg_stat_statements | AWR / ADDM | dm_exec_query_stats |
执行计划 | EXPLAIN | EXPLAIN | EXPLAIN PLAN FOR | SET SHOWPLAN_ALL ON |
锁等待 | INNODB STATUS | pg_locks | v$lock | sys.dm_tran_locks |
I/O/CPU | SHOW STATUS , iostat | pg_stat_bgwriter | v$sysstat | PerfMon , dm_os_performance_counters |
主从状态 | SHOW SLAVE STATUS | pg_stat_replication | v$archive_dest_status | AlwaysOn dashboard |
日志分析 | error.log, slow.log | PostgreSQL log | alert.log | error log, Windows Event |
图形化工具 | MySQL Workbench | pgAdmin | Enterprise Manager | SSMS |
✅ 补充建议:自动化/规范化工具
类型 | 推荐工具 | 说明 |
---|
监控平台 | Prometheus + Grafana、CloudWatch | 自建或云端统一面板 |
日志收集 | ELK、CloudWatch Logs | 日志集中管理与告警 |
高可用框架 | MHA, Orchestrator, Patroni, AlwaysOn | 实现自动故障转移 |
SQL 分析 | pt-query-digest, pgBadger, AWR | 提取高消耗 SQL 模式 |
自动收集脚本 | Shell + crontab + SQL | 定期快照,留痕分析故障 |