Pregunta Ajuste automático de la base de datos SQL Azure


Tenemos una aplicación que usa Azure SQL para el back-end de la base de datos. En condiciones de carga / condiciones normales, esta base de datos puede ejecutarse correctamente en un plan Premium 1. Sin embargo, durante las primeras horas de la mañana tenemos trabajos que se ejecutan que aumentan la carga de la base de datos. Durante estas pocas horas, debemos pasar a un plan Premium 3. El costo de un Premium 3 es aproximadamente 8 veces más, así que obviamente no queremos pagar los costos de correr en este plan 24/7.

¿Es posible escalar automáticamente la base de datos hacia arriba y hacia abajo? Los servicios en la nube ofrecen una manera fácil de escalar el número de instancias en Azure Portal; sin embargo, no existe nada parecido a esto para las bases de datos Azure SQL. ¿Se puede hacer esto mediante programación con Azure SDK? No he podido encontrar ninguna documentación sobre este tema.


32
2017-11-06 14:45


origen


Respuestas:


Después de repasar los artículos en la respuesta de @ ErikEJ (¡Gracias!) Pude encontrar lo siguiente, que parece ser publicado recientemente con el lanzamiento de la vista previa de Elastic Scale:

Cambiar los niveles del servicio de base de datos y los niveles de rendimiento

Las siguientes API REST ahora también están disponibles, lo que le permite hacer prácticamente lo que quiera a sus bases de datos:

Operaciones de REST API para bases de datos SQL Azure

Y para mi pregunta original de escalonamiento de niveles de servicio (por ejemplo, P1 -> P3 -> P1):

Actualizar la API REST de la base de datos

Con estos nuevos desarrollos, voy a suponer que es solo una cuestión de tiempo antes de que la escalado automático también esté disponible como una configuración simple en Azure Portal, muy similar a los servicios en la nube.


17
2017-11-06 18:23



Sí, esa característica tiene está disponible: Azure SQL Database Elastic Scale

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


11
2017-11-06 14:54



Otra forma de hacerlo es utilizando la automatización de Azure y usando run book a continuación:

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


 Árbitro:
RunBook Azure Vertical Scale
Programación de la configuración cuando desea escalar hacia arriba / abajo.
Para mí, utilicé 2 programas con parámetros de entrada, 1 para escalar y otro para reducir.
 Espero que ayudes.


9
2017-10-01 07:22



En algunos casos, la opción más fácil podría ser simplemente ejecutar una consulta SQL como descrito en msdn.

Por ejemplo:

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

7
2017-07-06 10:25