Подтвердить что ты не робот

Автосканирование базы данных Azure SQL

У нас есть приложение, которое использует Azure SQL для бэкэнд базы данных. При нормальных нагрузках/условиях эта база данных может успешно работать в плане Premium 1. Тем не менее, в ранние утренние часы у нас работают рабочие места, которые увеличивают загрузку базы данных. В течение этих нескольких часов нам нужно перейти к плану Premium 3. Стоимость Premium 3 примерно в 8 раз больше, поэтому, очевидно, мы не хотим оплачивать расходы на выполнение этого плана 24/7.

Можно ли автомасштабировать базу данных вверх и вниз? Облачные сервисы предлагают простой способ масштабировать количество экземпляров на Azure Portal, однако ничего подобного не существует для баз данных Azure SQL. Это можно сделать программно с помощью Azure SDK? Мне не удалось найти документацию по этому вопросу.

4b9b3361

Ответ 1

После того, как вы прочитали статьи в @ErikEJ, ответьте (спасибо!), я смог найти следующее, которое, как представляется, было недавно опубликовано с выпуском предварительного просмотра Elastic Scale:

Изменение уровней обслуживания базы данных и уровней производительности

Теперь доступны новые API-интерфейсы REST, которые позволяют делать практически все, что вы хотите, в своих базах данных:

Операции REST API для баз данных Azure SQL

И для моего первоначального вопроса о масштабировании уровней обслуживания (например, P1 → P3 → P1):

Обновить API REST API

С этими новыми разработками я собираюсь предположить, что это всего лишь вопрос времени, прежде чем автомасштабирование также будет доступно в виде простой конфигурации на Azure Portal, подобно облачным сервисам.

Ответ 3

Другой способ сделать это - использовать автоматизацию 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"
}


Ref:
Лазурная вертикальная шкала Runbook
Настройка графика, когда вы хотите масштабировать вверх/вниз.
Для меня я использовал 2 графика с входными параметрами, 1 для масштабирования и еще один для уменьшения.
Надеюсь, что это поможет.

Ответ 4

В некоторых случаях самым простым вариантом может быть просто запуск SQL-запроса как описанный в msdn.

Например:

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