bestsource

Azure SQL 데이터베이스 자동 확장

bestsource 2023. 5. 24. 22:16
반응형

Azure SQL 데이터베이스 자동 확장

데이터베이스 백엔드에 Azure SQL을 사용하는 애플리케이션이 있습니다.정상적인 로드/조건에서 이 데이터베이스는 Premium 1 계획에서 성공적으로 실행될 수 있습니다.그러나 이른 아침 시간에는 데이터베이스 로드를 증가시키는 작업이 실행됩니다.이 몇 시간 동안 프리미엄 3 요금제로 전환해야 합니다.Premium 3의 비용은 약 8배이므로 이 계획에 따라 24x7로 운영되는 비용을 지불하고 싶지 않습니다.

데이터베이스를 자동으로 위아래로 조정할 수 있습니까?클라우드 서비스는 Azure Portal의 인스턴스 수를 쉽게 확장할 수 있는 방법을 제공하지만, Azure SQL 데이터베이스에는 이와 유사한 것이 없습니다.Azure SDK로 프로그래밍 방식으로 이 작업을 수행할 수 있습니까?이 주제에 대한 문서를 찾을 수 없습니다.

@ErikEJ의 답변에 있는 기사를 자세히 살펴본 후 (감사합니다!)Elastic Scale 미리 보기 릴리스와 함께 새로 게시된 것으로 보이는 다음을 찾을 수 있었습니다.

데이터베이스 서비스 계층 및 성능 수준 변경

다음 REST API도 새롭게 제공되므로 데이터베이스에서 원하는 작업을 거의 수행할 수 있습니다.

Azure SQL 데이터베이스를 위한 REST API 작업

서비스 계층 확장에 대한 원래 질문(예: P1 -> P3 -> P1):

데이터베이스 REST API 업데이트

이러한 새로운 개발을 통해 자동 확장이 클라우드 서비스와 마찬가지로 Azure Portal에서 간단한 구성으로 제공되는 것은 시간 문제라고 가정합니다.

또 다른 방법은 Azure 자동화와 아래의 런북을 사용하는 것입니다.

param
(
    # Desired Azure SQL Database edition {Basic, Standard, Premium}
    [parameter(Mandatory=$true)] 
    [string] $Edition,

    # Desired performance level {Basic, S0, S1, S2, P1, P2, P3}
    [parameter(Mandatory=$true)] 
    [string] $PerfLevel

)

inlinescript
{
    # I only care about 1 DB so, I put it into variable asset and access from here
    $SqlServerName = Get-AutomationVariable -Name 'SqlServerName'
    $DatabaseName = Get-AutomationVariable -Name 'DatabaseName'


    Write-Output "Begin vertical scaling script..."

    # Establish credentials for Azure SQL Database server 
    $Servercredential = new-object System.Management.Automation.PSCredential("yourDBadmin", ("YourPassword" | ConvertTo-SecureString -asPlainText -Force)) 

    # Create connection context for Azure SQL Database server
    $CTX = New-AzureSqlDatabaseServerContext -ManageUrl “https://$SqlServerName.database.windows.net” -Credential $ServerCredential

    # Get Azure SQL Database context
    $Db = Get-AzureSqlDatabase $CTX –DatabaseName $DatabaseName

    # Specify the specific performance level for the target $DatabaseName
    $ServiceObjective = Get-AzureSqlDatabaseServiceObjective $CTX -ServiceObjectiveName "$Using:PerfLevel"

    # Set the new edition/performance level
    Set-AzureSqlDatabase $CTX –Database $Db –ServiceObjective $ServiceObjective –Edition $Using:Edition -Force

    # Output final status message
    Write-Output "Scaled the performance level of $DatabaseName to $Using:Edition - $Using:PerfLevel"
    Write-Output "Completed vertical scale"
}


참조:
애저 수직 스케일 런북
스케일업/스케일다운을 원하는 일정을 설정합니다.
저는 입력 매개 변수가 있는 두 가지 일정을 사용했는데, 하나는 스케일업용이고 다른 하나는 스케일다운용이었습니다.
도움이 되길 바랍니다.

예, 이 기능을 사용할 수 있습니다. Azure SQL Database Elastic Scale

https://learn.microsoft.com/en-gb/azure/sql-database/sql-database-elastic-scale-introduction

경우에 따라 가장 쉬운 옵션은 msdn에 설명된 대로 SQL 쿼리를 실행하는 것일 수 있습니다.

예:

ALTER DATABASE [database_name] MODIFY (EDITION = 'standard', SERVICE_OBJECTIVE = 'S3', MAXSIZE = 250 GB)

언급URL : https://stackoverflow.com/questions/26782235/autoscaling-azure-sql-database

반응형