首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL DBA 必備:mysqladmin 監控命令實戰總結(含 awk 即時儀表板)

     編輯:MySQL 資料庫相關知識

核心命令: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 隨時掌握資料庫脈搏。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved