Pertanyaan Autoscaling Azure SQL Database


Kami memiliki aplikasi yang menggunakan Azure SQL untuk backend basis data. Di bawah beban / kondisi normal, basis data ini berhasil dijalankan pada paket Premium 1. Namun, selama jam pagi kami memiliki pekerjaan yang berjalan yang meningkatkan beban basis data. Selama beberapa jam ini kita perlu pindah ke paket Premium 3. Biaya Premium 3 sekitar 8 kali lebih banyak, jadi jelas kami tidak ingin membayar biaya untuk menjalankan rencana ini 24/7.

Apakah mungkin untuk melakukan autoscale database ke atas dan ke bawah? Layanan cloud menawarkan cara mudah untuk menskalakan jumlah instance di Portal Azure, namun, tidak ada yang seperti ini untuk database Azure SQL. Apakah ini dapat dilakukan secara terprogram dengan Azure SDK? Saya tidak dapat menemukan dokumen apa pun tentang hal ini.


32
2017-11-06 14:45


asal


Jawaban:


Setelah menggali artikel dalam jawaban @ ErikEJ (Terima kasih!) Saya dapat menemukan yang berikut, yang tampaknya baru diterbitkan dengan merilis pratinjau Elastic Scale:

Mengubah Tingkat Layanan dan Tingkat Kinerja Basis Data

API REST berikut ini juga baru tersedia, yang memungkinkan Anda melakukan apa pun yang Anda inginkan ke basis data Anda:

Operasi API REST untuk Azure SQL Databases

Dan untuk pertanyaan awal saya tentang tingkatan layanan skala (contoh P1 -> P3 -> P1):

Perbarui API REST Database

Dengan perkembangan baru ini saya akan menganggap itu hanya masalah waktu sebelum penskalaan otomatis juga tersedia sebagai konfigurasi sederhana di Portal Azure, seperti layanan cloud.


17
2017-11-06 18:23



Ya, fitur itu telah tersedia: 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



Cara lain untuk melakukannya adalah menggunakan otomatisasi Azure dan menggunakan buku run di bawah ini:

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 Runbook Skala Vertikal
Atur jadwal ketika Anda ingin meningkatkan / menurunkan.
Bagi saya, saya menggunakan 2 jadwal dengan parameter input, 1 untuk skala dan satu lagi untuk scaling down.
 Semoga itu membantu.


9
2017-10-01 07:22



Dalam beberapa kasus, opsi termudah adalah menjalankan kueri SQL sebagai dijelaskan dalam msdn.

Sebagai contoh:

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

7
2017-07-06 10:25