[MySQL] ERROR 1129 (HY000): Host '123.11.11.1' is blocked because of many connection errors
MySQL 5 버전사용 할때는 없었던 문제가 발생을 해서 확인한 것들을 정리한것입니다.
이에대해 글이 있는데 전 적용이 안되던데요. 호스트 플러시 해도 안되어 systemctl stop mysqld 로 멈춘다음 다시 시작 시켰습니다.
제경우에는 CentOS7에서 설치된 MySQL8 버번에서 안되었습니다.
그리고 중요한것은 왜? 그런지 접속하는 클라이언트(보통은 프로그램 이겠지요) 원인을 찾아야 합니다.
그렇지 않으면 다시 상황이 발생합니다.
여기서 수치를 높게 준것은 발생 가능성을 낮추는것 뿐입니다.
오류는 아래와 같은것이 발생하고 호스트 플러시 하라고 합니다. 전 했는데 안되었다는것입니다.
그렇기에 안되시는 분은 수치를 늘려 놓고(당장 사용은 해야 되기 때문에) 원인을 찾아야 합니다.
# 정상적이지 않은 접속으로 판된 되는 경우
ERROR 1129 (HY000): Host '123.11.11.1' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
만약 원인을 찾지 못해 주기적으로 플러시를 해줘야 한다면 쉘스크립트를 아래와 같이 하나 만들어 사용하면 됩니다.
# 가끔 실행 - 쉘스크립트를 만들어 cron 스케줄러에 넣어 준다.
#/bin/sh
mysql -u root -p비밀번호 --host=localhost --port=3306 -e "flush hosts"
서버 재시작하지 않고 임시로 설정을 적용 하는 것입니다.
맥스 커넥션은 너무 많이 주면 안됩니다. 자원 고갈 될 수 있습니다.
# mysql> 접속해서 값을 설정 해준다.
flush hosts;
set global max_connections=300;
set global max_connect_errors=900000;
flush hosts;
위와 동일한것을 서버 환경설정에 적용 하는것입니다.(영구 설정)
# 데이터베이스 시작할 때 적용하는 /etc/my.cnf
max_connections = 300
max_connect_errors = 10000
설정이 잘 되었는지 보기 위한 것입니다.
# 설정된 상태 보기
SHOW VARIABLES LIKE 'max_connections';
SHOW VARIABLES LIKE 'max_connect_errors';
전 원인이 되는 프로그램을 찾아 수정 했더니 아래 수치가 더 이상 늘어 나지 않았습니다.
원인은 커넥션 하는 부분에서 바로 끊어지게끔 되는(오류로 인한) 그런것이었습니다.
# 이게 계속 늘어 난다면 문제가 있는 것이다.
mysql> SHOW GLOBAL STATUS LIKE 'Aborted_connects';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| Aborted_connects | 14016 |
+------------------+-------+
1 row in set (0.00 sec)