mysql 1129處理

T1YSL發表於2021-05-18

● 1129 - Host '192.168.2.187' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

原因: 

同一個ip在短時間內產生太多中斷的資料庫連線而導致的阻塞(超過mysql資料庫max_connection_errors的最大值)

此時觀察 log_error=SQL2012.err 發現大量 如下錯誤

2021-04-09T05:29:39.615273Z 281 [Note] Aborted connection 281 to db: 'diancui' user: 'root' host: 'SKY-20160310GED' (Got an error reading communication packets)

2021-04-09T05:29:39.615273Z 278 [Note] Aborted connection 278 to db: 'diancui' user: 'root' host: 'SKY-20160310GED' (Got an error reading communication packets)

先來檢視兩個引數:

show global status like '%abort%'; 

+------------------+-------+

| Variable_name    | Value |

+------------------+-------+

| Aborted_clients  | 123   |      #表示連線的mysql客戶端被kill的數量

| Aborted_connects | 697   |   #表示客戶端登入失敗的數量

+------------------+-------+

Aborted_clients 可能的原因有:

a)客戶端沒有主動關閉mysql連線mysql_close()。

b)wait_timeout設定很短被mysql幹掉了。

c)客戶端由於某些原因被幹掉了。


Aborted_connects可能的原因有:

a)沒有授權或者密碼不對。一般錯誤日誌中會有如下報錯(Access denied for ‘user’@‘host’)

b)連線數滿了。一般報錯包含(too many connections)

c)超過連結時間限制,主要有這個引數控制connect_timeout(mysql預設是10s,基本除非網路環境極端不好,一般不會超時。)


解決辦法:

方法一: 增加 max_connection_errors 數量, 治標不治本.  set global max_connect_errors = 1000;  show variables like '%max_connection_errors%';

方法二: mysqladmin flush-hosts -h 127.0.0.1 -uroot -p -P3308 或者在資料庫中執行 flush hosts;

















來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69990629/viewspace-2772766/,如需轉載,請註明出處,否則將追究法律責任。

相關文章