쿼리 중지 전 프로세스 목록 확인
MySQL에서 실행 중인 쿼리를 중지하기 전에, 먼저 show 명령어를 사용하여 현재 몇 개의 프로세스가 실행되고 있는지 확인해야 합니다.
프로세스 목록을 확인하는 쿼리는 다음과 같습니다.
mysql> show processlist;
위 쿼리를 실행하면 각 프로세스의 ID가 포함된 결과를 얻을 수 있습니다.
+----+-----------------+-----------------+----------+---------+-------+------------------------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+-----------------+-----------------+----------+---------+-------+------------------------+------------------+ | 4 | event_scheduler | localhost | NULL | Daemon | 71034 | Waiting on empty queue | NULL | | 8 | Manish | localhost:53496 | business | Query | 0 | starting | show processlist | +----+-----------------+-----------------+----------+---------+-------+------------------------+------------------+ 2 rows in set (0.00 sec)
rds_kill 명령으로 쿼리 중지하기
위 출력 결과에서 현재 사용 중인 데이터베이스는 'business'이며, 해당 프로세스의 ID는 8입니다. 쿼리를 중지하려면 프로세스 목록에 표시된 ID를 인자로 하여 call 명령을 사용하면 됩니다. 기본 문법은 다음과 같습니다.
call mysql.rds_kill(valueOfGivenIdInProcesslist);
이제 위 문법을 실제 쿼리에 적용하고, valueOfGivenIdInProcesslist 자리에 8을 입력하면 다음과 같습니다.
mysql> CALL mysql.rds_kill(8);
위 쿼리를 실행하면 다음과 같은 출력이 나타납니다.
ERROR 2013 (HY000): Lost connection to MySQL server during query
이 오류 메시지는 대상 쿼리가 정상적으로 중지되었기 때문에 발생하는 것입니다. 즉, 연결이 강제로 종료되면서 클라이언트와 서버 간의 연결이 끊긴 상태를 의미합니다.
쿼리 중지 여부 확인하기
use 명령어를 사용하여 쿼리가 실제로 중지되었는지 확인할 수 있습니다. 기본 문법은 다음과 같습니다.
use yourDatabaseName;
위 문법을 시스템의 데이터베이스 이름 'business'에 적용한 쿼리는 다음과 같습니다.
mysql> use business;
위 쿼리를 실행하면 다음과 같은 출력이 나타납니다.
No connection. Trying to reconnect... Connection id: 10 Current database: *** NONE *** Database changed mysql>
"Trying to reconnect..."라는 메시지가 출력되는 것으로 보아 쿼리가 성공적으로 중지되었음을 알 수 있습니다. 또한 현재 데이터베이스가 "none"으로 표시되는데, 이는 기존 연결이 종료되고 새로운 연결(ID 10)이 생성되었기 때문입니다. 잠시 후에는 데이터베이스와의 연결이 자동으로 복구되어 정상적인 작업을 계속 진행할 수 있습니다.