잘 동작하던 스마트팜 서버에서 갑자기 DB를 불러오지 못하는 현상이 발생했다.
에러를 잡으려고 콘솔에 찍어보려 했는데, 콘솔에 메시지도 전혀 찍히지 않는 것이었다..
원인을 찾아보니 , forever로 실행한 애플리케이션은 콘솔에 메시지가 찍히지 않는다는 것이다.
생각해보면 당연한것임을,,
그래서 node명령어로 서버 실행 후 콘솔을 확인해보니
Error connecting to database: Error: Packets out of order. Got: 1 Expected: 0
이런 에러메시지가 찍혔고, 데이터베이스와의 연결에 문제가 생긴것을 확인했다.
mysql -h DB_IP -u DB_ID -p
위 명령어로 데이터 베이스에 접속을 시도하자
ERROR 1129 (HY000): Host '접속IP' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
위 에러가 발생했다.
이건 뭐지? 하고 구글링으로 찾아보니 [원격 서버에서 Mysql Server로 단순 커넥션 한 뒤 close하면
Mysql은 비정상적인 접속으로 판단하여 해당 ip를 블럭킹한다.] 라곤하는데,, 쉽게 말해 MySQL 서버에서 동일한 IP 주소로 너무 많은 연결 오류가 발생할 경우 해당 IP 주소를 차단하고, 그때 발생하는 에러메시지라고 한다. (기본값은 10)
어쩌다 우리의 IP가 차단당한지는 잘 모르겠지만, 어쨋든 해결해주자.
해결 방법으로는, 현재 DB의 IP주소는 Nas의 IP와 동일하므로, Nas에 SSH로 접속하여 로컬DB접속을 통해
해결하기로 하였다.
1.로컬 터미널에서 다음 명령어로 Nas에 SSH로 접속한다.
ssh -p PORT_NUM NAS_ID@NAS_IP
2.해당 ip에서 로컬로 mysql에 접속한다.
mysql -u DB_ID -p
3. DB콘솔에mysqladmin -u root -p flush-hosts 또는 flush hosts 쿼리를 날린다.
4. 이제 차단이 해제됐음을 다시 서버를 실행하고, DB 통신을 테스트하여 확인한다.
잘 나오는 모습..!
'📑Project , 대외활동 > 🐄스마트팜 - Web Page' 카테고리의 다른 글
[스마트팜] - forever로 실행한 애플리케이션 log 확인하기 (0) | 2023.07.05 |
---|---|
[스마트팜] - NAS 설치 (0) | 2023.06.09 |
[스마트팜] - 공인IP와 사설 IP, 포트 포워딩 (1) | 2023.06.09 |
[스마트팜] - 좌충우돌 첫 외주 (0) | 2023.06.09 |