AWS EC2에서 Compute Engine으로 SQL Server 데이터베이스 마이그레이션


이 튜토리얼에서는 Amazon Elastic Compute Cloud (AWS EC2)의 Microsoft SQL Server 데이터베이스를 Compute Engine으로 마이그레이션하는 데 사용할 수 있는 다양한 접근 방식을 안내합니다.

이 페이지에서는 다음 접근 방식을 설명합니다.

각 이전 방법에는 서로 다른 장단점이 있습니다. 가장 적합한 마이그레이션 전략은 특정 상황과 우선순위에 따라 달라집니다. 다음 고려사항에 따라 가장 적합한 이전 방법을 선택하는 것이 좋습니다.

  • 사용 가능 여부: 마이그레이션 접근 방식이 SQL Server 데이터베이스의 모든 버전 및 라이선스에서 지원되는지 고려하세요.

  • 데이터베이스 크기: 데이터베이스의 크기는 실행 가능한 이전 옵션에 큰 영향을 미칠 수 있습니다. 데이터베이스가 클수록 작은 데이터베이스와 다른 전략이 필요할 수 있기 때문입니다. 마이그레이션 접근 방식을 선택할 때 데이터 전송 기간, 잠재적 다운타임, 리소스 요구사항을 고려하세요.

  • 다운타임 허용 범위: 이전 중에 허용되는 다운타임 수준은 중요한 요소입니다. 일부 방법은 최소한의 다운타임 또는 거의 제로에 가까운 다운타임을 제공하지만, 더 긴 다운타임이 필요한 방법도 있습니다. 허용 가능한 다운타임을 제공하는 이전 접근 방식을 고려하세요.

  • 복잡성: 데이터베이스 스키마, 애플리케이션 종속 항목, 전반적인 환경의 복잡성은 마이그레이션 접근 방식에 영향을 줄 수 있습니다. 선택한 마이그레이션 방법이 SQL 에이전트 작업, 연결된 서버, 권한, 사용자 객체와 같은 데이터베이스 외 객체의 마이그레이션을 지원하는지 확인합니다.

  • 비용: 마이그레이션의 재정적 측면도 고려할 수 있습니다. 마이그레이션 방법에 따라 데이터 전송, 컴퓨팅 리소스, 기타 서비스와 관련된 비용이 다릅니다. 가장 적합한 이전 방법을 고려하세요.

  • 데이터 보안 및 규정 준수: 선택한 이전 방법이 데이터 보안 및 규정 준수 요구사항을 준수하는지 확인합니다. 데이터 암호화, 액세스 제어, 데이터에 적용되는 모든 업계별 요구사항을 고려하세요.

목표

이 튜토리얼에서는 다음 작업을 완료하여 SQL Server 데이터베이스를 AWS EC2에서 Compute Engine으로 마이그레이션하는 방법을 보여줍니다.

비용

이 튜토리얼에서는 비용이 청구될 수 있는 Google Cloud구성요소를 사용합니다.

가격 계산기를 사용하면 예상 사용량을 기준으로 예상 비용을 산출할 수 있습니다.

시작하기 전에

시작하기 전에 다음 작업을 완료하세요.

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Google Cloud project.

  3. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

프로젝트 및 네트워크 준비

이전을 위한 SQL Server 배포를 위해 Google Cloud 프로젝트와 가상 프라이빗 클라우드 (VPC)를 준비하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 Cloud Shell 활성화 Cloud Shell 활성화를 클릭하여 Cloud Shell을 엽니다.

    Google Cloud 콘솔로 이동

  2. 기본 프로젝트 ID를 설정합니다.

    gcloud config set project PROJECT_ID
    

    PROJECT_ID를 Google Cloud 프로젝트의 ID로 바꿉니다.

  3. 기본 리전을 설정합니다.

    gcloud config set compute/region REGION
    

    REGION을 배포하려는 리전의 ID로 바꿉니다.

  4. 기본 영역을 설정합니다.

    gcloud config set compute/zone ZONE
    

    ZONE을 배포하려는 영역의 ID로 바꿉니다. 이전 단계에서 지정한 리전에서 영역이 유효한지 확인합니다.

Compute Engine에서 SQL Server 인스턴스 만들기

SQL Server 데이터베이스를 Compute Engine으로 이전하기 전에 Compute Engine에서 데이터베이스를 호스팅할 가상 머신 (VM)을 만들어야 합니다.

다음 명령어를 사용하여 Compute Engine에서 SQL Server 인스턴스를 만듭니다.

2022 Standard

gcloud compute instances create sql-server-std-migrate-vm \
--project=PROJECT_ID \
--zone ZONE \
--machine-type n4-standard-8 \
--subnet SUBNET_NAME \
--create-disk=auto-delete=yes,boot=yes,device-name=node-1,image=projects/windows-sql-cloud/global/images/sql-2022-standard-windows-2022-dc-v20250213,mode=rw,size=50,type=projects/PROJECT_ID/zones/ZONE/diskTypes/pd-balanced \
--scopes=https://www.googleapis.com/auth/compute,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/trace.append,https://www.googleapis.com/auth/devstorage.read_write

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
  • ZONE: 영역의 ID입니다.
  • SUBNET_NAME: VPC 서브넷의 이름입니다.

2022 Enterprise

gcloud compute instances create sql-server-ent-migrate-vm \
--project=PROJECT_ID \
--zone ZONE \
--machine-type n4-standard-8 \
--subnet SUBNET_NAME \
--create-disk=auto-delete=yes,boot=yes,device-name=node-1,image=projects/windows-sql-cloud/global/images/sql-2022-enterprise-windows-2022-dc-v20250213,mode=rw,size=50,type=projects/PROJECT_ID/zones/ZONE/diskTypes/pd-balanced \
--scopes=https://www.googleapis.com/auth/compute,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/trace.append,https://www.googleapis.com/auth/devstorage.read_write

다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
  • ZONE: 영역의 ID입니다.
  • SUBNET_NAME: VPC 서브넷의 이름입니다.

Compute Engine에서 SQL Server 인스턴스를 만드는 방법에 관한 자세한 내용은 SQL Server 인스턴스 만들기를 참고하세요.

SQL Server VM 구성 및 연결

SQL Server VM을 구성하고 연결하려면 다음 단계를 따르세요.

  1. 계정의 초기 Windows 비밀번호를 설정합니다.

    1. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.

      VM 인스턴스로 이동

    2. SQL Server VM의 이름을 클릭합니다.

    3. Windows 비밀번호 설정 버튼을 클릭합니다.

    4. 새 Windows 비밀번호를 설정하라는 메시지가 표시되면 비밀번호를 입력하고 설정을 클릭합니다.

    5. 사용자 이름과 비밀번호를 저장합니다.

  2. SQL Server VM에 연결합니다.

    1. VM 인스턴스 페이지의 SQL Server VM 공개 IP 주소와 이전 단계에서 저장한 사용자 인증 정보를 사용하여 Microsoft 원격 데스크톱 (RDP)을 통해 SQL Server VM에 연결합니다.

    2. 관리자 권한으로 SQL Server Management Studio (SSMS)를 실행합니다.

    3. 서버 인증서 신뢰 체크박스가 선택되어 있는지 확인하고 연결을 클릭합니다.

이제 SQL Server VM을 데이터베이스 마이그레이션에 사용할 수 있습니다. SQL Server VM에 연결하고 관리할 새 사용자 로그인을 만들려면 로그인 만들기를 참고하세요.

전체 데이터베이스 백업 및 복원

전체 데이터베이스 백업 및 복원은 가장 일반적이고 간단한 데이터베이스 이전 방법입니다. 이 접근 방식에서는 SQL Server 데이터베이스의 전체 백업을 소스 환경에서 가져와 대상 환경에 복원합니다. Google Cloud 이 방법은 비교적 간단하지만 백업을 만들고 복원하는 데 시간이 걸리므로 대규모 데이터베이스의 경우 시간이 많이 걸릴 수 있습니다.

이 섹션에서는 SSMS를 사용하여 샘플 AdventureWorks2022 데이터베이스를 사용하여 SQL Server 데이터베이스를 내보내는 방법을 설명합니다.

전체 데이터베이스 백업 만들기

전체 데이터베이스 백업을 만들려면 다음 단계를 따르세요.

  1. Microsoft RDP를 사용하여 AWS EC2 VM에 로그인합니다.

  2. SSMS를 사용하여 SQL Server에 연결합니다.

  3. 객체 탐색기에서 데이터베이스 폴더를 펼칩니다.

  4. 데이터베이스 이름을 마우스 오른쪽 버튼으로 클릭하고 메뉴에서 Tasks를 클릭합니다.

  5. 백업을 클릭하여 데이터베이스 백업 마법사를 엽니다.

    1. 백업할 데이터베이스 이름과 백업 유형이 전체로 설정되어 있는지 확인합니다.

    2. 전체 백업의 대상 아래에 있는 추가를 클릭합니다.

    3. 줄임표 아이콘 (...)을 클릭하여 백업 파일의 폴더와 이름을 선택합니다.

    4. 확인을 클릭하여 파일 이름을 설정하고 확인을 다시 클릭하여 대상을 설정합니다.

      데이터베이스 백업 옵션

    5. 확인을 클릭하여 데이터베이스 백업을 시작하고 백업이 완료될 때까지 기다립니다.

      백업 프로세스가 완료되면 백업 파일이 생성됩니다. 이제 이 백업 파일을 사용하여 데이터베이스 콘텐츠를 Compute Engine VM으로 마이그레이션할 수 있습니다.

    6. 확인을 클릭하여 데이터베이스 백업 마법사를 종료합니다.

백업 파일을 Compute Engine VM으로 전송

SQL Server 데이터베이스 콘텐츠를 이전하려면 이전 단계에서 만든 백업 파일을 만든 Compute Engine VM으로 전송해야 합니다. 다양한 전송 옵션에 관한 자세한 내용은 Windows VM으로 파일 전송을 참고하세요.

백업 파일에서 SQL Server 데이터베이스 복원

백업 파일에서 데이터베이스를 복원하려면 다음 단계를 따르세요.

  1. RDP를 사용하여 Compute Engine VM에 로그인합니다.

  2. SSMS를 사용하여 SQL Server에 연결합니다.

  3. 객체 탐색기에서 데이터베이스 폴더를 마우스 오른쪽 버튼으로 클릭하고 데이터베이스 복원을 클릭합니다.

  4. 소스에서 기기 및 말줄임표 아이콘 (...)을 클릭하여 백업 기기 선택 페이지를 엽니다.

  5. 백업 미디어 유형이 파일로 설정되어 있는지 확인하고 추가를 클릭하여 백업 파일을 선택합니다.

    데이터베이스 복원 선택 기기

  6. 확인을 클릭하여 백업 파일을 복원 기기로 설정합니다.

  7. 확인을 클릭하여 데이터베이스를 복원합니다.

    프로세스가 완료되면 데이터베이스가 Compute Engine의 대상 SQL Server로 마이그레이션됩니다.

  8. 프로세스가 완료되었는지 확인하려면 객체 탐색기에서 databases 폴더를 펼치고 이전된 데이터베이스가 표시되는지 확인합니다.

    복원된 데이터베이스를 확인합니다.

BACPAC 파일을 사용하여 이전

백업 패키지 (BACPAC) 파일은 SQL Server 데이터베이스의 논리적 표현입니다. 소스 AWS 환경에서 내보낸 후 대상 환경으로 가져올 수 있습니다. Google Cloud 이 방법은 일반적으로 소규모 데이터베이스의 전체 백업 및 복원보다 빠르지만 매우 큰 데이터베이스나 복잡한 종속 항목이 있는 데이터베이스에는 적합하지 않을 수 있습니다.

다음 섹션에서는 BACPAC 파일을 사용하여 SQL Server 데이터베이스를 마이그레이션하는 방법을 설명합니다.

BACPAC 내보내기 만들기

BACPAC 내보내기를 만들려면 다음 단계를 따르세요.

  1. Microsoft RDP를 사용하여 AWS EC2 VM에 로그인합니다.

  2. SSMS를 사용하여 SQL Server에 연결합니다.

  3. 객체 탐색기에서 데이터베이스 폴더를 펼칩니다.

  4. 데이터베이스 이름을 마우스 오른쪽 버튼으로 클릭하고 Tasks를 클릭합니다.

  5. 데이터 계층 애플리케이션 내보내기를 클릭하여 내보내기 마법사를 엽니다.

    1. 다음을 클릭합니다.

    2. 로컬 디스크에 저장 옵션에서 찾아보기를 클릭하고 BACPAC 파일을 선택합니다.

    3. 고급 탭을 클릭하고 내보낼 스키마를 선택합니다.

    4. 다음을 클릭하여 요약으로 이동합니다.

    5. 완료를 클릭하여 BACPAC 파일을 내보내고 내보내기가 완료될 때까지 기다립니다.

    6. 닫기를 클릭하여 마법사를 종료합니다.

  6. 이전 단계에서 만든 BACPAC 파일을 Compute Engine의 대상 VM으로 전송합니다. 전송 옵션에 관한 자세한 내용은 Windows VM으로 파일 전송을 참고하세요.

BACPAC 파일에서 SQL Server 데이터베이스 복원

BACPAC 파일에서 데이터베이스를 복원하려면 다음 단계를 따르세요.

  1. RDP를 사용하여 Compute Engine VM에 로그인합니다.

  2. SSMS를 사용하여 SQL Server에 연결합니다.

  3. 객체 탐색기에서 데이터베이스 폴더를 마우스 오른쪽 버튼으로 클릭하고 데이터 영역 애플리케이션 가져오기를 클릭합니다.

  4. 다음을 클릭합니다.

  5. 찾아보기를 클릭하고 복원할 BACPAC 파일을 선택한 다음 다음을 클릭합니다.

  6. 새 데이터베이스 이름을 확인하고 다음을 클릭합니다.

  7. 완료를 클릭하고 가져오기가 완료될 때까지 기다립니다.

  8. 닫기를 클릭하여 마법사를 종료합니다.

  9. 프로세스가 완료되었는지 확인하려면 객체 탐색기에서 databases 폴더를 펼치고 이전된 데이터베이스가 표시되는지 확인합니다.

Always On 가용성 그룹을 사용하여 이전

AOAG는 SQL Server의 고가용성 및 재해 복구 기능입니다. AOAG를 사용하여 기존 AOAG 클러스터, 독립형 SQL Server, Windows Server 장애 조치 클러스터 (WSFC)를 마이그레이션할 수 있습니다. 이 메서드를 사용하면 대상 Google Cloud 환경에 데이터베이스의 복제본이 생성되고 소스와 대상 간에 데이터가 동기화됩니다. 동기화가 완료되면 대상 Google Cloud 환경의 복제본을 기본으로 설정할 수 있습니다. 이 방법은 다운타임을 최소화하지만 추가 구성 및 설정이 필요합니다. 다운타임 허용 범위가 큰 간단한 이전의 경우 다른 방법이 더 간단하고 비용 효율적일 수 있습니다.

시작하기 전에

이전을 시작하기 전에 다음 사항을 확인하세요.

  • 데이터를 안전하고 원활하게 전환하려면 AWS와 Google Cloud간에 피어링 연결을 설정하세요. 자세한 내용은 Google Cloud 와 AWS 간에 HA VPN 연결 만들기를 참고하세요.

  • 소스 데이터베이스가 독립형 모드로 실행 중이고 소스 서버와 대상 서버가 모두 Active Directory (AD)에 조인되어 있는지 확인합니다. 소스 데이터베이스가 이미 AOAG를 사용하는 WSFC 클러스터의 일부인 경우 분산된 가용성 그룹을 사용하여 마이그레이션을 참고하세요.

  • 소스 SQL Server 데이터베이스의 모든 암호화 키가 AOAG에 참여할 모든 SQL Server 인스턴스에 설치되어 있는지 확인합니다.

SQL Server를 AOAG의 일부로 준비

AOAG에 SQL Server를 추가하려면 그룹에 추가하려는 모든 SQL Server 인스턴스에서 AOAG 기능을 사용 설정해야 합니다.

AOAG에 추가하려는 모든 SQL Server VM에서 AOAG 기능을 사용 설정하려면 다음 단계를 따르세요.

  1. SQL Server에서 AOAG를 사용 설정합니다.

    1. RDP를 사용하여 SQL Server VM에 로그인합니다.

    2. 관리자 모드에서 PowerShell을 엽니다.

    3. 다음 명령어를 실행하여 SQL Server에서 AOAG를 사용 설정합니다.

      Enable-SqlAlwaysOn -ServerInstance $env:COMPUTERNAME -Force
      

    4. 다음 명령어를 실행하여 데이터 복제를 위한 방화벽 포트를 엽니다.

      netsh advfirewall firewall add rule name="Allow SQL Server replication" dir=in action=allow protocol=TCP localport=5022
      
    5. AOAG에 추가하려는 모든 SQL Server VM에 대해 1단계를 반복합니다.

  2. AD에서 SQL Server의 새 사용자를 만듭니다.

    $Credential = Get-Credential -UserName sql_server -Message 'Enter password'
    New-ADUser `
    -Name "sql_server" `
    -Description "SQL Admin account." `
    -AccountPassword $Credential.Password `
    -Enabled $true -PasswordNeverExpires $true
    
  3. AOAG에 속한 모든 SQL Server 인스턴스에서 다음 단계를 실행합니다.

    1. SQL Server 구성 관리자를 엽니다.
    2. 탐색창에서 SQL Server 서비스를 선택합니다.
    3. 서비스 목록에서 SQL Server(MSSQLSERVER)를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다.
    4. 다음과 같이 다음으로 로그온에서 계정을 변경합니다.
      • 계정 이름: DOMAIN\sql_server. 여기서 DOMAIN은 AD 도메인의 NetBIOS 이름입니다.
      • 비밀번호: 이 섹션의 이전 2단계에서 선택한 비밀번호를 입력합니다.
    5. 확인을 클릭합니다.

    6. SQL Server를 다시 시작하라는 메시지가 표시되면 를 선택합니다.

이제 SQL Server가 도메인 사용자 계정으로 실행됩니다.

SQL Server 데이터베이스의 미러링 엔드포인트 설정

AOAG의 엔드포인트를 만들려면 다음 단계를 따르세요.

  1. 소스 SQL Server 데이터베이스가 투명 데이터 암호화 (TDE)로 암호화된 경우 이 단계에 따라 인증서와 키를 백업, 전송, 설치하여 대상 SQL Server에 적용합니다.

  2. SSMS를 사용하여 AWS의 소스 데이터베이스에 로그인합니다.

  3. 다음 T-SQL 명령어를 실행하여 가용성 그룹의 엔드포인트를 만듭니다.

    USE [master]
    GO
    CREATE LOGIN [NET_DOMAIN\sql_server] FROM WINDOWS
    GO
    
    USE [DATABASE_NAME]
    GO
    CREATE USER [NET_DOMAIN\sql_server] FOR LOGIN [NET_DOMAIN\sql_server]
    GO
    
    USE [master]
    GO
    CREATE ENDPOINT migration_endpoint
        STATE=STARTED
        AS TCP (LISTENER_PORT=5022)
        FOR DATABASE_MIRRORING (ROLE=ALL);
    GO
    
    GRANT CONNECT ON ENDPOINT::[migration_endpoint] TO [NET_DOMAIN\sql_server]
    GO
    

    NET_DOMAIN을 AD 도메인의 NetBIOS 이름으로 바꾸고 DATABASE_NAME을 마이그레이션할 데이터베이스 이름으로 바꿉니다.

  4. SSMS를 사용하여 Google Cloud 의 대상 SQL Server에 연결하고 다음 T-SQL 명령어를 실행하여 데이터베이스 미러링 엔드포인트를 만듭니다.

    CREATE LOGIN [NET_DOMAIN\sql_server] FROM WINDOWS
    GO
    
    CREATE ENDPOINT migration_endpoint
        STATE=STARTED
        AS TCP (LISTENER_PORT=5022)
        FOR DATABASE_MIRRORING (ROLE=ALL);
    GO
    
    GRANT CONNECT ON ENDPOINT::[migration_endpoint] TO [NET_DOMAIN\sql_server]
    GO
    

    NET_DOMAIN을 AD 도메인의 NetBIOS 이름으로 바꿉니다.

  5. SSMS의 객체 탐색기에서 서버 객체 > 엔드포인트 > 데이터베이스 미러링으로 이동하여 엔드포인트를 확인합니다.

    SMSS 엔드포인트 뷰

AOAG 만들기

AOAG를 만들려면 다음 단계를 따르세요.

  1. SSMS를 사용하여 AWS의 소스 데이터베이스에 로그인합니다.

  2. 다음 T-SQL 명령어를 실행하여 데이터베이스 복구 모드를 전체로 설정하고 전체 백업을 수행합니다.

    USE [master]
    GO
    
    ALTER DATABASE [DATABASE_NAME]
    SET RECOVERY FULL;
    BACKUP DATABASE [DATABASE_NAME]
    TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\DATABASE_NAME.bak';
    

    DATABASE_NAME을 마이그레이션할 데이터베이스 이름으로 바꿉니다.

  3. 다음 T-SQL 명령어를 실행하여 AOAG를 만듭니다.

    USE [master]
    GO
    
    CREATE AVAILABILITY GROUP [migration-ag]
    WITH (
        AUTOMATED_BACKUP_PREFERENCE = SECONDARY,
        DB_FAILOVER = OFF,
        DTC_SUPPORT = NONE,
        REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 0
    )
    FOR DATABASE [DATABASE_NAME]
    REPLICA ON
    N'SOURCE_SERVERNAME' WITH (
        ENDPOINT_URL = 'TCP://SOURCE_HOSTNAME:5022',
        AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
        FAILOVER_MODE = MANUAL,
        BACKUP_PRIORITY = 50,
        SEEDING_MODE = AUTOMATIC,
        SECONDARY_ROLE(ALLOW_CONNECTIONS = READ_ONLY)
    ),
    N'DEST_SERVERNAME' WITH (
        ENDPOINT_URL = 'TCP://DEST_HOSTNAME:5022',
        AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
        FAILOVER_MODE = MANUAL,
        BACKUP_PRIORITY = 50,
        SEEDING_MODE = AUTOMATIC,
        SECONDARY_ROLE(ALLOW_CONNECTIONS = READ_ONLY)
    );
    GO
    

    다음을 바꿉니다.

    • DATABASE_NAME: 마이그레이션할 데이터베이스의 이름입니다.
    • SOURCE_SERVERNAME: 소스 데이터베이스의 서버 이름입니다.
    • DEST_SERVERNAME: 대상 데이터베이스의 서버 이름
    • SOURCE_HOSTNAME: 소스의 정규화된 도메인 이름 (FQDN)입니다.
    • DEST_HOSTNAME: 타겟의 FQDN입니다.
  4. 대상 데이터베이스에서 다음 T-SQL 명령어를 실행하여 AOAG에 추가합니다.

    USE [master]
    GO
    
    ALTER AVAILABILITY GROUP [migration-ag] JOIN WITH (CLUSTER_TYPE = EXTERNAL);
    ALTER AVAILABILITY GROUP [migration-ag] GRANT CREATE ANY DATABASE;
    GO
    
  5. 개체 탐색기에서 또는 다음 T-SQL 명령어를 실행하여 새로 만든 AOAG 및 데이터베이스 상태를 확인합니다.

    SELECT * FROM sys.dm_hadr_availability_group_states
    GO
    

    복제 데이터베이스를 확인합니다.

이제 SQL Server AOAG가 구성되고 AWS와 Google Cloud간에 계속 동기화됩니다. 다음 단계로 고가용성 및 재해 복구를 위해 WSFC 및 리스너를 구성해야 합니다. 자세한 내용은 SQL Server의 Windows Server 장애 조치 클러스터링가용성 그룹 리스너란 무엇인가요?를 참고하세요.

분산 가용성 그룹을 사용하여 이전

분산 가용성 그룹은 두 개의 개별 가용성 그룹에 걸쳐 있는 특별한 유형의 가용성 그룹입니다. 지리적으로 분산된 여러 위치에 고가용성 및 재해 복구 기능을 제공하도록 설계되었습니다. 이 아키텍처를 사용하면 기본 가용성 그룹과 보조 가용성 그룹 간에 원활한 데이터 복제 및 장애 조치를 지원할 수 있으므로 데이터 마이그레이션에 적합합니다. 자세한 내용은 분산 가용성 그룹을 참고하세요.

을 참고하세요.

다음 섹션에서는 분산된 가용성 그룹을 사용하여 SQL Server 데이터베이스를 마이그레이션하는 방법을 설명합니다.

시작하기 전에

AWS에서 가상 네트워크 이름 (VNN) 리스너가 있는 가용성 그룹을 사용하는 SQL Server가 있는 WSFC가 있는지 확인합니다.

대상 환경 준비

대상 환경을 준비하려면 다음 단계를 따르세요.

  1. Google Cloud에서 내부 부하 분산기를 사용하여 가용성 그룹을 사용하여 SQL Server가 포함된 WSFC를 구성하려면 내부 부하 분산기를 사용하여 동기 커밋으로 SQL Server Always-on 가용성 그룹 구성을 참고하세요.

  2. 객체 탐색기에서 bookshelf-ag가 생성되었고 bookshelf 데이터베이스를 복제하고 있는지 확인합니다. 확인되면 다음 단계에 따라 장애 조치 클러스터의 두 노드에서 가용성 그룹과 데이터베이스를 모두 삭제합니다.

    대상 클러스터의 초기 상태를 확인합니다.

  3. SSMS에서 node-1에 연결하고 bookshelf 리스너의 IP 주소를 저장합니다.

    SELECT * FROM sys.availability_group_listeners
    
  4. 다음 T-SQL 명령어를 실행하여 bookshelf-ag 가용성 그룹과 bookshelf 데이터베이스를 삭제합니다.

    USE master
    GO
    
    DROP AVAILABILITY GROUP [bookshelf-ag]
    GO
    ALTER DATABASE [bookshelf] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    GO
    DROP DATABASE [bookshelf]
    GO
    
  5. SSMS의 node-2에서 다음 T-SQL을 실행하여 복제된 데이터베이스를 삭제합니다.

    USE master
    GO
    
    DROP DATABASE [bookshelf]
    GO
    

분산 가용성 그룹 만들기

분산된 가용성 그룹에 사용할 새 가용성 그룹을 만들려면 다음 단계를 따르세요.

  1. node-1에서 다음 T-SQL 명령어를 실행합니다.

    USE master
    GO
    
    CREATE AVAILABILITY GROUP [gcp-dest-ag]
    FOR
    REPLICA ON
        N'NODE-1' WITH
        (
            ENDPOINT_URL = N'TCP://NODE-1:5022',
            FAILOVER_MODE = MANUAL,
            AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
            BACKUP_PRIORITY = 50,
            SECONDARY_ROLE(ALLOW_CONNECTIONS = NO),
            SEEDING_MODE = AUTOMATIC
        ),
        N'NODE-2' WITH
        (
            ENDPOINT_URL = N'TCP://NODE-2:5022',
            FAILOVER_MODE = MANUAL,
            AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
            BACKUP_PRIORITY = 50,
            SECONDARY_ROLE(ALLOW_CONNECTIONS = NO),
            SEEDING_MODE = AUTOMATIC
        );
    GO
    
  2. 리스너를 만듭니다.

    USE master;
    GO
    
    ALTER AVAILABILITY GROUP [gcp-dest-ag]
    ADD LISTENER N'gcp-dest-lsnr' (
    WITH IP (
    (N'LISTENER_IP', N'255.255.255.0')
    ),
    PORT = 1433);
    GO
    

    LISTENER_IP를 리스너의 IP 주소로 바꿉니다.

  3. SSMS를 사용하여 node-2에 연결하고 다음 T-SQL 명령어를 실행하여 gcp-dest-ag 가용성 그룹에 추가합니다.

    USE master
    GO
    
    ALTER AVAILABILITY GROUP [gcp-dest-ag] JOIN;
    ALTER AVAILABILITY GROUP [gcp-dest-ag] GRANT CREATE ANY DATABASE;
    
  4. SSMS를 사용하여 AWS의 소스 SQL Server 기본 복제본에 연결하고 다음 T-SQL 명령어를 실행하여 분산 가용성 그룹을 만듭니다.

    USE [master]
    GO
    
    CREATE AVAILABILITY GROUP [distributed-ag]
    WITH (DISTRIBUTED)
    AVAILABILITY GROUP ON
    'AWS_AG' WITH
    (
        LISTENER_URL = 'tcp://AWS_LISTENER:5022',
        AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
        FAILOVER_MODE = MANUAL,
        SEEDING_MODE = AUTOMATIC
    ),
    'gcp-dest-ag' WITH
    (
        LISTENER_URL = 'tcp://gcp-dest-lsnr:5022',
        AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
        FAILOVER_MODE = MANUAL,
        SEEDING_MODE = AUTOMATIC
    )
    GO
    

    AWS_AG을 AWS의 가용성 그룹 이름으로 바꾸고 AWS_LISTENER을 AWS 가용성 그룹의 리스너로 바꿉니다.

  5. node-1의 SSMS에서 다음 T-SQL 명령어를 실행하여 배포된 가용성 그룹에 추가합니다.

    USE [master]
    GO
    
    ALTER AVAILABILITY GROUP [distributed-ag]
    JOIN
    AVAILABILITY GROUP ON
    'AWS_AG' WITH
    (
        LISTENER_URL = 'tcp://AWS_LISTENER:5022',
        AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
        FAILOVER_MODE = MANUAL,
        SEEDING_MODE = AUTOMATIC
    ),
    'gcp-dest-ag' WITH
    (
        LISTENER_URL = 'tcp://gcp-dest-lsnr:5022',
        AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
        FAILOVER_MODE = MANUAL,
        SEEDING_MODE = AUTOMATIC
    )
    GO
    

    AWS_AG을 AWS의 가용성 그룹 이름으로 바꾸고 AWS_LISTENER을 AWS 가용성 그룹의 리스너로 바꿉니다.

  6. `node-1`에서 다음 T-SQL 명령어를 실행하여 모든 가용성 그룹이 정상적으로 작동하고 분산 가용성 그룹 전반에서 새 SQL Server 클러스터( Google Cloud)로 복제되는지 확인합니다.

    SELECT * FROM sys.dm_hadr_availability_group_states
    GO
    

삭제

튜토리얼을 완료한 후에는 만든 리소스를 삭제하여 할당량 사용을 중지하고 요금이 청구되지 않도록 할 수 있습니다. 다음 섹션은 이러한 리소스를 삭제하거나 사용 중지하는 방법을 설명합니다.

프로젝트 삭제

비용이 청구되지 않도록 하는 가장 쉬운 방법은 튜토리얼에서 만든 프로젝트를 삭제하는 것입니다.

프로젝트를 삭제하는 방법은 다음과 같습니다.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.