Mtop (MySQL top) 是 Perl 編寫的類 top 即時監控工具,顯示執行中查詢、連線狀態、InnoDB 狀態、緩衝池命中率、慢查詢等,適合無圖形介面的伺服器現場排障。
# 1. 系統級 Perl 模組(CentOS/RHEL)
yum install -y perl-Curses perl-DBI perl-DBD-Mysql perl-Getopt-Long perl-Net-Domain
# 2. 或 CPAN 安裝最新版
cpan Curses DBI DBD::mysql Getopt::Long Net::Domain
# 3. 驗證模組載入
perl -e 'use Curses; use DBI; use DBD::mysql; use Getopt::Long; use Net::Domain; print "OK\n"'
# 無輸出/印出 OK 表示成功
wget https://download.softagency.net/MySQL/tools/mtop/mtop-0.6.6.tar.gz
tar zxf mtop-0.6.6.tar.gz
cd mtop-0.6.6
perl Makefile.PL
make
make install
# 安裝至 /usr/local/bin/mtop
mysql -u root -p
GRANT PROCESS, REPLICATION CLIENT, SUPER ON *.* TO 'mtop'@'localhost' IDENTIFIED BY 'mtop_pass';
FLUSH PRIVILEGES;
權限說明:PROCESS (SHOW PROCESSLIST)、REPLICATION CLIENT (SHOW MASTER/SLAVE STATUS)、SUPER (KILL 線程、變更全域變數)。
Mtop 預設尋找 /tmp/mysql.sock,若實際在 /var/lib/mysql/mysql.sock:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
# 或啟動時指定
mtop --socket=/var/lib/mysql/mysql.sock
mtop --dbuser=mtop --password=mtop_pass --host=localhost --port=3306
| 鍵位 | 功能 |
|---|---|
q | 退出 |
s | 切換排序欄位 (Time/Rows/State/Query) |
k | Kill 選中查詢 (需 SUPER) |
f | 篩選查詢 (正則) |
d | 顯示完整查詢文本 |
h | 說明 |
Space | 立即刷新 |
Locked,按 d 看全 SQL,按 k Kill。f 篩選特定表/用戶。r 切換複寫視圖,觀察 Seconds_Behind_Master。| 工具 | 特點 | 適用場景 |
|---|---|---|
| Mtop | 輕量、Perl、互動式、無依賴 | 生產現場快速排障 |
| Innotop | InnoDB 專用、功能更豐富 | 深度 InnoDB 分析 |
| MySQL Shell \watch | 原生、支援 JSON 輸出 | 8.0+ 環境 |
| Prometheus + Grafana | 歷史趨勢、告警、多實例 | 常態化監控 |
| pt-query-digest | 慢查詢日誌分析、報表 | 事後根因分析 |
Mtop 是 DBA 隨身攜帶的「聽診器」,關鍵時刻一條指令看穿資料庫心跳。