主流數據庫運維故障排查卡片式速查表與視覺圖譜
本文件將主文檔內容轉化為模塊化卡片結構,并補充數據庫結構圖、排查路徑圖、鎖機制對比等視覺圖譜,以便在演示、教學或現場排障中快速引用。
📌 故障卡片速查:連接失敗
數據庫 | 檢查要點 | 工具/命令 | 提示 | |
---|---|---|---|---|
MySQL | mysqld 是否運行;bind-address 設置;權限表 (user@host ) | systemctl status mysql ;SHOW GRANTS | localhost 默認走 socket | |
PostgreSQL | listen_addresses , pg_hba.conf 配置 | `ps aux | grep postgres; pg_isready` | IP/MASK 需匹配,注意 auth 方法 |
SQL Server | TCP/IP 是否啟用;實例名正確;防火墻 | SQL Server 配置管理器;telnet | 默認端口 1433,命名實例需格式 | |
Oracle | Listener 啟動;tnsnames.ora , sqlnet.ora 正確 | lsnrctl status ;tnsping | ORA-12514 多見于服務名不一致 |
口訣: 連-端-網-權
📌 慢查詢分析卡片
數據庫 | 常用手段 | 推薦工具/命令 | 優化重點 |
---|---|---|---|
MySQL | 開啟慢查詢日志;EXPLAIN 分析 | EXPLAIN ANALYZE ;Performance Schema | 避免全表掃,控制子查詢 |
PostgreSQL | auto_explain 捕捉執行計劃 | EXPLAIN (ANALYZE, BUFFERS) | 數據類型匹配與統計信息準確 |
SQL Server | 使用執行計劃與 DMV | sys.dm_exec_query_stats + query_plan | 避免隱式轉換、參數嗅探 |
Oracle | SQL Trace + TKPROF 分析 | DBMS_XPLAN.DISPLAY_CURSOR ;SQL Profile | 并行度、hint、統計信息 |
口訣: 慢-查-索-優
📌 鎖等待排查卡片
數據庫 | 查看鎖信息方法 | 典型排查視圖/命令 | 優化技巧 |
---|---|---|---|
MySQL | INNODB STATUS ; Performance Schema | SHOW ENGINE INNODB STATUS\G | 避免 gap lock,縮事務 |
PostgreSQL | pg_locks , pg_blocking_pids() | SELECT * FROM pg_locks JOIN pg_stat_activity | 長查詢+長事務要拆分 |
SQL Server | dm_tran_locks , dm_os_waiting_tasks | sys.dm_exec_requests ;Profiler | 使用行版隔離減少沖突 |
Oracle | V$LOCK , V$SESSION , LOCKED_OBJECT | SELECT * FROM dba_blockers/dba_waiters | alert 日志含死鎖棧信息 |
口訣: 事-鎖-索-釋
📌 主從延遲診斷卡片
數據庫 | 查看同步狀態命令 | 延遲字段 | 優化建議 |
---|---|---|---|
MySQL | SHOW SLAVE STATUS\G | Seconds_Behind_Master | 多線程復制;避免大事務 |
PostgreSQL | pg_stat_replication , replay_lag | flush_lag , replay_lag | 熱備反饋;異步切同步看 sync_state |
SQL Server | dm_hadr_database_replica_states | redo_queue_size | 分發器性能/日志網絡瓶頸 |
Oracle | V$DATAGUARD_STATS , V$ARCHIVE_DEST | APPLY LAG | 增帶寬/并發;定期觀測歸檔堆積 |
口訣: 主-網-從-延
📌 存儲瓶頸排查卡片
數據庫 | 緩存相關參數 | I/O 檢查方法/指標 | 典型優化措施 |
---|---|---|---|
MySQL | innodb_buffer_pool_size | iostat 、SHOW ENGINE INNODB STATUS | 加大 buffer、調整 flush 策略 |
PostgreSQL | shared_buffers , work_mem | pg_stat_io , blks_hit/blks_read 比率 | VACUUM/避免順掃 |
SQL Server | Buffer Pool, TempDB 使用率 | dm_io_virtual_file_stats , PerfMon | 拆 TempDB;優化日志寫 |
Oracle | DB_CACHE_SIZE , LOG_BUFFER | AWR、V$FILESTAT , V$SYSSTAT 中 I/O wait | ASM + IOPS 策略調優 |
口訣: 存-IO-緩-滿
🔍 可視化圖譜(建議配合展示使用)
? 鎖類型與死鎖圖譜(跨數據庫對比)
MySQL (InnoDB): Record Lock, Gap Lock, Next-Key Lock
PostgreSQL: Row Exclusive, Share, Access Exclusive
SQL Server: RID, PAGE, KEY, TABLE, INTENT 鎖
Oracle: TX (行鎖), TM (表鎖)
🧠 死鎖檢測原則:等待圖 + 回滾成本最低事務優先
? InnoDB 存儲架構圖(簡化示意)
+-------------------------+
| Buffer Pool |
| +---------------------+ |
| | Page Cache / Dirty | |
| | Undo / Redo | |
+-------------------------+↓ Flush
+-------------------------+
| Tablespace (.ibd) |
| Doublewrite Buffer |
+-------------------------+
? 主從復制流程圖(通用模型)
[主庫 Binlog] → [IO Thread] → [Relay Log (從)] → [SQL Thread 執行]
🛠 延遲常見位置:大事務 → Relay 寫慢 → SQL 應用慢