SQL Server에서 Azure SQL로 마이그레이션

Data Migration Assistant, Azure Database Migration Service, BACPAC, Log Replay Service의 역할과 선택 기준을 비교합니다.

DP-300 시험에서 마이그레이션 파트는 '이 상황에서 어떤 도구를 써야 하는가'를 묻습니다. 도구 이름보다 각 도구가 파이프라인의 어느 단계를 담당하는지가 중요합니다. 짐을 싸서 이사할 때처럼, 마이그레이션도 평가 → 배포 대상 선택 → 데이터 이동 → 검증의 순서를 따릅니다.

 

이사 전 집 구조 파악 — Data Migration Assistant

새 집으로 이사하기 전에 냉장고가 문에 들어갈지 미리 재봅니다. 마이그레이션에서 이 역할을 하는 것이 입니다.

DMA는 온프레미스 SQL Server 인스턴스에 연결해 deprecated 기능 사용 여부, Azure SQL Database가 지원하지 않는 구문, 크로스 데이터베이스 쿼리 등을 점검하고 수정 권장 사항이 담긴 보고서를 생성합니다. DMA 없이 마이그레이션을 시작하면 차단 요소를 실행 도중에 발견하게 됩니다.

DMA는 평가에 그치지 않고 소규모 DB의 스키마와 데이터를 직접 이전하는 기능도 포함합니다. 한 단계 더 나아가면 가 있습니다. DEA는 워크로드를 두 환경에서 동시에 재생해 쿼리별 성능을 비교합니다 — 마이그레이션 후 성능 회귀가 우려될 때 사용하는 사전 검증 도구입니다.

 

어떤 집으로 이사할까 — 배포 대상 선택

이사할 집 형태를 먼저 정해야 이삿짐도 제대로 쌀 수 있습니다. Azure SQL에는 세 가지 선택지가 있습니다.

는 완전관리형 PaaS입니다. SQL Server 인스턴스 수준 기능(SQL Agent Job, CLR, Linked Server, 크로스 DB 쿼리)은 지원하지 않으며, 클라우드 네이티브 애플리케이션에 적합합니다. 는 인스턴스 수준 기능을 대부분 지원하는 PaaS 옵션입니다. DMA 평가에서 인스턴스 기능 의존성이 확인되면 Managed Instance가 현실적인 선택입니다. 은 OS 수준 완전 제어가 필요한 경우의 IaaS 방식입니다.

 

짐을 옮기는 방법 — Azure Database Migration Service

가게를 닫고 이사할 것인지, 영업을 유지하며 서서히 옮길 것인지 — 이것이 오프라인과 온라인 마이그레이션의 차이입니다.

는 Azure Portal에서 프로젝트를 생성하고 원본·대상·연결 정보를 구성하면 Azure가 나머지를 처리하는 완전관리형 서비스입니다. 은 원본 DB를 중단하고 전체 데이터를 복사한 뒤 연결을 전환합니다. Standard 티어로 수행할 수 있지만 복사 시간만큼 다운타임이 발생합니다. 은 초기 전체 백업 복원 후 CDC 또는 트랜잭션 로그를 통해 변경 사항을 지속 동기화합니다. DBA가 준비됐다고 판단하면 수동 cutover를 실행하고 다운타임은 수 분 이내입니다. 단, 가 필수입니다.

 

트렁크로 옮기는 소규모 이사 — BACPAC

이삿짐 차가 필요없는 소규모 이사라면 승용차 트렁크로 충분합니다. 는 데이터베이스의 스키마(DDL)와 데이터(DML)를 하나의 파일로 묶은 패키지입니다. 또는 Azure Portal에서 내보내기·가져오기를 수행합니다.

BACPAC는 다운타임이 허용되는 시나리오, 소규모 DB, 개발·테스트 환경 이전에 적합합니다. 내보내기 도중 데이터가 변경되면 일관성이 깨지므로 애플리케이션을 중단하고 내보내는 것이 안전합니다. 수백 GB 이상 대규모 DB에는 비실용적입니다.

 

Managed Instance 전용 정밀 경로 — Log Replay Service

가구 조립 기사가 작업 지시서를 한 장씩 순서대로 읽으며 조립하듯, 는 트랜잭션 로그 백업 파일을 순서대로 재생해 Managed Instance를 복원합니다. LRS는 이며 Azure SQL Database에는 사용할 수 없습니다.

흐름은 단순합니다: 온프레미스 SQL Server에서 전체 백업을 Azure Blob Storage에 업로드하고, 이후 트랜잭션 로그 백업을 계속 올리면 LRS가 MI에서 순서대로 재생합니다. DB는 상태를 유지하다가 cutover 명령을 받으면 온라인으로 전환됩니다. DMS 없이 Managed Instance 마이그레이션이 가능하며, cutover 시점을 수동으로 정밀 제어할 수 있습니다.

 

도구 비교표와 시험 함정

평가·분석이면 DMA 또는 DEA, 실제 데이터 이동이면 DMS·LRS·BACPAC 중 선택합니다.

| 도구 | 역할 | 대상 | 다운타임 | |:--|:--|:--|:--| | DMA | 호환성 평가 + 소규모 이전 | Azure SQL DB / MI | 없음(평가 시) | | DEA | 성능 비교 | Azure SQL DB / MI | 없음 | | DMS 오프라인 | 전체 복사 후 전환 | DB / MI / VM | 있음(Standard 가능) | | DMS 온라인 | 운영 중 동기화 + cutover | DB / MI / VM | 최소(Premium 필수) | | BACPAC | 스키마+데이터 패키지 | Azure SQL DB / MI | 있음(소규모) | | LRS | 트랜잭션 로그 순차 재생 | MI 전용 | 짧음(수동 cutover) |

자주 나오는 함정: DMS 온라인은 Premium 티어 필수, LRS는 Azure SQL Database 불가, BACPAC는 내보내기 중 DB 중단 권장입니다.

!마이그레이션 도구 4가지 비교

짐을 다 옮긴 뒤 — cutover와 검증

이사 후 전기·가스 연결을 확인하듯, 마이그레이션 후에도 검증이 필요합니다.

온라인 마이그레이션에서 는 돌이킬 수 없는 전환점입니다. cutover 전에 전략을 미리 설계해두면 — 애플리케이션이 IP 대신 DNS 이름으로 연결된 경우 — 문제 발생 시 DNS 레코드 하나만 변경해 롤백할 수 있습니다. 검증은 row count 비교만으로 부족합니다. 체크섬 비교, 핵심 테이블 샘플 레코드 비교, 애플리케이션 통합 테스트가 필요합니다. 를 마이그레이션 전에 활성화해두면 전후 쿼리 성능을 직접 비교할 수 있습니다. 은 처음엔 원본과 동일하게 유지하고 이후 점진적으로 올리는 것이 안전합니다.

시험 핵심 정리

'호환성 평가', 'deprecated 기능 점검' -- Data Migration Assistant(DMA) '성능 비교', '워크로드 재생' -- Database Experimentation Assistant(DEA) '다운타임 최소화', '24시간 운영', 'cutover 수동 실행' -- DMS 온라인 (Premium 티어 필수) '다운타임 허용', '유지보수 창' -- DMS 오프라인 (Standard 티어 가능) '소규모 DB', '이식성', '포터블 패키지' -- BACPAC (SqlPackage.exe) 'Managed Instance 전용', '트랜잭션 로그 체인 복원', '수동 cutover 제어' -- Log Replay Service(LRS) 'LRS를 Azure SQL Database에 사용' -- 불가 (MI 전용) 'DMS 온라인에 Standard 티어 사용' -- 불가 (Premium 필수) '인스턴스 수준 기능 필요' (SQL Agent, CLR, Linked Server) -- Azure SQL Managed Instance 'cutover 후 롤백 설계' -- DNS cutover 전략 '마이그레이션 전후 성능 비교' -- Query Store 사전 활성화 '호환성 수준 변경' -- 원본과 동일 수준 유지 후 점진적 업그레이드

DMA = 이사 전 체크, DMS = 데이터 이동, LRS = MI 전용 로그 재생, BACPAC = 소규모 이식 패키지

블로그 목록으로 돌아가기