연습 - 중요 비즈니스용 고가용성

완료됨

이 연습에서는 데이터베이스를 중요 비즈니스용 계층으로 업그레이드합니다. 읽기 복제본과 성능 향상을 제공하는 방법을 확인할 수 있습니다.

이전 연습에서 워크로드를 만드는 데 사용한 ostress 도구를 사용합니다. 그런 다음, Azure Cloud Shell에서 Azure PowerShell 모듈을 사용하여 장애 조치를 시작합니다. 마지막으로, 장애 조치가 ostress 워크로드에 미치는 영향을 확인합니다.

Azure SQL 중요 비즈니스용 서비스 계층의 기본 고가용성

이 연습에서는 다음 단계를 완료합니다.

  1. 이전 연습의 데이터베이스를 중요 비즈니스용 계층에 배포합니다.
  2. ostress 워크로드를 실행합니다.
  3. PowerShell을 사용하여 장애 조치를 시작합니다.
  4. ostress에서 결과를 확인합니다.
  5. 읽기 가능한 보조에 연결합니다.

동일한 데이터베이스를 중요 비즈니스용 계층에 배포

이전 모듈에서는 T-SQL을 사용하여 데이터베이스의 크기를 조정하는 방법을 알아보았습니다. 이 연습의 목표는 이전 연습에서 사용한 데이터베이스를 범용에서 중요 비즈니스용으로 업그레이드하는 것입니다. Azure Cloud Shell을 사용하여 데이터베이스를 업그레이드합니다. 장애 조치 빈도에 한도가 있으므로, 동일한 샘플 데이터베이스를 사용하지만 이름을 AdventureWorks-bc로 지정합니다.

  1. 이 페이지의 오른쪽에 있는 Azure Cloud Shell 터미널에서 다음 PowerShell 스크립트를 실행하여 환경을 구성합니다.

    $resourceGroup = "<rgn>Sandbox resource group name</rgn>"
    $database = "AdventureWorks-bc"
    $server = Get-AzureRmSqlServer -ResourceGroupName $resourceGroup
    $server = $server.ServerName
    
    # Specify your default resource group and Azure SQL Database logical server
    az configure --defaults group=$resourceGroup sql-server=$server
    
    # Confirm the defaults are set
    az configure --list-defaults
    
  2. 다음 명령을 실행하여 중요 비즈니스용 서비스 계층에 데이터베이스를 만듭니다.

    az sql db create --name $database `
    --edition BusinessCritical `
    --family Gen5 `
    --capacity 2 `
    --sample-name AdventureWorksLT `
    --read-scale Enabled `
    --zone-redundant false
    

    이 명령을 완료하는 데 시간이 좀 걸립니다. 실행되는 동안 사용된 몇 가지 매개 변수를 검토할 수 있습니다.

    • family: 이 매개 변수는 하드웨어의 세대를 지정합니다. 이전 연습과 일관되도록 Gen5를 사용했습니다.

    • capacity: 이 매개 변수는 DTU 또는 vCore의 개수를 지정합니다. 이전 연습과 일관되도록 2개의 vCore를 사용했습니다.

    • sample-name: 이전 연습과 일관되도록 AdventureWorksLT 데이터베이스 샘플을 사용했습니다.

    • edition: 이 매개 변수 이름은 약간 잘못되었습니다. 실제로는 서비스 계층을 참조하며 SQL Server에 사용된 버전과는 다릅니다.

    • read-scale: 이 옵션은 기본적으로 사용되지 않지만 연결된 추가 비용이 없습니다. 사용하도록 설정하면 보조 복제본 중 하나를 읽기 가능한 보조로 사용할 수 있습니다.

    • zone-redundant: 기본적으로 이 매개 변수는 false로 설정되며 “다중 Az” 배포가 필요한 경우 추가 비용 없이 true로 설정할 수 있습니다. 다음 단원에서 가용성 영역에 대해 자세히 알아봅니다.

      참고

      가용성 영역은 특정 영역에서만 사용할 수 있습니다. 현재 Azure SQL Managed Instance에서는 사용할 수 없습니다.

  3. 데이터베이스가 생성된 후에는 Azure Cloud Shell 출력에서 업데이트에 대한 자세한 정보가 표시됩니다. 두 가지 주요 범주가 표시됩니다(다른 속성 아래에도 표시기가 표시됨).

    • currentServiceObjectiveName: BC_Gen5_2여야 합니다. 여기서 BC는 중요 비즈니스용을 의미합니다.
    • currentSku:
      • name: BC_Gen5여야 합니다.
      • tier: BusinessCritical이어야 합니다.
  4. 서비스 계층을 확인하는 또 다른 방법은 Azure Portal에서 데이터베이스로 이동하는 것입니다. 개요 탭에서 가격 책정 계층을 참조하세요.

    업데이트를 확인하는 다른 많은 방법이 있으며 그중 한 방법은 SSMS를 사용하는 것입니다. 데이터베이스를 마우스 오른쪽 단추로 클릭하여 속성>SLO 구성을 선택하면 변경 내용을 볼 수 있습니다.

ostress 워크로드 실행

이전 연습과 같이 ostress를 사용하여 Azure SQL 데이터베이스를 반복적으로 쿼리합니다.

  1. 이전 연습에서 사용한 명령 프롬프트를 닫은 경우 로컬 컴퓨터에서 새 명령 프롬프트 창을 엽니다. cd를 사용하여 이전에 복제하거나 다운로드한 리포지토리에서 가용성 모듈이 있는 디렉터리로 이동합니다. 예를 들어 다음 명령을 사용할 수 있습니다.

    cd C:\Users\username\mslearn-azure-sql-fundamentals\05-Availability
    

    ostress 워크로드는 단순 쿼리를 50,000번 연결하고 실행합니다.

  2. 다음 ostress 스크립트를 사용하여 워크로드를 실행합니다. serverName을 Azure SQL Database 논리 서버의 이름으로 바꿉니다. password를 암호로 바꿉니다. 이 명령은 이전 연습에서 사용한 명령과 약간 다릅니다. 지금은 데이터베이스 이름이 AdventureWorks-bc입니다.

    .\ostress.exe -S"serverName.database.windows.net" -Q"SELECT COUNT(*) FROM SalesLT.Customer" -U"cloudadmin" -d"AdventureWorks-bc" -P"password" -n1 -r50000
    

    워크로드가 제대로 실행되는 경우 쿼리의 결과 847이 명령 프롬프트 창에 반복적으로 표시됩니다.

    ostress 워크로드 실행을 완료 전에 중지하려는 경우에는 터미널에서 Ctrl+C를 선택할 수 있습니다.

    워크로드를 다시 실행하려는 경우 명령을 다시 실행할 수 있습니다.

장애 조치 시작 및 결과 보기

  1. 이 브라우저와 명령 프롬프트 창을 동시에 볼 수 있도록 창을 구성합니다.

  2. Azure Cloud Shell 터미널에서 다음 코드를 실행합니다. 이 명령은 이전 연습에서 사용한 것과 동일합니다.

    # create a failover
    Invoke-AzSqlDatabaseFailover -ResourceGroupName $resourceGroup `
        -ServerName $server `
        -DatabaseName $database
    
  3. 이 명령이 실행되는 동안 터미널에 표시되는 모든 변경 내용을 확인해야 합니다. 장애 조치가 발생하는 동안에는 데이터베이스에 액세스할 수 없습니다. 이 시간은 매우 짧습니다. 연결이 끊어지면 약 5초 후에 다시 연결됩니다. 이 장애 조치는 범용 계층의 장애 조치보다 6배 이상 빠릅니다.

    중요 비즈니스용 서비스 계층의 데이터베이스 또는 관리되는 인스턴스에는 기본적으로 Always On 가용성 그룹이 배후에 배포되어 있으므로 따라서, 장애 조치하는 경우 Azure에서 보조 복제본 중 하나로 리디렉션됨에 따라 백 엔드에서 포인터만 변경될 뿐입니다. 이런 이유로, 장애 조치 속도가 범용 계층의 장애 조치 속도보다 훨씬 더 빠릅니다.

읽기 전용 복제본에 연결

read-scale 매개 변수를 사용하도록 설정했으므로 읽기 전용 워크로드에 보조 복제본 중 하나를 사용할 수 있습니다. 애플리케이션에서 읽기 전용 복제본에 액세스하려면 데이터베이스의 연결 문자열에 다음 매개 변수를 추가하면 됩니다.

ApplicationIntent=ReadOnly;
  1. SSMS에서 새 쿼리 연결을 만듭니다. (파일>새로 만들기>데이터베이스 엔진 쿼리 선택)

    Screenshot that shows how to create a query connection.

  2. 서버에 연결 대화 상자에서 사용해 오던 구성을 사용하여 Azure SQL Database 논리 서버에 연결합니다. 다시 말해서, SQL Server 인증을 사용합니다. 옵션을 선택합니다.

    Screenshot that shows the Connect to Server dialog box.

  3. 연결 속성을 선택하고 모두 다시 설정을 선택합니다. 데이터베이스에 연결에서 서버 찾아보기를 선택한 다음 AdventureWorks-bc 데이터베이스를 선택합니다. 확인을 선택합니다.

  4. 추가 연결 매개 변수를 선택하고 다음을 텍스트 상자에 붙여넣습니다. 연결을 선택합니다.

    ApplicationIntent=ReadOnly;
    

    SSMS에서는 읽기 전용으로 연결하려는 서버 및 데이터베이스를 지정해야 합니다. 읽기 가능한 보조에 대한 서로 다른 기능을 가진 여러 데이터베이스가 서버에 있을 수도 있기 때문입니다.

  5. 테스트하려면 새 데이터베이스 엔진 쿼리에서 다음 쿼리를 시도하고 결과를 확인합니다. 원하는 결과를 얻었는지 확인합니다.

    SELECT DATABASEPROPERTYEX(DB_NAME(), 'Updateability')
    

    Screenshot that shows the read-only response.

  6. 선택적으로 다시 연결하고 추가 연결 매개 변수를 업데이트할 수 있습니다. (ReadOnlyReadWrite로 바꿉니다.) 읽기/쓰기 주 복제본에 액세스하고 있는지 확인합니다. ReadWrite는 기본값이므로 아무것도 선택하지 않으면 기본값이 적용됩니다.

    Screenshot that shows the read/write response.