다음을 통해 공유


자동화를 사용하여 대규모로 데이터베이스 마이그레이션(미리 보기)

Azure Data Studio용 Azure SQL Migration 확장은 다음과 같은 기능을 제공하는 간소화된 평가, 권장 사항 및 마이그레이션 환경을 제공합니다.

  • 향상된 평가 메커니즘은 SQL Server 인스턴스를 평가하여 다른 Azure SQL 대상으로 마이그레이션할 준비가 된 데이터베이스를 식별할 수 있습니다.

  • SKU 권장 사항 엔진(미리 보기)은 온-프레미스의 원본 SQL Server 인스턴스로부터 성능 데이터를 수집하여 Azure SQL 대상을 기반으로 적절한 크기의 SKU 권장 사항을 생성합니다.

  • Azure Database Migration Service에서 제공하는 안정적인 Azure 서비스는 데이터 이동 작업을 오케스트레이션하여 원활한 마이그레이션 환경을 제공합니다.

  • 비즈니스 요구 사항에 맞게 온라인(최소 가동 중지 시간이 필요한 마이그레이션의 경우) 또는 오프라인(마이그레이션을 통해 가동 중지 시간이 지속되는 마이그레이션의 경우) 마이그레이션 모드를 실행합니다.

  • 온-프레미스 환경에서 원본 SQL Server 및 백업에 액세스하는 사용자 고유의 컴퓨팅을 제공할 수 있는 자체 호스팅 통합 런타임을 유연하게 만들고 구성합니다.

PowerShell - Azure DataMigration Service 모듈 또는 Azure CLI와 같은 자동화 도구를 사용하면 Azure Database Migration Service와 함께 Azure SQL Migration 확장 기능을 적용하여 하나 이상의 데이터베이스(여러 SQL Server 인스턴스에 걸쳐 있는 데이터베이스 포함)를 대규모로 마이그레이션할 수 있습니다.

다음 샘플 스크립트는 Azure PowerShell 또는 Azure CLI를 사용하여 마이그레이션 시나리오에 맞게 참조할 수 있습니다.

마이그레이션 시나리오 스크립트 언어
SQL Server 평가 PowerShell / Azure CLI
SQL Server에서 Azure SQL Managed Instance로(파일 공유 사용) PowerShell / Azure CLI
SQL Server에서 Azure SQL Managed Instance로(Azure 스토리지 사용) PowerShell / Azure CLI
SQL Server에서 Azure Virtual Machines의 SQL Server로(파일 공유 사용) PowerShell / Azure CLI
SQL Server에서 Azure Virtual Machines의 SQL Server로(Azure Storage 사용) PowerShell / Azure CLI
SQL Server에서 Azure SQL Database로 마이그레이션 PowerShell / Azure CLI
SKU 권장 사항(미리 보기) PowerShell / Azure CLI
엔드투엔드 마이그레이션 자동화 PowerShell / Azure CLI
여러 데이터베이스에 대한 엔드투엔드 마이그레이션 자동화 PowerShell / Azure CLI

필수 조건

Azure PowerShell 또는 Azure CLI를 사용하여 지원되는 모든 마이그레이션 시나리오에서 공통적인 필수 구성 요소는 다음과 같습니다.

  • 아래 나열된 기본 제공 역할 중 하나에 할당된 Azure 계정이 있습니다.

    • 대상 Azure SQL Managed 인스턴스, Azure Virtual Machines의 SQL Server 또는 Azure SQL Database 및 SMB 네트워크 공유에서 데이터베이스 백업 파일을 업로드하는 스토리지 계정에 대한 기여자(Azure SQL Database에는 적용되지 않음)

    • 대상 Azure SQL Managed 인스턴스, Azure Virtual Machines의 SQL Server 또는 Azure SQL Database를 포함하는 Azure 리소스 그룹에 대한 읽기 권한자 역할

    • Azure 구독에 대한 소유자 또는 기여자 역할

    Azure 계정은 마이그레이션 단계를 실행하는 경우에만 필요하며 평가 또는 Azure 추천 단계 프로세스에는 필요하지 않습니다.

  • 대상 Azure SQL Managed 인스턴스, Azure Virtual Machine의 SQL Server 또는 Azure SQL Database를 만듭니다.

    대상이 Azure SQL Database인 경우 SQL Server dacpac 확장 또는 Azure Data Studio용 SQL Database Projects 확장을 사용하여 데이터베이스 스키마를 원본에서 대상으로 마이그레이션해야 합니다.

    기존 Azure Virtual Machine이 있는 경우 전체 관리 모드에서 SQL IaaS 에이전트 확장에 등록해야 합니다.

  • 대상이 Azure SQL Managed Instance 또는 Azure Virtual Machine의 SQL Server인 경우 원본 SQL Server를 연결하는 데 사용되는 로그인이 sysadmin 서버 역할의 멤버이거나 CONTROL SERVER 권한이 있어야 합니다.

  • 대상이 Azure SQL Database인 경우 원본 SQL Server를 연결하는 데 사용되는 로그인이 멤버이고 대상 SQL Server에 대한 db_datareader 및 로그인이 db_owner여야 합니다.

  • 전체 데이터베이스 및 트랜잭션 로그 백업 파일에 대해 다음 스토리지 옵션 중 하나를 사용합니다.

    • SMB 네트워크 공유

    • Azure Storage 계정 파일 공유 또는 Blob 컨테이너

      • 데이터베이스 백업 파일이 SMB 네트워크 공유에 제공된 경우 DMS 서비스가 데이터베이스 백업 파일을 업로드할 수 있도록 Azure Storage 계정을 만듭니다. Azure Database Migration Service 인스턴스와 동일한 지역에 Azure Storage 계정을 만들어야 합니다.

      • Azure 스토리지 계정 Blob 컨테이너가 백업 파일만 저장하는 데만 사용되는지 확인합니다. 다른 형식의 파일(txt, png, jpg 등)은 복원 프로세스를 방해하여 오류가 발생합니다.

      • Azure Database Migration Service는 백업을 시작하지 않으며, 사용자가 재해 복구 계획의 일부로 보유한 기존 백업을 마이그레이션에 사용합니다.

      • 각 백업은 별도의 백업 파일 또는 여러 백업 파일에 쓸 수 있습니다. 그러나 단일 백업 미디어에 여러 백업(예: 전체 및 t-log)을 추가하는 것은 지원되지 않습니다.

      • 압축된 백업을 사용하여 대량 백업 마이그레이션과 관련된 잠재적인 문제 발생 가능성을 줄일 수 있습니다.

  • 원본 SQL Server 인스턴스를 실행하는 서비스 계정에 데이터베이스 백업 파일이 포함된 SMB 네트워크 공유에 대한 읽기 및 쓰기 권한이 있는지 확인합니다.

  • 데이터를 마이그레이션하기 전에 TDE(투명한 데이터 암호화)로 보호되는 데이터베이스의 원본 SQL Server 인스턴스 인증서를 대상 Azure SQL Managed Instance 또는 Azure Virtual Machine의 SQL Server로 마이그레이션해야 합니다. TDE 사용 데이터베이스 마이그레이션에 대한 자세한 내용은 자습서: Azure Data Studio에서 TDE 사용 데이터베이스(미리 보기)를 Azure SQL로 마이그레이션을 참조하세요.

    데이터베이스에 항상 암호화로 보호되는 민감한 데이터가 포함되어 있는 경우 DMS와 함께 Azure Data Studio를 사용하는 마이그레이션 프로세스는 Always Encrypted 키를 대상 Azure SQL Managed Instance 또는 Azure Virtual Machine의 SQL Server로 자동 마이그레이션합니다.

  • 데이터베이스 백업이 네트워크 파일 공유에 있는 경우 데이터베이스 백업에 액세스하고 마이그레이션하기 위해 자체 호스팅 통합 런타임을 설치할 컴퓨터를 제공합니다. Azure PowerShell 또는 Azure CLI 모듈은 자체 호스팅 통합 런타임을 등록하기 위한 인증 키를 제공합니다. 마이그레이션을 준비하기 위해 자체 호스팅 통합 런타임을 설치하려는 시스템에 다음 아웃바운드 방화벽 규칙 및 도메인 이름이 사용하도록 설정되어 있는지 확인합니다.

    도메인 이름 아웃바운드 포트 설명
    퍼블릭 클라우드: {datafactory}.{region}.datafactory.azure.net
    또는 *.frontend.clouddatahub.net
    Azure Government: {datafactory}.{region}.datafactory.azure.us
    중국: {datafactory}.{region}.datafactory.azure.cn
    443 자체 호스팅 통합 런타임에서 데이터 마이그레이션 서비스에 연결하는 데 필요합니다.
    퍼블릭 클라우드에서 새로 만들어진 Data Factory의 경우 {datafactory}.{region}.datafactory.azure.net 형식인 자체 호스팅 통합 런타임 키에서 FQDN을 찾습니다. 이전 Data Factory의 경우 FQDN이 자체 호스팅 통합 키에 표시되지 않으면 *.frontend.clouddatahub.net을 대신 사용합니다.
    download.microsoft.com 443 업데이트를 다운로드하기 위해 자체 호스팅 통합 런타임에서 필요합니다. 자동 업데이트를 사용하지 않도록 설정한 경우 이 도메인 구성을 건너뛸 수 있습니다.
    *.core.windows.net 443 네트워크 공유에서 데이터베이스 백업을 업로드하기 위해 Azure Storage 계정에 연결하는 자체 호스팅 통합 런타임에서 사용합니다.

    데이터베이스 백업 파일이 이미 Azure Storage 계정에 제공된 경우 마이그레이션 프로세스 중에 자체 호스팅 통합 런타임이 필요하지 않습니다.

  • 자체 호스팅 통합 런타임을 사용하는 경우 런타임이 설치된 컴퓨터에서 백업 파일이 있는 원본 SQL Server 인스턴스 및 네트워크 파일 공유에 연결할 수 있는지 확인합니다.

  • 네트워크 파일 공유에 액세스하려면 445 아웃바운드 포트를 사용하도록 설정해야 합니다.

  • Azure Database Migration Service를 처음 사용하는 경우 Microsoft.DataMigration 리소스 공급자가 구독에 등록되어 있는지 확인하세요. 다음 단계에 따라 리소스 공급자를 등록할 수 있습니다.

    마이그레이션 대상이 Azure SQL Database인 경우 이 마이그레이션을 수행하는 데 백업이 필요하지 않습니다. Azure SQL Database로의 마이그레이션은 데이터베이스의 사전 만들기 및 데이터 이동(DMS에서 수행)과 관련된 논리적 마이그레이션으로 간주됩니다.

데이터베이스 마이그레이션 자동화

Azure PowerShell Az.DataMigration 또는 Azure CLI az datamigration을 사용하면 Azure Database Migration Service 만들기를 자동화하고, 데이터베이스 마이그레이션을 온라인 마이그레이션으로 구성하고, 컷오버를 수행하여 데이터베이스를 마이그레이션할 수 있습니다. Azure 샘플에 설명된 몇 가지 명령과 기능이 더 있습니다.

Azure CLI를 사용하여 SQL Server 데이터베이스 마이그레이션을 자동화하는 예제는 다음과 같습니다. 1단계: 데이터베이스의 마이그레이션 작업을 오케스트레이션하는 Azure Database Migration Service를 만듭니다.

#STEP 1: Create Database Migration Service
az datamigration sql-service create --resource-group "myRG" --sql-migration-service-name "myMigrationService" --location "EastUS2"

2단계: SQL Server 온-프레미스(Azure 스토리지의 백업 포함)에서 Azure SQL Managed Instance로의 온라인 데이터베이스 마이그레이션을 구성하고 시작합니다.

#STEP 2: Start Migration
az datamigration sql-managed-instance create `
--source-location '{\"AzureBlob\":{\"storageAccountResourceId\":\"/subscriptions/mySubscriptionID/resourceGroups/myRG/providers/Microsoft.Storage/storageAccounts/dbbackupssqlbits\",\"accountKey\":\"myAccountKey\",\"blobContainerName\":\"dbbackups\"}}' `
--migration-service "/subscriptions/mySubscriptionID/resourceGroups/myRG/providers/Microsoft.DataMigration/SqlMigrationServices/myMigrationService" `
--scope "/subscriptions/mySubscriptionID/resourceGroups/myRG/providers/Microsoft.Sql/managedInstances/mySQLMI" `
--source-database-name "AdventureWorks2008" `
--source-sql-connection authentication="SqlAuthentication" data-source="mySQLServer" password="<password>" user-name="sqluser" `
--target-db-name "AdventureWorks2008" `
--resource-group myRG `
--managed-instance-name mySQLMI

3단계: 모든 백업이 Azure SQL Managed Instance로 복원되면 마이그레이션 컷오버를 수행합니다.

#STEP 3: Get migration ID and perform Cutover
$migOpId = az datamigration sql-managed-instance show --managed-instance-name "mySQLMI" --resource-group "myRG" --target-db-name "AdventureWorks2008" --expand=MigrationStatusDetails --query "properties.migrationOperationId"
az datamigration sql-managed-instance cutover --managed-instance-name "mySQLMI" --resource-group "myRG" --target-db-name "AdventureWorks2008" --migration-operation-id $migOpId

"구독이 'Microsoft.DataMigration' 네임스페이스를 사용하도록 등록되지 않았습니다. 구독을 등록하는 방법은 https://aka.ms/rps-not-found를 참조하세요."라는 오류가 표시되면 다음 명령을 실행합니다.

Register-AzResourceProvider -ProviderNamespace "Microsoft.DataMigration"