트랜잭션을 통한 lcok 증상으로 간헐적인 DB 지연이 발생하여 1초마다 innodb lock 을 확인할 수 있는 스크립트를 작성하여 원인 파악을 했다.
show full processlist, show engine innodb status 결과도 같이 확인하면 좋다.
#!/bin/bash
# 출력 파일 정의
OUTPUT_FILE1="/path/INNODB_TRX.log"
OUTPUT_FILE2="/path/INNODB_LOCKS.log"
OUTPUT_FILE3="/path/INNODB_LOCKS_WAITS.log"
# 로그 파일이 있으면 삭제(필요시 사용)
#if [ -f "$OUTPUT_FILE" ]; then
# rm "$OUTPUT_FILE"
#fi
# 무한 루프 시작
while true; do
# 현재 날짜 및 시간
echo "Timestamp: $(date)" >> "$OUTPUT_FILE1"
echo "Timestamp: $(date)" >> "$OUTPUT_FILE2"
echo "Timestamp: $(date)" >> "$OUTPUT_FILE3"
# InnoDB 트랜잭션 상태 쿼리 실행
mysql -u user -p'password' -e "SELECT * FROM information_schema.INNODB_TRX;" >> "$OUTPUT_FILE1"
echo "" >> "$OUTPUT_FILE1"
# InnoDB 잠금 상태 쿼리 실행
mysql -u user -p'password' -e "SELECT * FROM information_schema.INNODB_LOCKS;" >> "$OUTPUT_FILE2"
echo "" >> "$OUTPUT_FILE2"
# InnoDB 잠금 대기 상태 쿼리 실행
mysql -u user -p'password' -e "SELECT * FROM information_schema.INNODB_LOCK_WAITS;" >> "$OUTPUT_FILE3"
echo "" >> "$OUTPUT_FILE3"
# 1초 대기
sleep 1
done
'DB' 카테고리의 다른 글
개발 DB 구성 작업 정리(스키마, mysql db 만 복구) (0) | 2025.02.28 |
---|---|
mysql 5.5 full dump 복구 후 원격 실패 오류 (0) | 2024.02.29 |