확장성을 위해 데이터베이스 작업 자동화

완료됨

SQL Server 자동화를 사용하는 경우 SQL 에이전트를 사용하여 자동화에 대한 작업을 예약하는 것이 일반적입니다. Azure Virtual Machine에서 실행되는 Azure SQL Managed Instance 및 SQL Server에는 여전히 해당 옵션이 있지만 Azure SQL Database는 그렇지 않으므로 유사한 결과를 얻으려면 대체 자동화 방법을 사용해야 할 수 있습니다.

Azure Automation

Azure Automation을 사용하면 프로세스 자동화, 구성 관리, 역할 기반 액세스 제어 및 Microsoft Entra ID와 같은 Azure 플랫폼 옵션과의 완전한 통합이 가능하며 Azure 및 온-프레미스 리소스를 관리할 수 있습니다.

Azure Automation을 사용하면 Azure 및 온-프레미스 VM 모두에서 리소스를 쉽게 제어할 수 있습니다. 예를 들어 하이브리드 Runbook을 사용하여 VM 시작, SQL Server 백업 실행 및 VM 종료와 같은 작업을 자동화하여 비용 효율적이고 효과적일 수 있습니다.

또 다른 일반적인 시나리오는 부실 데이터 또는 오래된 데이터를 제거하거나 SQL 데이터베이스를 다시 인덱싱하는 등 주기적인 유지 관리 작업에 Azure Automation을 사용하는 것입니다.

구성 요소

Azure Automation에서는 자동화 및 구성 관리 활동을 모두 지원합니다. 여기서는 자동화 구성 요소를 중점적으로 다루겠지만 Azure Automation을 사용하여 서버 업데이트 및 구성을 관리할 수도 있습니다.

구성 요소 설명
Runbook Runbook은 Azure Automation의 실행 단위입니다. Runbook은 PowerShell, PowerShell 스크립트 또는 Python 스크립트를 기반으로 하는 그래픽 runbook 이라는 세 가지 유형 중 하나로 정의할 수 있습니다. PowerShell runbook은 Azure SQL 리소스를 관리하는 데 가장 일반적으로 사용됩니다.
모듈 Azure Automation에서는 runbook에서 실행 중인 PowerShell 또는 Python 코드의 실행 컨텍스트를 정의합니다. 코드를 실행하려면 지원 모듈을 가져와야 합니다. 예를 들어 Get-AzSqlDatabase PowerShell cmdlet을 실행해야 하는 경우 Az.SQL PowerShell 모듈을 Automation 계정에 가져와야 합니다.
자격 증명 런타임 시 Runbook 및 구성에서 사용할 수 있는 중요한 정보를 안전하게 저장합니다.
예약 일정은 Runbook에 연결되어 특정 시간에 Runbook을 트리거합니다.

Azure SQL Database 및 Azure SQL Managed Instance 리소스를 관리하는 데 사용할 수 있는 Azure CLI 및 PowerShell 명령에 대해 자세히 알아보려면 Azure SQL용 PowerShell 모듈Azure SQL용 Azure CLI 링크를 참조하세요.

탄력적 작업

많은 DBA가 Azure Automation에 익숙해진 이유 중 하나는 처음에 Azure SQL Database에는 예약된 작업에 대한 기능이 부족했기 때문입니다.

이러한 제한은 DBA가 이러한 필수 작업을 효율적으로 처리하기 위한 대체 솔루션을 찾아야 했음을 의미합니다. Azure Automation은 이 시나리오에서 중요한 도구로 등장하여 예약된 작업을 만들고 관리하고, 데이터베이스 마이그레이션 프로세스를 자동화하고, 일상적인 유지 관리 작업을 수행하는 수단을 제공합니다.

아키텍처

탄력적 작업 기능을 사용하면 서버 또는 데이터베이스 컬렉션에 대해 일회성 작업으로 또는 정의된 일정을 사용하여 T-SQL 스크립트 세트를 실행할 수 있습니다. 탄력적 작업은 T-SQL 실행으로 제한되는 경우를 제외하고 SQL Server 에이전트 작업과 유사하게 작동합니다. 작업은 Azure SQL Database의 모든 계층에서 작동합니다.

Screenshot of the elastic job architecture diagram.

탄력적 작업을 구성하려면 작업 에이전트와 작업을 관리하는 전용 데이터베이스가 필요합니다. 작업 데이터베이스에 권장되는 서비스 계층은 S1 이상이며 최적 서비스 계층은 실행 중인 작업 수 및 해당 작업의 빈도에 따라 달라집니다.

탄력적 작업 구성 요소를 검토해 보겠습니다.

  • 탄력적 작업 에이전트 - 작업을 실행 및 관리하기 위한 Azure 리소스입니다.
  • 작업 데이터베이스 - 작업을 관리하기 위한 전용 데이터베이스입니다.
  • 대상 그룹 - 작업이 실행될 서버, 탄력적 풀 및 단일 데이터베이스의 컬렉션입니다.
  • 작업 - 작업 단계를 구성하는 하나 이상의 T-SQL 스크립트입니다.

서버 또는 탄력적 풀이 대상이면 작업 에이전트가 포함된 데이터베이스를 열거할 수 있도록 서버 또는 풀의 master 데이터베이스에 있는 자격 증명을 만들어야 합니다. 단일 데이터베이스의 경우 데이터베이스 자격 증명만 있으면 됩니다. 자격 증명은 작업 단계를 수행하는 데 필요한 최소한의 권한만 있어야 합니다.

Screenshot of the elastic job agent creation page.

Azure Portal을 통해 탄력적 작업 에이전트를 만들 수 있습니다. 탄력적 작업 에이전트 페이지에서 에이전트의 이름을 제공하고 작업 데이터베이스용 SQL 데이터베이스를 지정해야 합니다.

다음 PowerShell 스크립트는 MyFirstElasticJob이라는 탄력적 작업을 생성하고 여기에 작업 단계를 추가하고, 테이블이 데이터베이스에 없는 경우 SQL 명령을 실행하여 테이블을 생성합니다.

Write-Output "Creating a new job..."
$jobName = "MyFirstElasticJob"
$job = $jobAgent | New-AzSqlElasticJob -Name $jobName -RunOnce

Write-Output "Creating job steps for $($jobName) job..."
$sqlText1 = "IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = object_id('MyTable')) CREATE TABLE [dbo].[MyTable]([Id] [int] NOT NULL);"

$job | Add-AzSqlElasticJobStep -Name "Step1" -TargetGroupName $serverGroup.TargetGroupName -CredentialName $jobCred.CredentialName -CommandText $sqlText1

마지막으로 MyFirstElasticJob 탄력적 작업을 실행합니다.

Write-Output "Start the job..."
$jobExecution = $job | Start-AzSqlElasticJob
$jobExecution

사용 사례 시나리오

탄력적 작업은 다음 시나리오에서 사용할 수 있습니다.

  • 관리 작업을 자동화하여 특정 일정에 따라 실행합니다.
  • 스키마 변경 내용을 배포합니다.
  • 데이터를 이동합니다.
  • 보고 또는 기타 목적으로 데이터를 수집 및 집계합니다.
  • Azure Blob 스토리지에서 데이터를 로드합니다.
  • 사용량이 적은 시간 중과 같이 데이터베이스 컬렉션에 대해 되풀이해서 실행하려면 작업을 구성합니다.
  • 많은 수의 데이터베이스(예: 원격 분석 수집)에 대한 데이터 처리 결과는 추가 분석을 위해 단일 대상 테이블에 수집됩니다.

탄력적 작업으로 SQL 에이전트 작업 마이그레이션

SQL 에이전트 작업을 탄력적 작업으로 마이그레이션하기 위한 자체 스크립트를 만들 수 있지만 더 편리한 옵션을 사용할 수 있습니다. 기존 SQL 에이전트 작업을 탄력적 작업으로 복사하는 데 도움이 되는 다운로드 가능한 스크립트가 있습니다.

스크립트는 이러한 작업을 변환하는 프로세스를 자동화하여 새 환경에서 수동으로 다시 만들어야 하는 시간과 노력을 절약하는 도구입니다.

파일은 스크립트 및 관련 설명서를 포함하는 압축된 폴더입니다. 이 파일을 사용하려면 파일을 다운로드하고 지침을 따릅니다.

지침에 나열된 모든 매개 변수를 입력하면 작업 목록이 표시됩니다. 그런 다음 스크립트는 아직 존재하지 않는다고 가정하여 각 작업을 비활성화된 상태로 개별적으로 생성합니다. 작업을 만든 후 동일한 ID, 명령 텍스트, 재시도 시도 및 초기 다시 시도 간격(초)과 함께 단계가 추가됩니다. 작업 단계에 연결된 데이터베이스가 대상 그룹이 됩니다. 대상 그룹이 없으면 자동으로 만들어집니다. 복사본에는 일정, 경고 및 알림이 포함되지 않습니다.

SQL 에이전트 작업을 Azure의 SQL 에이전트로 마이그레이션

온-프레미스 SQL Server에서 Azure SQL Managed Instance 또는 Virtual Machine에서 실행되는 SQL Server로 작업을 마이그레이션하는 과정은 대부분의 DBA에게 익숙한 프로세스를 따릅니다.

이 시나리오에서는 온-프레미스 SQL Server를 Azure SQL Managed Instance로 마이그레이션했다고 가정합니다. Azure 환경에서 원활하게 작동하도록 여러 SQL 에이전트 작업을 마이그레이션하고 조정해야 합니다.

  • 종속성 평가: 마이그레이션할 SQL Agent 작업을 식별합니다. 작업이 사용하는 연결된 서버, 자격 증명 및 데이터베이스와 같은 종속성을 나열합니다.

  • SQL 에이전트 작업 스크립트: SQL Server에서 SQL 에이전트 작업을 SQL 스크립트로 스크립트합니다. SSMS(SQL Server Management Studio)에서 작업을 마우스 오른쪽 버튼으로 클릭하고 "작업 스크립트" -> "만들기 대상" -> "새 쿼리 편집기 창"을 선택하면 됩니다.

  • 작업 종속성 수정: SQL 스크립트를 검토하고 마이그레이션으로 인해 변경되었을 수 있는 작업 종속성을 수정합니다. 예를 들어 작업이 로컬 서버의 연결된 서버 또는 파일 경로를 참조하는 경우 새 환경과 일치하도록 업데이트합니다.

  • Azure SQL MI 작업 생성: SSMS 또는 Azure Data Studio를 열고 Azure SQL Managed Instance에 연결합니다. 이전에 생성한 스크립트를 사용하여 새 SQL 에이전트 작업을 만듭니다.

  • Azure SQL MI에 대한 종속성 생성: SQL 에이전트 작업이 연결된 서버 또는 자격 증명을 사용하는 경우 Azure SQL MI 환경에서 생성합니다. 온-프레미스 SQL Server 구성과 일치하는지 확인합니다.

  • 작업 예약: SQL Server 에이전트를 사용하여 Azure SQL MI에서 작업 일정을 설정합니다. 새 일정을 만들어 작업에 연결할 수 있습니다.

  • 테스트: Azure SQL MI 환경에서 SQL 에이전트 작업을 철저하게 테스트하여 예상대로 실행되는지 확인합니다. 온-프레미스 SQL Server 및 Azure SQL MI 간의 차이로 인해 발생할 수 있는 오류 또는 문제를 확인합니다.

  • 모니터링 및 유지 관리: 작업 성능을 모니터링하고 Azure SQL MI 환경의 요구 사항을 계속 충족하는지 확인합니다. 필요에 따라 구성 또는 일정을 조정합니다.