데이터 마이그레이션 정리 노트
데이터 마이그레이션 정의
데이터 마이그레이션(Data Migration)은 한 시스템이나 환경에서 다른 시스템이나 환경으로 데이터를 이동하는 전체 프로세스를 의미합니다. 일반적으로 시스템 교체, 업그레이드, 통합 또는 분리 시 수행하며, 데이터의 손실 없이 정확하게 이동하고 서비스 중단(다운타임)을 최소화하는 것이 중요합니다.
일반적으로 다음과 같은 상황에서 수행됩니다.
-
구형 데이터베이스 시스템에서 최신 데이터베이스 시스템으로 교체할 때
-
온프레미스(On-premise) 환경에서 클라우드 환경으로 데이터를 이전할 때
-
하나 이상의 데이터베이스 시스템을 통합하거나, 시스템을 분리할 때
주요 용어 정리
- ETL: 데이터 추출, 변환, 적재 프로세스
- 스키마 매핑: 원본과 대상 데이터베이스 간 스키마 연결 및 조정
- 데이터 정합성: 데이터가 원본과 대상 간 일치하는 상태
- 다운타임: 시스템 서비스가 일시적으로 중단되는 시간
- CDC: 실시간으로 데이터 변경을 캡처해 복제하는 기술
데이터 마이그레이션 5단계
데이터 마이그레이션은 일반적으로 다음과 같은 절차로 진행됩니다.
- 계획(Planning)
- 이전할 데이터의 범위 및 일정 계획 수립
- 위험 요소 평가 및 대응 방안 마련
- 추출(Extract)
- 기존 시스템에서 데이터를 추출(Export)
- 변환(Transform)
- 새 시스템에 맞게 데이터 형태(스키마 등)를 변경 및 정제(Cleansing)
- 적재(Load)
- 변환된 데이터를 새로운 시스템에 삽입(Import)
- 검증(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의 테이블을 대상으로 직접 조회 및 적재하는 방식
- 단점: 시스템 부하 발생 가능
- 적절한 트랜잭션 관리와 네트워크 대역폭 확보 등이 필요
- 적용 상황: 소량 데이터 이관, 즉각적인 데이터 이전 필요 시
데이터 마이그레이션 과정
-
사전 준비 및 스키마 구성
- 원본과 동일한 스키마 구조를 생성하여 준비
-
데이터 추출(백업)
mysqldump
등 도구로 데이터 추출
-
데이터 로드(적재)
- 덤프 파일을 새로운 DB에 로드
-
데이터 검증
- 레코드 수 및 데이터 정합성 검증
-
서비스 전환 및 모니터링
- 서비스 연결 전환 후 성능 및 데이터 모니터링
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 방식으로 실시간 데이터 동기화
- 무중단 서비스 전환을 실현