41

我们有一个使用 Azure SQL 作为数据库后端的应用程序。在正常负载/条件下,此数据库可以在 Premium 1 计划上成功运行。但是,在凌晨时分,我们运行的作业会增加数据库负载。在这几个小时内,我们需要迁移到 Premium 3 计划。Premium 3 的成本大约是 8 倍,因此显然我们不想支付 24/7 运行此计划的成本。

是否可以向上和向下自动缩放数据库?云服务提供了一种简单的方法来扩展 Azure 门户中的实例数量,但是,Azure SQL 数据库不存在这样的情况。这可以通过 Azure SDK 以编程方式完成吗?我一直无法找到有关此主题的任何文档。

4

4 回答 4

19

在浏览了@ErikEJ 的回答(谢谢!)中的文章后,我能够找到以下内容,这似乎是随着 Elastic Sc​​ale 预览版的发布而新发布的:

更改数据库服务层和性能级别

以下 REST API 现在也是新可用的,它可以让您对数据库执行几乎任何您想做的事情:

Azure SQL 数据库的 REST API 操作

对于我最初关于扩展服务层级的问题(例如 P1 -> P3 -> P1):

更新数据库 REST API

有了这些新的发展,我将假设自动缩放也可以作为 Azure 门户中的简单配置使用只是时间问题,就像云服务一样。

于 2014-11-06T18:23:03.887 回答
13

另一种方法是使用 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 Vertically Scale Runbook
在您想扩大/缩小时设置时间表。
对我来说,我使用了 2 个带有输入参数的时间表,1 个用于放大,另一个用于缩小。
希望有所帮助。

于 2015-10-01T07:22:20.467 回答
12

是的,该功能可用:Azure SQL Database Elastic Sc​​ale

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

于 2014-11-06T14:54:14.303 回答
10

在某些情况下,最简单的选择可能是只运行msdn 中描述的SQL 查询。

例如:

ALTER DATABASE [database_name] MODIFY (EDITION = 'standard', SERVICE_OBJECTIVE = 'S3', MAXSIZE = 250 GB)
于 2016-07-06T10:25:59.660 回答