본문 바로가기

Database/MySQL

Host 'host_name' is blocked because of many connection errors.Unblock with 'mysqladmin flush-hosts'

Intro.

데이터베이스에 외부에서 접속 시 connection이 lock걸리는 현상인데, 문제는 뭐고, 어떻게 해결해야 하는지 알아보겠다.

 

1. 문제점

  • 너무 많은 연결 오류로 해당 호스트가 block되는 경우이다.

(1) 문제 확인 방법

[1] select @@global.max_connect_errors;

  • 해당 명령어로 error 카운트 개수를 확인할 수 있다.
  • 해당 카운트를 넘으면 host가 블록이 된다.

[2] show variables like '%host%';

  • 해당 명령어를 입력하면 host_cache_size를 확인할 수 있다.

[3] host_cache_size란?

  • host_cache 내용을 가진 스키마 테이블 크기를 지정
  • 0으로 설정하면 호스트 캐시가 비활성화된다.

 

[4] host_cache 란?

  • MySQL 서버는 IP 주소, 호스트 이름 및 오류 정보와 같은 클라이언트에 대한 정보를 포함하는 메모리 내 호스트 캐시를 유지 관리한다.
  • TCP연결에만 호스트 캐시를 사용한다.

 

2. 해결방법

[1] set global max_connections = 10000;

  • 이렇게 늘리면 db 재시작시 초기화 되므로, aws 같은 cloud service를 사용한다면 db parameter group을 수정해서 일괄 적용하자.

[2] SET GLOBAL host_cache_size=300;

  • 만약 300보다 적다면 300으로 맞춰주자. 해당 값은 상황에 따라 달라지는 값이니, 잘 판단해서 넣길 바란다.
  • 위에 넣은 설정과 똑같이 aws같은 cloud service를 사용한다면 db parameter group을 수정해서 일괄 적용하자.

[3] flush hosts;

  • 해당 명령어를 입력하면 block된 host가 unblock이 된다.

 

feat.

추가적인 내용은 아래 레퍼런스를 확인하면 도움이 많이 될 것이다.

 

references

https://dev.mysql.com/doc/refman/5.7/en/host-cache.html#host-cache-flushing

https://dev.mysql.com/doc/refman/5.7/en/flush.html#flush-hosts

 

 

'Database > MySQL' 카테고리의 다른 글

데이터베이스 반정규화(Denormalization)  (0) 2022.05.23
데이터베이스 정규화(Normalization)  (0) 2022.05.23
트랜잭션 특징  (0) 2022.05.07
PK, FK 특징  (0) 2022.05.07
mysql settings  (0) 2022.01.30