AWS RDS MySQL 因為 [HY000][1129] many connection errors 錯誤導致無法連線,該怎麼辦?

不管是因為設定錯誤、程式錯誤、資安問題等種種因素所導致,無法連線到使用中的 MySQL 資料庫,對任何情境來說應該都是個大麻煩吧!

尤其是如果這個 MySQL 資料庫是位於 Cloud 雲端環境中的情況下。

既然都連不上了,怎麼執行 mysqladmin flush-hosts 呢? 這可是個典型「雞生蛋,蛋生雞」的困境。

shortie 就來說說當 AWS RDS 中的 MySQL 資料庫給出這種錯誤的時候,自己是怎麼跳脫這個困境。

執行 FLUSH HOST; 敘述

如果剛巧在自己身邊未關機的電腦中,存在一個連線到拒絕連線的 RDS MySQL 資料庫,且該連線帳號有足夠的權限可以執行清除敘述,那麼我們就已經得救了!

這時候只要開啟一個 SQL 查詢視窗,然後直接執行:

FLUSH HOST;

然後,我們應該就可以從原先被拒絕的電腦,連線進入 RDS MySQL 資料庫。

執行 mysqladmin flush-hosts 命令

如果在 AWS EC2 中存在可以連線到 RDS MySQL 的應用程式,那我們可以 SSH 到該 EC2 主機,然後執行下列命令:

$ mysqladmin -h <RDS_Endpoint_URL> -P <port> -u <user> -p flush-hosts

之後,我們就可連線進入 RDS MySQL 資料庫。

重啟 RDS MySQL 資料庫

如果上面兩個方法都不可行,那就只好挑一個對線上使用者影響最小的時段,把 RDS MySQL 資料庫給重新開機,當然這時所引入的 downtime 就是必要之惡了。

這種情況下,連線進入 RDS MySQL 資料庫之後,最好保留一個連線作為之後無法連線的救援連線。接著,趕快找找看到底是甚麼情況,導致這種問題反覆發生才是正解!

參考資料

發佈留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料