데이터 마이그레이션 정리 노트

데이터 마이그레이션 정의

데이터 마이그레이션(Data Migration)은 한 시스템이나 환경에서 다른 시스템이나 환경으로 데이터를 이동하는 전체 프로세스를 의미합니다. 일반적으로 시스템 교체, 업그레이드, 통합 또는 분리 시 수행하며, 데이터의 손실 없이 정확하게 이동하고 서비스 중단(다운타임)을 최소화하는 것이 중요합니다.

일반적으로 다음과 같은 상황에서 수행됩니다.

  • 구형 데이터베이스 시스템에서 최신 데이터베이스 시스템으로 교체할 때

  • 온프레미스(On-premise) 환경에서 클라우드 환경으로 데이터를 이전할 때

  • 하나 이상의 데이터베이스 시스템을 통합하거나, 시스템을 분리할 때

주요 용어 정리

  • ETL: 데이터 추출, 변환, 적재 프로세스
  • 스키마 매핑: 원본과 대상 데이터베이스 간 스키마 연결 및 조정
  • 데이터 정합성: 데이터가 원본과 대상 간 일치하는 상태
  • 다운타임: 시스템 서비스가 일시적으로 중단되는 시간
  • CDC: 실시간으로 데이터 변경을 캡처해 복제하는 기술

데이터 마이그레이션 5단계

데이터 마이그레이션은 일반적으로 다음과 같은 절차로 진행됩니다.

  1. 계획(Planning)
    • 이전할 데이터의 범위 및 일정 계획 수립
    • 위험 요소 평가 및 대응 방안 마련
  2. 추출(Extract)
    • 기존 시스템에서 데이터를 추출(Export)
  3. 변환(Transform)
    • 새 시스템에 맞게 데이터 형태(스키마 등)를 변경 및 정제(Cleansing)
  4. 적재(Load)
    • 변환된 데이터를 새로운 시스템에 삽입(Import)
  5. 검증(Validation)
    • 이전 후 데이터 정합성 및 무결성 확인

데이터 마이그레이션 기법

전체 덤프 및 로드 방식(Full Dump & Load)

  • 정의: 데이터를 전체적으로 덤프(Export)한 후 일괄적으로 새로운 환경에 로드(Import)
  • 방법: 데이터베이스의 백업 파일을 생성한 뒤 새로운 시스템에 복원하는 과정을 예시로 들수 있다.
  • 장점: 구현이 간단함
  • 단점: 서비스 중단(다운타임) 발생 가능
  • 적용 상황: 작은 데이터 규모, 다운타임 허용 가능한 환경

ETL(Extract, Transform, Load)

  • 정의: 데이터를 추출(Extract), 변환(Transform), 적재(Load)하는 과정
  • 방법: 원본시스템에서 데이터 추출 -> 대상 시스템에 맞도록 데이터 형식 변환/정제 -> 변환된 데이터를 대상에 적재
  • 장점: 복잡한 데이터 변환 로직의 적용과 데이터 정제 가능, 데이터 품질을 높일 수 있음
  • 단점: 실시간 처리가 어려움
  • 적용 상황: 데이터 스키마 변경, 데이터 정제 필요 환경
    • 배치(batch) 처리로 이루어지는 경우가 많음

CDC(Change Data Capture)

  • 정의: 변경된 데이터를 실시간으로 캡처하여 지속적으로 복제
  • 방법: 변경 데이터 캡처 기술을 활용한 방법으로, 원본 데이터베이스에서 일어나는 변경(insert/update/delete)만 실시간 포착 -> 대상 데이터베이스에 적용
    • 초기 마이그레이션 시 전체 데이터를 한 번 적재 -> 이후부터 발생하는 변경 사항만 지속적으로 동기화 함으로써 거의 실시간 데이터 복제를 구현 -> 마이그레이션 과정 동안에도 소스와 대상 데이터베이스가 최대한 일치하도록 유지 가능하여 무중단/최소중단 마이그레이션이 가능
  • 장점: 다운타임 최소화 또는 무중단 마이그레이션 가능
  • 단점: 초기 설정 복잡
  • 적용 상황: 대용량 데이터 및 24×7 서비스 환경

직접 쿼리 기반 이관 방식

  • 정의: SQL 쿼리를 사용해 데이터베이스 간 직접 데이터 이전
  • 장점: 중간 과정 없이 바로 데이터 이전 가능
    • 예를 들어 애플리케이션 코드에서 두 DB를 연결해 INSERT … SELECT 문을 실행하면, 중간 파일 없이도 한 데이터베이스에서 다른 데이터베이스로 데이터를 바로 복사
    • 데이터베이스 링크를 활용하여 원본 DB의 테이블을 대상으로 직접 조회 및 적재하는 방식
  • 단점: 시스템 부하 발생 가능
    • 적절한 트랜잭션 관리와 네트워크 대역폭 확보 등이 필요
  • 적용 상황: 소량 데이터 이관, 즉각적인 데이터 이전 필요 시

데이터 마이그레이션 과정

  1. 사전 준비 및 스키마 구성

    • 원본과 동일한 스키마 구조를 생성하여 준비
  2. 데이터 추출(백업)

    • mysqldump 등 도구로 데이터 추출
  3. 데이터 로드(적재)

    • 덤프 파일을 새로운 DB에 로드
  4. 데이터 검증

    • 레코드 수 및 데이터 정합성 검증
  5. 서비스 전환 및 모니터링

    • 서비스 연결 전환 후 성능 및 데이터 모니터링

5. MySQL 쿼리 예제

테이블 생성

  • 데이터베이스 마이그레이션을 수행할 때 활용할 수 있는 간단한 MySQL 쿼리 예시는 다음과 같습니다. (원본 데이터베이스를 old_database, 대상 데이터베이스를 new_database라고 가정)
  • 테이블 생성 예: 새로운 DB에 원본 테이블과 동일한 구조의 테이블을 생성하는 SQL입니다.
CREATE TABLE new_database.Employees LIKE old_database.Employees;

데이터 복사

  • 데이터 복사 예: 원본 DB에서 대상 DB로 데이터를 일괄 복사하는 SQL입니다. (Employees 테이블의 모든 컬럼 데이터를 한 번에 이전)
INSERT INTO new_database.Employees
SELECT * FROM old_database.Employees;

데이터 검증

  • 데이터 검증 예: 마이그레이션 전후 두 테이블의 레코드 수를 비교하여 데이터가 빠짐없이 복사되었는지 확인합니다.
    • 아래 쿼리의 결과가 일치하면 레코드 수가 동일하기 때문에 데이터가 모두 옮겨졌음을 러프하게 확인할 수 있습니다.
SELECT COUNT(*) FROM old_database.Employees;
SELECT COUNT(*) FROM new_database.Employees;

6. 마이그레이션 사례

레거시 시스템에서 신규 시스템으로 이관

  • ETL 도구를 이용한 데이터 추출, 변환, 적재
  • 주말 유지보수 시간을 활용하여 서비스 연결 전환

온프레미스에서 클라우드로의 마이그레이션

  • 전체 데이터 덤프 후 클라우드 DB 복원
  • CDC 방식으로 실시간 데이터 동기화
  • 무중단 서비스 전환을 실현

참고 자료