ERROR 1129 (HY000): Host 'xxx' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
含義:該主機短時間內連接錯誤次數超過 max_connect_errors 閾值(默認 100),被 MySQL 列入黑名單拒絕後續連接。
mysqladmin -u root -p flush-hosts
或登錄 MySQL 執行:
FLUSH HOSTS;
# /etc/my.cnf 或 my.ini
[mysqld]
max_connect_errors = 100000 # 建議設大,如 10萬
wait_timeout = 30 # 空閒連接保持秒數,防積壓
修改後 必須重啟 MySQL 生效。
mysql> SET GLOBAL max_connect_errors = 100000;
mysql> SET GLOBAL wait_timeout = 30;
動態修改僅對新連接生效,重啟後失效,務必同步更新配置文件。
調大閾值只是治標,**必須找出連接失敗根因**:
default-authSHOW GLOBAL STATUS LIKE 'Aborted_connects'; 統計中斷連接數SHOW GLOBAL STATUS LIKE 'Connection_errors%'; 細分錯誤類型log_error_verbosity=3 記錄詳細錯誤日誌tcpdump -i eth0 port 3306 -w mysql.pcap| 場景 | 建議值 | 說明 |
|---|---|---|
| Web 應用(連接池) | 30-60 秒 | 配合連接池 idleTimeout 略小於此值 |
| 長連接批處理 | 300-600 秒 | 避免任務間隙被斷開 |
| 防止睡眠連接佔槽 | ≤ 60 秒 | 配合 interactive_timeout 區分交互/非交互 |
max_connect_errors 調大 + flush-hosts 解封可快速恢復業務,**但核心在於排查並修復連接失敗根因**。建議建立連接錯誤監控告警(如 Aborted_connects 突增觸發告警),配合連接池最佳實踐,從架構層面消除此類故障。