← 전체 글로 돌아가기

웹 개발

데이터베이스 마이그레이션 후 배포했을 때 확인 사항

DB 마이그레이션은 신중하게 진행해야 하는데, 현재 상태를 파악하고 각 단계를 명확히 기록하면 문제 발생 시 빠르게 대응할 수 있다.

DB 마이그레이션을 운영 중에 진행해야 한다면, 처음부터 정답을 맞히려고 하기보다는 현재 상태를 먼저 명확히 파악하는 게 더 효율적이다.

현재 마이그레이션 상태를 확인한다

운영 DB의 현재 마이그레이션 상태를 먼저 파악한다.

npx prisma migrate status

대기 중인 마이그레이션이 있다면 어떤 것인지, 적용되지 않은 마이그레이션이 있다면 그것은 무엇인지를 알아야 한다.

마이그레이션 목표와 현재 상태를 정리한다

적용하려는 마이그레이션이 어떤 변경을 하는지 정리한다.

  • 새 테이블을 추가하는가
  • 기존 컬럼을 변경하는가
  • 데이터를 마이그레이션하는가

현재 상태와 목표 상태를 명확히 하면 문제가 생겼을 때 원인을 찾기가 수월하다.

스키마 검증을 먼저 한다

마이그레이션을 실제로 적용하기 전에 스키마가 유효한지 검증한다.

npx prisma validate

에러가 있다면 마이그레이션을 적용해서는 안 되고, 먼저 그 에러를 해결해야 한다.

드라이 런으로 미리 확인해본다

가능하면 스테이징 환경에서 먼저 마이그레이션을 해본다. 실제 운영 DB에 하기 전에 예상 결과를 확인할 수 있다.

백업을 만든다

마이그레이션을 적용하기 직전에 DB 백업을 만든다.

pg_dump database_name > backup_$(date +%Y%m%d_%H%M%S).sql

문제가 생기면 이 백업으로 빠르게 롤백할 수 있다.

마이그레이션을 실행한다

npx prisma migrate deploy

마이그레이션이 진행되는 동안 진행 상황을 모니터링한다. 예상보다 오래 걸리면 문제가 있는 건 아닌지 확인한다.

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

npx prisma validate
npx prisma migrate status

모든 마이그레이션이 성공적으로 적용되었는지 확인한다.

애플리케이션이 여전히 정상적으로 작동하는지 확인한다

DB 마이그레이션 후 애플리케이션 로그를 확인한다.

tail -100 /var/log/app.log

에러가 없고 정상적으로 요청을 처리하고 있는지 확인한다.

데이터가 올바르게 마이그레이션되었는지 확인한다

새로 추가된 컬럼이나 변경된 데이터를 샘플로 확인한다.

# DB에 직접 쿼리해서 데이터 확인
psql -U dbuser -d database_name -c "SELECT * FROM table_name LIMIT 10;"

데이터가 손상되거나 누락되지 않았는지 확인한다.

사용자에게 영향을 주는지 확인한다

데이터베이스 마이그레이션이 실시간 사용자에게 영향을 줄 수 있다. 실제로 공개 URL에서 기능들이 정상 작동하는지 확인한다.

마이그레이션 과정과 결과를 기록한다

이번 마이그레이션에서 적용한 내용, 소요 시간, 발생했던 문제들을 간단히 기록한다. 다음 마이그레이션 때 유사한 상황을 더 빠르게 처리할 수 있다.

마지막으로, DB 마이그레이션은 데이터를 다루기 때문에 신중함이 최우선이다. 시간이 조금 더 걸리더라도 각 단계를 명확히 하고 기록하면 훨씬 안전하다.