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
마이그레이션 실행 후 검증
- 행 수 확인:
SELECT COUNT(*) FROM table_name; - 주요 인덱스가 있는지 확인:
\d table_name(PostgreSQL) - 외래키 제약이 올바른지 확인
- 데이터 샘플링: 특정 행들이 제대로 변환됐는지 확인
복구 계획
문제가 발생하면 다음 순서대로 복구한다:
- 마이그레이션이 진행 중이라면 중단
- 백업본을 새 데이터베이스에 복원
- 응용 프로그램의 연결 문자열을 백업본으로 돌림
- 원인 분석 후 마이그레이션 스크립트 수정
- 다시 테스트 환경에서 검증 후 프로덕션 재시도
마이그레이션은 생각보다 자주 예상 밖으로 동작한다. 백업과 복구 계획을 먼저 준비해두면 문제가 생겨도 당황하지 않고 빠르게 대응할 수 있다.