核心命令:mysqladmin extended-status
mysqladmin -u root -p -r -i 1 extended-status
# -r (--relative):顯示差值(每秒增量)
# -i (--sleep):間隔秒數
# extended-status:等同 SHOW GLOBAL STATUS
進階 1:grep 過濾關鍵指標
mysqladmin -u root -p -r -i 1 extended-status \
| grep -E "Questions|Queries|Innodb_rows|Com_select|Com_insert|Com_update|Com_delete"
進階 2:awk 加時間戳輸出
mysqladmin -u root -p -h 127.0.0.1 -P 3306 -r -i 1 ext \
| awk -F"|" '{
if ($2 ~ /Variable_name/) {
print " <------------- " strftime("%H:%M:%S") " ------------->";
}
if ($2 ~ /Questions|Queries|Innodb_rows|Com_select|Com_insert|Com_update|Com_delete|Innodb_buffer_pool_read_requests/)
print $2 $3;
}'
進階 3:awk 完整儀表板(生產級)
mysqladmin -P 3306 -u root -p -h 127.0.0.1 -r -i 1 ext \
| awk -F"|" '
BEGIN { count=0; }
{
if ($2 ~ /Variable_name/ && ++count == 1) {
print "----------|---------|--- MySQL Command Status --|----- Innodb row operation ----|-- Buffer Pool Read --";
print "---Time---|---QPS---|select insert update delete| read inserted updated deleted| logical physical";
}
else if ($2 ~ /Queries/) { q=$3; }
else if ($2 ~ /Com_select /) { cs=$3; }
else if ($2 ~ /Com_insert /) { ci=$3; }
else if ($2 ~ /Com_update /) { cu=$3; }
else if ($2 ~ /Com_delete /) { cd=$3; }
else if ($2 ~ /Innodb_rows_read/) { irr=$3; }
else if ($2 ~ /Innodb_rows_inserted/) { iri=$3; }
else if ($2 ~ /Innodb_rows_updated/) { iru=$3; }
else if ($2 ~ /Innodb_rows_deleted/) { ird=$3; }
else if ($2 ~ /Innodb_buffer_pool_read_requests/) { lor=$3; }
else if ($2 ~ /Innodb_buffer_pool_reads/) { phr=$3; }
else if ($2 ~ /Uptime / && count >= 2) {
printf(" %s |%9d", strftime("%H:%M:%S"), q);
printf("|%6d %6d %6d %6d", cs, ci, cu, cd);
printf("|%6d %8d %7d %7d", irr, iri, iru, ird);
printf("|%10d %11d\n", lor, phr);
}
}'
儀表板輸出範例
----------|---------|--- MySQL Command Status --|----- Innodb row operation ----|-- Buffer Pool Read --
---Time---|---QPS---|select insert update delete| read inserted updated deleted| logical physical
10:37:13 | 2231| 274 214 70 0| 4811 160 71 0| 4146 0
10:37:14 | 2972| 403 256 84 23| 2509 173 85 23| 4545 0
10:37:15 | 2334| 282 232 66 1| 1266 154 67 1| 3543 0
指標解讀速查
| 指標 | 含義 | 異常判斷 |
| QPS (Queries) | 每秒總查詢數 | 突增/驟降 → 應用發布/死鎖/慢查詢堵塞 |
| Com_select/insert/update/delete | 每秒各類命令數 | 寫入比例異常 → 業務邏輯變更/刷單 |
| Innodb_rows_read/inserted/updated/deleted | 每秒行級增量 | rows_read >> rows_returned → 全表掃描/缺索引 |
Buffer Pool Logical/Physical Reads | 邏輯讀/物理讀 | Physical/Logical > 1% → 緩存命中率低,需擴容 buffer_pool |
其他常用 mysqladmin 子命令
| 命令 | 用途 |
ping | 檢查服務存活 |
processlist | 查看當前執行緒(等同 SHOW PROCESSLIST) |
variables | 顯示系統變數 |
status | 簡要狀態摘要 |
flush-logs | 切換 Binlog/錯誤日誌 |
kill id | 殺掉指定執行緒 |
shutdown | 關閉 MySQL 服務 |
結語
mysqladmin -r -i 1 extended-status 配合 awk 即時儀表板,是**零依賴、零安裝、秒級部署**的 MySQL 監控利器。將核心指標(QPS、行增量、緩存命中)跑在終端或 Grafana 文本面板,讓 DBA 隨時掌握資料庫脈搏。