首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

mysqladmin 遠程管理 MySQL 完全指南:關機、狀態、進程、備份一條令下

     編輯:MySQL 綜合教學

mysqladmin 核心定位

mysqladmin 是 MySQL 官方提供的**管理型客戶端**,專門執行伺服器級操作 (關機、刷新、狀態、帳號、備份協調),不處理業務查詢。支援本地/遠程、TCP/Socket/Pipe/Shared Memory 多種協議。

常用參數速查

參數短參說明範例
--host-h目標主機 IP/主機名-h 10.101.0.1
--user-u登入帳號-u root
--password-p密碼 (緊跟無空格或留空交互輸入)-pPass123
--port-P埠號 (預設 3306)-P 3307
--socket-SUnix Socket 路徑-S /tmp/mysql.sock
--protocol強制協議--protocol=tcp
--silent-s連線失敗靜默退出 (腳本友好)-s
--wait-w連線失敗重試 (秒)-w 5
--vertical-E垂直顯示輸出 (寬表易讀)-E
--connect-timeout連線逾時秒數--connect-timeout=10
--shutdown-timeout關機等待秒數--shutdown-timeout=60

核心命令清單

命令功能典型場景
ping檢查服務存活健康檢查、啟動腳本就緒探針
status簡短狀態 (Uptime、Threads、Questions、Slow queries)快速巡檢
extended-status完整狀態變數 (等同 SHOW GLOBAL STATUS)效能指標採集 (Prometheus Exporter)
variables顯示系統變數 (等同 SHOW GLOBAL VARIABLES)配置審計、差異對比
processlist顯示執行緒清單阻塞分析、Kill 長查詢
kill id,id...殺掉指定線程緊急終止失控查詢
shutdown**正常關閉伺服器**維護窗口、自動化部署前置
reload重新授權表 + 關閉/重開日誌修改權限後生效、Logrotate 配合
flush-hosts清理 Host 快取 (解決 Host blocked)連線錯誤過多導致封鎖
flush-logs切換二進制/錯誤/慢查詢日誌手動輪轉、備份前切割
flush-tables關閉所有開啟表 (刷新到磁碟)備份前凍結、DDL 前準備
flush-privileges重載授權表 (同 reload)權限變更後
create/drop db_name建立/刪除資料庫自動化部署腳本
password new_pwd修改當前用戶密碼輪換密碼腳本
version顯示版本資訊資產掃描、相容性檢查
start-slave / stop-slave控制複寫 SQL/IO 線程延遲處理、拓撲變更

遠程管理實戰範例

1. 安全關機 (生產環境標準流程)

# 1. 停止寫入流量 (應用層下線/切換)
# 2. 刷新表確保資料落盤
mysqladmin -h 10.101.0.1 -u admin -p'Pass123' flush-tables

# 3. 正常關機 (等待進行中交易提交)
mysqladmin -h 10.101.0.1 -u admin -p'Pass123' shutdown

# 4. 驗證程序已退出
ssh 10.101.0.1 "ps -ef | grep mysqld | grep -v grep"

2. 批次殺掉長查詢

# 取得超過 60 秒的查詢 ID
mysqladmin -h 10.101.0.1 -u admin -p'Pass123' processlist | \
awk '$6 > 60 && $3 != "system user" {print $2}' | \
xargs -r -I {} mysqladmin -h 10.101.0.1 -u admin -p'Pass123' kill {}

3. 監控腳本整合 (Prometheus Node Exporter 風格)

#!/bin/bash
# mysql_metrics.sh
HOST="10.101.0.1"
USER="monitor"
PASS="MonPass123"
mysqladmin -h$HOST -u$USER -p$PASS extended-status | \
awk -F'|' '/^[|] / {gsub(/ /,"",$2); gsub(/ /,"",$3); print "mysql_"tolower($2)" "$3}' | \
grep -E 'mysql_(uptime|threads_connected|questions|slow_queries|innodb_buffer_pool_read_requests|innodb_buffer_pool_reads|handler_read_key|handler_read_rnd_next)'

4. Windows 管道/共享記憶體連線 (本機無 TCP 開銷)

mysqladmin -u root -p --protocol=pipe --socket=MySQL shutdown
mysqladmin -u root -p --protocol=memory shutdown

權限需求

  • SHUTDOWN 權限:執行 shutdown、kill。
  • PROCESS 權限:執行 processlist、kill 他人線程。
  • RELOAD 權限:執行 flush-*、reload。
  • SUPER 權限:start-slave/stop-slave、set global 變數。

建議建立專用管理帳號:CREATE USER 'admin'@'10.101.0.%' IDENTIFIED BY 'StrongPass'; GRANT SHUTDOWN, PROCESS, RELOAD, SUPER ON *.* TO 'admin'@'10.101.0.%';

常見問題

現象原因解決
Access denied for user 'root'@'10.101.0.5'root 預設只允許 localhost建立遠程管理帳號或修改 root host
Can't connect to MySQL server on '10.101.0.1' (10060)防火牆/安全組阻擋 3306開放埠、確認 bind-address=0.0.0.0
shutdown 後資料遺失未先 flush-tables / innodb_fast_shutdown=0關機前 flush-tables、設 innodb_fast_shutdown=0

mysqladmin 輕量、無依賴、支援所有 MySQL 版本,是自動化運維、CI/CD 流水線、緊急故障處理的**瑞士刀**。熟練掌握其參數與命令組合,讓遠程管理如同本地操作般絲滑。

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