2014-11-06 5 views
29

데이터베이스 백엔드에 Azure SQL을 사용하는 응용 프로그램이 있습니다. 정상적인로드/조건에서이 데이터베이스는 Premium 1 계획에서 성공적으로 실행될 수 있습니다. 그러나 이른 아침 시간에 작업을 실행하면 데이터베이스 부하가 증가합니다. 이 몇 시간 동안 Premium 3 플랜으로 이동해야합니다. Premium 3의 비용은 약 8 배 정도이므로이 계획을 24 시간 연중 무휴 운영하는 비용을 지불하고 싶지는 않습니다.Azure SQL 데이터베이스 자동 수정

데이터베이스를 자동으로 올리거나 내릴 수 있습니까? 클라우드 서비스는 Azure Portal에서 인스턴스의 수를 쉽게 조정할 수있는 방법을 제공하지만 Azure SQL 데이터베이스에는 이와 같은 어떤 것도 존재하지 않습니다. Azure SDK를 사용하여 프로그래밍 방식으로이 작업을 수행 할 수 있습니까? 이 주제에 대한 문서를 찾을 수 없었습니다.

답변

17

@ ErikEJ의 대답에 기사를 통해 파고 후 나는 다음을 찾을 수 있었다, 이는에 나타납니다 새로 탄성 스케일 미리보기의 출시와 함께 공개 :

Changing Database Service Tiers and Performance Levels

다음 REST API를 사용하면 꽤 많은 일을 할 수있는뿐만 아니라 이제 새롭게 가능 당신이 당신의 데이터베이스에 원하는 :

REST API Operations for Azure SQL Databases

및 서비스 계층에게 (예 스케일링의 내 원래의 질문에 대한

. P1 -> P3 -> P1) : 자동 확장 많은 구름처럼, 또한 푸른 포털에서 간단한 구성으로 사용할 수 있습니다 전에 그것은 단지 시간 문제 가정 할 것입니다 이러한 새로운 개발로

Update Database REST API

서비스.

+0

서비스 목표가 너무 나쁘면 간단한 "P1 "인간이 알고 이해할 수있는 스타일 식별자.;) –

+0

그래, 실제로 얻지는 못했지만 계층을 확장하는 경우 내 테스트에서 Name, Edition 및 ServiceObjectiveId (GUID)를 제공해야합니다. – kspearrin

+4

@DavidPeden,'select * from slo_service_objectives' - 목적 ID와 "P1"또는 "S2"와 같은 이름 사이의 매핑을 제공합니다. –

11

예, 기능을 가지고 사용할 수있는 (! 감사합니다) 푸른 SQL 데이터베이스 탄성 규모

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

+5

탄성 규모는 여러 데이터베이스에 걸쳐 분할/샤딩 데이터의, 오토 스케일링을하지 않는 것 같습니다. 큰 시나리오의 경우 이것은 하루 동안 확장하는 데 유용하지 않습니다. –

+0

@ErikO - 왜 그렇게 생각하는지 모르겠습니까? http://azure.microsoft.com/en-us/documentation/articles/sql-database-elastic-scale- 탄력/ – ErikEJ

+0

세로 크기 조정에 대해 몰랐습니다. 감사합니다! –

6

또 다른 방법은 푸른 자동화를 사용하여 아래 실행 책을 사용하려면 다음을 수행

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 Vertically Scale Runbook
유/아래로 확장 할 때 일정을 설정.
필자는 입력 매개 변수가있는 2 개의 스케줄을 사용했으며, 1은 스케일 업을위한 것이고 다른 하나는 스케일링을위한 것입니다.
도움이 되길 바랍니다.

+2

굉장! 이 솔루션은 자동화 계정, 새 Asset (자격 증명), 새로운 Runbook (이 하나) 및 새로운 Schedule을 만드는 방법을 배우는 데 더 많은 독서가 필요합니다. 그러나 매력과 같습니다. 감사합니다! –

+1

이것은 훌륭한 대답입니다. * Classic Azure 포털 *을 통해 수행 할 수 있습니다. (1) 자동화 계정 생성 (2) 자산> 추가> 신임 정보> PS 신임> (DB 관리자 신임) (3) 위의 런북 가져 오기) (4) 테스트하려면 : 작성자> 초안> 시작, 위와 다른 매개 변수의 자격 증명 이름을 제공하십시오. (5) 모든 것이 좋으면 런 북을 게시하고 일정을 만듭니다 (자명 함). – Dunc

+0

갤러리에서 위의 런북을 가져와 작동합니다 간식. –

5

가장 쉬운 옵션은 SQL 쿼리를 described in msdn으로 실행하는 것입니다. 예를 들어

:

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