쿼리의 소스 IP/호스트명 알아내기

Suresh Ramagiri -

특정 쿼리의 소스 IP/호스트명을 알아내려면 "system.sessions" 또는 "information_schema.processlist" 테이블을 조회할 수 있습니다.

전체 또는 부분적인 쿼리를 알고 있다면, 어느 하나의 테이블에서 찾을 수 있습니다.

SQL> select source_ip, last_statement from system.sessions where last_statement 
LIKE 'select * from foo.bar';

+------------+-----------------------+
| source_ip | last_statement |
+------------+-----------------------+
| 10.1.2.185 | select * from foo.bar |
+------------+-----------------------+

SQL> select host, info from information_schema.processlist where info LIKE 'select * from foo.bar';

+------------------+-----------------------+
| host | info |
+------------------+-----------------------+
| 10.1.2.185:61684 | select * from foo.bar |
+------------------+-----------------------+

'session_id'를 알면 직접 쿼리를 할 수 있습니다.

SQL> select source_ip, last_statement from system.sessions where session_id=10198018;

+------------+-----------------------+
| source_ip | last_statement |
+------------+-----------------------+
| 10.1.2.185 | select * from foo.bar |
+------------+-----------------------+

SQL> select host, info from information_schema.processlist where id = 10198018;

+------------------+-----------------------+
| host | info |
+------------------+-----------------------+
| 10.1.2.185:61684 | select * from foo.bar |
+------------------+-----------------------+

다수의 외부 로드 밸런스를 사용하면 위의 방법은 모든 쿼리가 로드 밸런서에서 오는 것으로 표시합니다. 만약 그런 경우라면, 각 쿼리의 IP주소를 SQL주석으로 포함시키는 것이 좋은 해결책입니다.

예:
SQL> select(1) /*client-IP: 192.168.1.1 */;

IP/호스트명을 SQL 주석으로 포함시키면 프로세스 목록 및 쿼리 로그에서 쿼리의 소스를 식별하는데 도움이 됩니다. 특정 쿼리를 실행하는 애플리케이션 코드에 행 번호를 추가하는 것 또한 도움이 될 수 있습니다. 이런 두가지 방법은 문제 쿼리를 식별하고 해결하는데 도움이 됩니다.

또 다른 질문이 있으십니까? 문의 등록

0 댓글

댓글을 남기려면 로그인하세요.
Zendesk 제공