[MySQL] ERROR 1129 (HY000): Host '123.11.11.1' is blocked because of many connection errors > 리눅스서버
리눅스서버

[MySQL] ERROR 1129 (HY000): Host '123.11.11.1' is blocked because of many connection errors

조회 82회 댓글 0건

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)
 




  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
전체 157건 1 페이지
  • profile_image 디스크 I/O 부하를 많이 주는 프로그램 확인 디스크 I/O 부하를 많이 주는 프로그램을 찾으려면 iotop이라는 도구를 사용 하면 되며 이 도구는 각 프로세스의 I/O 사용량을 실시간으로 모니터링하며, 높은 I/O 사용량을 가진 프로세스를 쉽게 찾을 수 있도록 도와준다. io를 보는데는 iostat 도 있고. vmstat 1 명령으로 CPU 부하와 같이 쓰기나 읽기가 어느정도 인지 보는 방법도 있는데 iotop을 사용하면 프로그램 까지 알…
  • profile_image INSERT 할때 현재 날짜를 디폴트 값으로 처리 MySQL에서 날짜와 시간을 자동으로 입력하려면, TIMESTAMP 또는 DATETIME 필드 타입에 DEFAULT CURRENT_TIMESTAMP 또는 ON UPDATE CURRENT_TIMESTAMP 옵션을 사용할 수 있습니다. 예를 들어, 테이블을 생성할 때 다음과 같이 작성할 수 있습니다  # 5.6 버전 부터는 아래 처럼 디폴트 값으로 CURRENT_TIMESTAMP 를 2개 이상의 컬…
  • profile_image TIMESTAMP와 DATETIME은 모두 날짜와 시간을 저장하는 MySQL의 데이터 타입입니다. 두 타입 모두 'YYYY-MM-DD HH:MM:SS' 형식을 사용하지만, 몇 가지 중요한 차이점이 있다.1. 범위 TIMESTAMP는 1970년 1월 1일 00:00:01 UTC부터 2038년 1월 19일 03:14:07 UTC까지의 범위를 가집니다. 반면에 DATETIME은 1000년 1월 1일 00:00:00부터 9999년 12월 31일 23:…
  • profile_image Brotli는 Google에서 개발한 압축 알고리즘으로, 빠른 압축 속도와 높은 압축률을 제공합니다. 리눅스 환경에서 Brotli를 이용해 파일을 압축하거나 압축을 해제하는 방법은 다음과 같습니다. 속도는 느려요~ 하지만 한두개 압축 하는데는 문제 없습니다. 양이 많으면 속도도 생각할 필요가 있다는 의미 입니다.gzip 보다 10 ~ 20% 정도 더 압축된다고 보시면 됩니다.1. 먼저, Brotli가 설치되어 있는지 확인해야 합니다. 리눅스 터…
  • profile_image 소트 옵션 다음에 -(마이너스)가 있으면 내림차순 없거나 +(플러스)기 있으면 내림 차순으로 정렬이 됩니다. 메모리 사용량 확인 메모리 사용량을 확인 하는데 있어 한 화면에 필요한 것만 보기 위해서 awk를 파이프로 넣어 사용 했습니다. 또는 스왑메모리 확인 하는것 처럼 상위 10개만 보는 방법도 있습니다.  # 메모리 사용량 순으로 보기  ps aux --sort -rss | awk '$4!=0.0'  # 메모리 사용량 0.1 이상인 프로세스…
  • profile_image PID 프로세스 ID 값을 저장해서 보통은 같은 프로그램 실행 할때 이전에 실행된 프로그램이 있으면 kill 처리 하면서 다시 실행 시키는데 여기선 PID 값을 저장하지 않고 pkill 프로그램을 이용해서 kill 처리 후 같은 프로그램을 실행 시키는 것에 대한 것입니다.kill 처리 하지 않고 스케줄에서 일정 시간마다 실행 시키면 이전 프로그램이 종료가 안된 경우는 계속 같은 프로그램이 쌓여서 종국에는 시스템 자원이 고갈되어 서버 죽습니다.P…