← 전체 글로 돌아가기

DB

DB 마이그레이션: 먼저 백업하고 시작하기

데이터베이스 마이그레이션 전에 확인해야 할 백업 절차와 복구 계획을 정리했다.

데이터베이스 마이그레이션을 할 때 가장 중요한 건 '먼저 백업하기'다. 마이그레이션 스크립트가 예상과 다르게 동작해서 데이터가 손실될 수 있고, 이 경우 백업이 유일한 구제 수단이다.

마이그레이션 실행 전에 어떤 백업 방법을 쓸지, 복구는 어떻게 할지 미리 정해두는 게 좋다.

마이그레이션 전 디스크 여유 확인

백업 파일이 저장될 공간이 충분한지 먼저 본다.

df -h

# 데이터베이스 크기 확인 (PostgreSQL 예시)
du -sh /var/lib/postgresql/

전체 용량의 50% 이상 여유가 있어야 백업과 마이그레이션을 안전하게 진행할 수 있다.

전체 데이터베이스 덤프

PostgreSQL이라면 pg_dump로 전체 데이터베이스를 백업한다.

# 텍스트 형식 백업 (복구 시 더 유연함)
pg_dump dbname > db_backup_$(date +%Y%m%d_%H%M%S).sql

# 또는 커스텀 형식 (더 빠르고 압축됨)
pg_dump -Fc dbname > db_backup_$(date +%Y%m%d_%H%M%S).dump

MySQL/MariaDB라면:

mysqldump --all-databases > full_backup_$(date +%Y%m%d).sql

백업 파일 확인

백업 파일의 크기와 무결성을 확인한다.

ls -lh db_backup*.sql
wc -l db_backup_20260629.sql  # 라인 수로 데이터 양 대략 파악

테스트 환경에서 마이그레이션 실행

프로덕션 데이터베이스에서 바로 마이그레이션 스크립트를 실행하지 말고, 백업본을 복원해서 테스트 환경에서 먼저 실행해본다.

# 테스트 DB 생성
createdb test_migration

# 백업 복원
psql test_migration < db_backup_20260629.sql

# 마이그레이션 스크립트 실행
psql test_migration < migrate.sql

마이그레이션 실행 후 검증

  1. 행 수 확인: SELECT COUNT(*) FROM table_name;
  2. 주요 인덱스가 있는지 확인: \d table_name (PostgreSQL)
  3. 외래키 제약이 올바른지 확인
  4. 데이터 샘플링: 특정 행들이 제대로 변환됐는지 확인

복구 계획

문제가 발생하면 다음 순서대로 복구한다:

  1. 마이그레이션이 진행 중이라면 중단
  2. 백업본을 새 데이터베이스에 복원
  3. 응용 프로그램의 연결 문자열을 백업본으로 돌림
  4. 원인 분석 후 마이그레이션 스크립트 수정
  5. 다시 테스트 환경에서 검증 후 프로덕션 재시도

마이그레이션은 생각보다 자주 예상 밖으로 동작한다. 백업과 복구 계획을 먼저 준비해두면 문제가 생겨도 당황하지 않고 빠르게 대응할 수 있다.