← 전체 글로 돌아가기

DB

운영 DB를 건드리기 전에 확인해야 할 것

DB 스키마나 데이터를 변경하기 전에 백업 상태와 현재 상태를 명확히 하면 문제가 생겼을 때 빠르게 대응할 수 있다.

운영 DB에서 문제가 생기면 빠르게 해결해야 한다는 심리가 오히려 문제를 더 크게 만들 수 있다. 검색해서 들어온 상황이라면 먼저 깊게 숨을 쉬고, 재현 조건부터 정확히 파악하는 게 가장 빠른 길이다.

백업이 최근에 있는지 확인한다

DB를 손대기 전에 가장 먼저 할 일은 백업이 실제로 최근에 있는지 확인하는 것이다. 문제가 발생했을 때 롤백할 수 있는 안전장치가 있어야 자신감 있게 문제를 해결할 수 있다.

ls -la /backup/database/
date # 현재 시각 확인

백업 파일의 타임스탐프를 보고 최근에 만들어졌는지 확인한다. 백업이 오래되었다면 먼저 새로운 백업을 만드는 것이 안전하다.

스키마 상태와 마이그레이션 상태를 확인한다

Prisma를 사용한다면 현재 DB 상태와 스키마 정의가 일치하는지 확인한다.

npx prisma validate
npx prisma migrate status

대기 중인 마이그레이션이 있다면 먼저 처리해야 하는지, 아니면 롤백해야 하는지를 판단한다. 불일치가 있으면 그것이 문제의 원인일 가능성이 높다.

권한을 확인한다

DB 연결 정보(DATABASE_URL)가 올바른지, 실제 쿼리를 날릴 권한이 있는 사용자인지를 확인한다.

# 연결 테스트
psql -U dbuser -d database_name -c "SELECT 1"

권한이 없으면 읽기만 가능하거나 특정 테이블만 접근 가능할 수 있고, 이것이 예상과 다른 결과를 만들 수 있다.

현재 문제 상황을 로그에서 찾는다

DB 관련 에러 로그를 확인해서 정확한 에러 메시지를 기록한다.

sudo tail -100 /var/log/postgresql/postgresql.log
# 또는 앱 로그에서
grep -i error /var/log/app.log | tail -20

에러 메시지 전체를 복사해서 나중에 참고할 수 있도록 남긴다.

한 가지씩 확인하고, 각 단계 후에 현재 상태를 기록한다

  1. 백업 확인 완료
  2. 스키마 일치성 확인 완료
  3. 권한 확인 완료
  4. 에러 로그 수집 완료

이렇게 각 단계를 마칠 때마다 체크하면서 진행하면, 문제가 어느 단계에서 발생했는지 명확해진다.

수정 후에도 같은 단계를 다시 확인한다

수정했다면 마찬가지로 백업, 스키마, 권한, 로그를 다시 확인한다. 수정 전후의 상태를 비교해서 실제로 문제가 해결되었는지 명확히 할 수 있다.

마지막으로, 이런 단계들을 짧은 체크리스트로 남겨두면 다음 DB 문제가 나왔을 때 같은 과정을 빠르게 반복할 수 있다.