Autoscaling Azure SQL Database

后端 未结 4 474
说谎
说谎 2020-12-24 05:45

We have an application that uses Azure SQL for the database backend. Under normal load/conditions this database can successfully run on a Premium 1 plan. However, during the

相关标签:
4条回答
  • 2020-12-24 05:56

    Yes, that feature has is available: Azure SQL Database Elastic Scale

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

    0 讨论(0)
  • 2020-12-24 06:04

    In some cases the easiest option might be to just run SQL query as described in msdn.

    For example:

    ALTER DATABASE [database_name] MODIFY (EDITION = 'standard', SERVICE_OBJECTIVE = 'S3', MAXSIZE = 250 GB)
    
    0 讨论(0)
  • 2020-12-24 06:19

    Another way to do it is using Azure automation and using run book below:

    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"
    }
    


    Ref:
    Azure Vertically Scale Runbook
    Setting schedule when u want to scale up/down.
    For me, I used 2 schedules with input parameters, 1 for scaling up and another one for scaling down.
    Hope that help.

    0 讨论(0)
  • 2020-12-24 06:20

    After digging through the articles in @ErikEJ's answer (Thanks!) I was able to find the following, which appears to be newly published with the release of the Elastic Scale preview:

    Changing Database Service Tiers and Performance Levels

    The following REST APIs are now newly available as well, which let you do pretty much whatever you want to your databases:

    REST API Operations for Azure SQL Databases

    And for my original question of scaling service tiers (ex. P1 -> P3 -> P1):

    Update Database REST API

    With these new developments I am going to assume it's only a matter of time before autoscaling is also available as a simple configuration in the Azure Portal, much like cloud services.

    0 讨论(0)
提交回复
热议问题