0Pricing
Cloud & IT Cert Prep · 강의

데이터베이스 마이그레이션 모범 사례

Azure Database Migration Service를 사용해 가동 중지 시간을 최소화하면서 SQL Server 데이터베이스를 Azure SQL로 마이그레이션하고, 일반적인 스키마 및 호환성 문제를 해결합니다.

데이터베이스 마이그레이션 모범 사례은(는) CoddyKit의 무료 Cloud & IT Cert Prep 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cloud & IT Cert Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

데이터베이스 마이그레이션이 다른 이유

데이터베이스는 상태를 유지하고 대개 연중무휴 활성 연결을 사용하므로 VM을 그대로 들어 올리는 것보다 데이터베이스 마이그레이션이 더 복잡합니다. 단순한 복사 및 복원 방식은 몇 시간의 가동 중지 시간이 필요하므로 프로덕션 시스템에는 적합하지 않습니다. 데이터베이스 마이그레이션 모범 사례에서는 지속적인 데이터 복제를 사용하여 대상의 유효성을 검사하는 동안 원본과 대상을 동기화된 상태로 유지한 다음, 트래픽을 새 Azure 데이터베이스로 전환하는 짧고 계획된 전환을 수행합니다.

Azure Database Migration Service

Azure Database Migration Service (DMS)는 널리 사용되는 온-프레미스 데이터베이스 엔진에서 Azure 관리형 데이터베이스 서비스로 온라인(가동 중지 시간이 거의 없음) 및 오프라인(가동 중지 시간 발생) 마이그레이션을 조정하는 완전 관리형 서비스입니다. DMS는 SQL Server, MySQL, PostgreSQL, MongoDB, Oracle 등의 원본과 Azure SQL Database, Azure SQL Managed Instance, Azure Database for MySQL 및 Azure Cosmos DB 등의 대상을 지원합니다. 이 서비스는 마이그레이션 전 호환성 검사에 Data Migration Assistant (DMA)를 통합합니다.

# Create a DMS instance
az dms create \
  --service-name myDMS \
  --resource-group myRG \
  --location eastus \
  --sku-name Premium_4vCores \
  --vnet myVnet \
  --subnet mySubnet

DMA를 사용한 마이그레이션 전 평가

SQL Server를 마이그레이션하기 전에 원본 데이터베이스에서 Data Migration Assistant (DMA)를 실행하십시오. DMA는 다음을 식별합니다. Azure SQL 대상에서 지원되지 않는 데이터베이스 기능인 호환성 문제, 호환성을 손상시키는 변경 사항, 더 이상 사용되지 않는 기능 및 성능 권장 사항입니다. 심각도에 따라 문제의 우선순위를 지정한 상세 HTML 보고서를 생성하므로, 팀에서 마이그레이션 기간이 시작되기 전에 문제를 해결할 수 있습니다.

# Run DMA assessment from CLI (Windows only)
# DmaCmd.exe /AssessmentName='SQL2022toAzureSQL' \
#   /AssessmentSourcePlatform='SqlOnPrem' \
#   /AssessmentTargetPlatform='AzureSqlDatabase' \
#   /AssessmentDatabases='Server=myServer;Initial Catalog=AdventureWorks;Integrated Security=true'

온라인 마이그레이션과 오프라인 마이그레이션

오프라인 마이그레이션은 마이그레이션이 진행되는 동안 원본 데이터베이스를 오프라인 상태로 유지합니다. 따라서 유지 관리 기간을 확보할 수 있는 소규모 데이터베이스나 중요하지 않은 시스템에 적합합니다. 온라인 마이그레이션은 변경 데이터 캡처(CDC) 또는 트랜잭션 로그 전달을 사용하여 새 데이터베이스를 로드하는 동안 변경 내용을 지속적으로 복제하므로, 가동 중지 시간을 최종 전환 단계로만 최소화합니다. 1GB보다 크거나 1시간 미만의 가동 중지 시간이 필요한 SLA가 있는 데이터베이스에는 온라인 마이그레이션을 권장합니다.

DMS 마이그레이션 프로젝트 구성

DMS 마이그레이션 프로젝트에서는 원본 연결(서버 이름, 인증, 데이터베이스 이름), 대상 연결(Azure SQL 연결 문자열) 및 마이그레이션 모드(온라인 또는 오프라인)를 지정합니다. 마이그레이션할 데이터베이스와 테이블도 선택합니다. DMS는 시작하기 전에 연결을 확인합니다. 마이그레이션 프로젝트는 Azure 포털에 유지되므로 진행률을 모니터링하고 실패한 테이블을 다시 시도하며 자세한 활동 로그를 확인할 수 있습니다.

# Create a DMS project for SQL Server to Azure SQL Database
az dms project create \
  --service-name myDMS \
  --resource-group myRG \
  --name SQL2AzureSQL \
  --source-platform SQL \
  --target-platform SQLDB \
  --location eastus

스키마를 먼저 마이그레이션

항상 데이터보다 먼저 스키마를 마이그레이션하십시오. DMA 또는 SQL Server Management Studio (SSMS)를 사용하여 테이블, 뷰, 저장 프로시저, 함수 및 인덱스를 스크립트로 작성하고 대상 Azure SQL Database에 배포합니다. DMS가 데이터 전송을 시작하도록 허용하기 전에 모든 스키마 개체가 존재하고 오류 없이 컴파일되는지 확인하십시오. 마이그레이션 중간에 발견된 스키마 오류는 마이그레이션 실행을 손상시키고 처음부터 다시 시작하게 만들 수 있습니다.

# Generate schema scripts using sqlpackage
sqlpackage /Action:Script \
  /SourceServerName:myOnPremServer \
  /SourceDatabaseName:AdventureWorks \
  /TargetServerName:mysqlserver.database.windows.net \
  /TargetDatabaseName:AdventureWorksAzure \
  /OutputPath:/tmp/schema.sql

초기 데이터 로드

DMS는 원본 데이터베이스를 테이블별로 읽고 대량 삽입을 사용해 Azure SQL 대상에 행을 기록하여 전체 데이터 로드를 수행합니다. 전체 로드 중에는 서비스를 통해 대규모 테이블을 여러 배치로 나누어 처리합니다. 처리량을 최대화하기 위해 로드 중에는 대상의 인덱스를 사용하지 않도록 설정한 다음, 로드가 끝난 후 다시 빌드합니다. 매우 큰 데이터베이스(TB 규모)의 경우 Azure 데이터 팩터리 또는 bacpac 내보내기를 사용해 데이터를 미리 로드하면 DMS 실행 시간을 줄일 수 있습니다.

온라인 동기화를 위한 변경 데이터 캡처

온라인 마이그레이션을 위해 DMS는 원본에서 SQL Server 변경 데이터 캡처(CDC)를 사용하도록 설정하여 전체 로드가 진행되는 동안 발생하는 INSERT, UPDATE, DELETE 작업을 캡처합니다. 전체 로드가 완료되면 DMS는 캡처된 변경 내용을 대상에 재생하여 차이를 점차 줄입니다. 지연 시간이 거의 0으로 감소하면 데이터베이스를 전환할 준비가 된 것입니다. CDC를 사용하려면 SQL Server 에이전트가 실행 중이어야 하며 원본 데이터베이스가 전체 복구 모드여야 합니다.

-- Enable CDC on source database
EXEC sys.sp_cdc_enable_db;

-- Enable CDC on specific table
EXEC sys.sp_cdc_enable_table
  @source_schema = N'dbo',
  @source_name = N'Orders',
  @role_name = NULL;

전환 및 유효성 검사

CDC 지연이 최소화되면 DMS 포털에서 전환을 시작합니다. DMS는 새 CDC 이벤트 수락을 중지하고 남은 변경 내용을 적용한 다음 마이그레이션을 완료된 것으로 표시합니다. 이 시점에서 애플리케이션 연결 문자열을 Azure SQL 엔드포인트로 다시 지정합니다. 중요한 테이블을 대상으로 원본과 대상의 행 수 및 체크섬 집계를 비교하는 데이터 유효성 검사 쿼리를 실행합니다. 롤백이 필요한 경우에 대비해 전환 후 24~48시간 동안 원본 데이터베이스를 읽기 전용 모드로 유지합니다.

-- Validate row counts post-cutover
SELECT TABLE_NAME, TABLE_ROWS
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'dbo'
ORDER BY TABLE_NAME;

마이그레이션 후 성능 조정

마이그레이션 후 Azure SQL Database는 서로 다른 쿼리 계획 캐시, 통계 및 하드웨어로 인해 온-프레미스 SQL Server와 다르게 작동할 수 있습니다. Database Experimentation Assistant(DEA)를 실행하여 Azure 대상에서 작업 부하 추적을 재생하고 실행 계획을 비교합니다. Azure SQL에서 Automatic Tuning을 사용하도록 설정하면 서비스를 통해 인덱스를 자동으로 만들거나 삭제하고 성능 저하가 없는 쿼리 계획을 강제하여 수동 개입 없이 시간이 지남에 따라 성능을 향상할 수 있습니다.

-- Enable Automatic Tuning on Azure SQL Database
ALTER DATABASE CURRENT SET AUTOMATIC_TUNING (
  FORCE_LAST_GOOD_PLAN = ON,
  CREATE_INDEX = ON,
  DROP_INDEX = OFF
);

다른 데이터베이스 엔진의 마이그레이션

DMS는 오픈 소스 엔진도 마이그레이션합니다. MySQL은 Azure Database for MySQL로 mysqldump + binlog 복제 패턴을 사용하여 마이그레이션하고, PostgreSQL은 논리적 복제 슬롯을 사용하여 Azure Database for PostgreSQL로 마이그레이션합니다. MongoDB에서 Cosmos DB로의 마이그레이션에는 Cosmos DB for MongoDB API와 기본 mongodump / mongorestore 파이프라인 또는 Azure 데이터 팩터리의 MongoDB 커넥터를 사용하여 증분 CDC를 수행합니다. 실제 운영 데이터에 적용하기 전에 항상 비운영 복사본에서 마이그레이션을 테스트합니다.

# Offline MySQL migration using mysqldump
mysqldump -h source-server -u admin -p \
  --single-transaction --routines --triggers \
  myDatabase > /tmp/myDatabase.sql

# Restore to Azure Database for MySQL
mysql -h myserver.mysql.database.azure.com \
  -u adminUser@myserver -p myDatabase < /tmp/myDatabase.sql

빠른 확인

이 단원에서 다룬 Microsoft Azure Fundamentals(AZ-900) 개념에 대한 이해도를 확인해 보세요.

단원 요약

이 단원에서는 다음을 배웠습니다. Azure Database Migration Service는 온라인 및 오프라인 데이터베이스 마이그레이션을 조정하고, DMA를 사용한 마이그레이션 전 평가는 마이그레이션 기간 전에 호환성 문제를 발견하며, 변경 데이터 캡처는 운영 데이터베이스의 가동 중지 시간을 거의 없애는 전환을 가능하게 합니다. 다음 단원에서는 Azure 비용 최적화에 초점을 맞춥니다.

자주 묻는 질문

“데이터베이스 마이그레이션 모범 사례” 강의는 무료인가요?

네 — “데이터베이스 마이그레이션 모범 사례” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cloud & IT Cert Prep 강의 전체를 잠금 해제할 수 있습니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

“데이터베이스 마이그레이션 모범 사례”에서 뭘 배우나요?

Azure Database Migration Service를 사용해 가동 중지 시간을 최소화하면서 SQL Server 데이터베이스를 Azure SQL로 마이그레이션하고, 일반적인 스키마 및 호환성 문제를 해결합니다. 브라우저에서 직접 실행하는 실습 코드로 Cloud & IT Cert Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cloud & IT Cert Prep을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cloud & IT Cert Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“데이터베이스 마이그레이션 모범 사례” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cloud & IT Cert Prep 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cloud & IT Cert Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 6가지 R 마이그레이션 프레임워크
  2. Azure Migrate: 검색 및 평가
  3. Azure Migrate로 리호스트하기(리프트 앤 시프트)
  4. 데이터베이스 마이그레이션 모범 사례
← Cloud & IT Cert Prep(으)로 돌아가기