← 전체 글로 돌아가기

웹 개발

배포 후 데이터가 사라졌을 때 확인하는 순서

환경변수 설정 차이로 인해 데이터베이스 연결이 달라질 수 있다. 로컬과 운영의 데이터 저장소가 다를 때 문제를 진단하는 방법.

배포 후 갑자기 데이터가 사라졌다. 사용자 정보, 게시글, 모든 게 없다. 당황하겠지만, 대부분 데이터베이스 연결이 달라진 것일 수 있다.

핵심 질문: 로컬과 운영이 같은 데이터베이스를 쓰는가

로컬에서는 SQLite나 로컬 PostgreSQL을 쓸 수 있다. 그런데 배포 환경에서는 클라우드 데이터베이스를 쓰는가? 아니면 다른 환경인가?

환경변수 DATABASE_URL이 로컬과 배포에서 다를 수 있다.

먼저 데이터가 정말 없는지 확인

npm run build

빌드 후 실제로 어떤 데이터베이스 연결 문자열이 사용되는가? 마이그레이션은 제대로 실행되었는가?

환경변수 확인하기

배포 환경의 환경변수 설정을 다시 한 번 확인한다. DATABASE_URL이 정말 맞는 서버를 가리키고 있는가?

개발 환경과 배포 환경의 데이터베이스 주소가 다르다면, 데이터도 다른 곳에 저장된다.

로컬과 운영 환경 비교

로컬 데이터베이스에는 데이터가 있는가? 확인해보자. 그럼 배포 환경의 데이터베이스로 그 데이터를 옮겨야 한다.

혹은 배포 환경의 데이터가 진짜 없는 건가? 데이터베이스에 접속할 수 있는가? 테이블이 정말 없는가?

마이그레이션 확인하기

데이터베이스 마이그레이션이 배포 환경에서 제대로 실행되었는가? 테이블이 생성되었는가?

만약 마이그레이션을 건너뛰었다면, 수동으로 실행해야 할 수도 있다.

백업에서 복구하기

만약 이전 환경에 데이터가 남아 있다면, 그곳에서 덤프해서 새 환경으로 옮기는 방법도 있다.

pg_dump old_database > backup.sql
psql new_database < backup.sql

하지만 이건 마지막 수단이다. 먼저 정말 데이터가 없는 건지, 아니면 연결만 잘못된 건지 확인하자.

한 번에 여러 설정을 바꾸지 말 것. 환경변수를 하나만 고쳐보고, 실제로 데이터가 보이는지 확인한다.

이번 문제로 배운 점을 기록해두면, 다음에 데이터 손실을 예방할 수 있다.