운영업무 중 로그 테이블에 추가로 데이터를 관리하기 위해 2가지 컬럼 추가 작업이 필요했다.
테스트 서버에서 먼저 단순 컬럼 추가 명령어로 컬럼 2개를 추가 후 테스트 서버에서 잘 사용확인 했는데,,
운영에서 퇴근시간에 맞춰 6시에 컬럼추가를 하려니 DB테이블(로그 테이블)이 락걸렸다..
로그테이블은 시스템 기능의 많은 부분에 연관이 있어서 시스템 전체가 멈춰버렸다.
인프라팀도 퇴근을 한 상태라 구글에서 찾아본 뒤 인프라팀의 유선도움을 받아 해당 데이터 조회 후 킬을 진행했다.
### lock 테이블 조회
select datname,
pid,
usename,
application_name,
client_addr,
client_port,
backend_start,
query_start,
wait_event_type,
state,
backend_xmin
query
from pg_stat_activity
** 이건 별도로 보기 편하게 조건 추가
[where wait_event_type = 'Lock' order by query_start desc;]
조회 후 pid (프로세스id) 찾아서
SELECT pg_cancel_backend([pid]); 를 실행 했더니 lock이 풀리고 시스템도 정상으로 돌아왔다
(SELECT pg_terminate_backend([pid]) FROM pg_stat_activity 는 해당 PID와 연계된 모든 상위 쿼리 프로세스를 종료)
그냥 컬럼추가라고 생각해서 단순 작업이라고 생각했었는데 물려있는 기능들이 많다보니,, 사용중에 락이 걸려버린 것 같았다.
다음부터는 단순하게 생각할 것이 아닌 더 신중히 판단해야 한다는 중요성을 느꼈다..!
추후에 인프라팀 요청 후 정기 날짜를 잡아 서비스를 내린다음 컬럼추가 하여 정상 작업 진행완료 하였다.
'DB' 카테고리의 다른 글
| UNION ALL vs 서브쿼리 .. DB 속도 확인 (0) | 2022.12.05 |
|---|
댓글