[MySql, MariaDB] DB Lock 확인 및 Kill 방법
- Project/CodyTheManager
- 2023. 11. 23.
갑자기 DB Lock 이 걸려 서버 장애가 생기는 경우가 있다. 그럴 경우 빠르게 Kill을 해줘서 장애를 해결 해야 한다.
[DB Lock 걸린 트랜잭션 조회]
우선 트랜잭션 관련 아래 명령어 3개가 있다. 1번은 어떤 쿼리가 락을 걸어버렸는지 확인 할 수 있고, 2번은 락이 걸려 있는 테이블에서 작업하려고 대기중인 상태이고, 3번은 실행중인 트랜잭션이다.
# 락을 걸어 버린 트랜잭션 확인
1. SELECT * from information_schema.INNODB_LOCKS;
# 락이 걸려 대기중인 트랜잭션
2. SELECT * from information_schema.INNODB_LOCK_WAITS;
# 트랜젝션 확인
3. SELECT * from information_schema.INNODB_TRX;
그러면 위 중에 어떤걸 검색해서 kill을 해야 하냐면 1번에서 락을 걸어버린 테이블을 kill 하고 2번은 조회하고 또 kill을 해줘야 한다. 만약 1, 2번을 조회해서 kill을해도 계속 쌓인다고 하면 어쩔수 없이 DB를 재시작 하는 수 밖에 없다.
만약에 실행중인 쿼리문이 select 문이 아니라면 kill 하는 걸 최대한 지양해야 한다. 어떤 데이터 조작을 실행 시켰는데 안되면 문의가 올수 있기 때문이다.
[트랜잭션 kill 방법]
트랜잭션 kill 하는 방법은 kill [trx_id] 명령어로 킬을 하면 된다.
ex) KILL 421471883864240
'Project > CodyTheManager' 카테고리의 다른 글
[Jaspersoft Studio] 재스퍼소프트 Text Filed에 조건부 스타일 주는 법 (2) | 2023.12.01 |
---|---|
[Git] GUI git 툴 이용해서 특정 변경 파일만 stash 하는 방법 (0) | 2023.11.28 |
리눅스 shell로 자동 배포 후 tomcat 자동 shutdown 되는 이슈 해결 (0) | 2023.08.17 |
[MariaDB] DB 이중화 확인 방법과 명령어 (0) | 2023.03.09 |
[Mariadb] Lock wait timeout exceeded; try restarting transaction 원인과 해결방안, 격리레벨 변경 방법 (0) | 2022.12.14 |