2014-11-06 9 views
29

Veritabanı arka planı için Azure SQL kullanan bir uygulamamız var. Normal yük/koşullar altında bu veritabanı Premium 1 planında başarılı bir şekilde çalışabilir. Ancak, sabahın erken saatlerinde bu artış veritabanı yükünü çalıştırmak iş var. Bu birkaç saat boyunca Premium 3 planına geçmeliyiz. Bir Premium 3'ün maliyeti yaklaşık 8 kat daha fazladır, bu nedenle bu plan üzerinde 7/24 çalışmanın masraflarını ödemek istemiyoruz.Otomatik ölçeklendirme Azure SQL Veritabanı

Veritabanını otomatik olarak ölçeklendirmek mümkün mü? Bulut hizmetleri, Azure Portalı'ndaki örneklerin sayısını ölçeklendirmenin kolay bir yolunu sunar, ancak Azure SQL veritabanları için böyle bir şey yoktur. Bu, Azure SDK ile programlı olarak yapılabilir mi? Bu konuyla ilgili herhangi bir belgeyi bulamadım.

cevap

17

@ ErikEJ yanıtında makalelere kazma sonra aşağıdaki bulabildim, hangi görünüyor yeni Elastik Ölçek önizleme sürümü ile yayınlanacak:

Changing Database Service Tiers and Performance Levels

aşağıdaki REST API'leri hemen hemen yapalım ki, hem artık yeni mevcuttur Eğer veritabanlarına istediğini:

REST API Operations for Azure SQL Databases

Ve servis katmanları (ex ölçekleme bana ait özgün soru için

. P1 -> P3 -> P1): otomatik ölçeklendirme çok bulut gibi, aynı zamanda Azure Portal'da basit yapılandırma olarak kullanılabilir önce sadece an meselesi varsaymak gidiyorum bu yeni gelişmelerle birlikte

Update Database REST API

Hizmetler.

+0

Çok kötü servis hedefleri basit değil "P1 "İnsanların bildiği ve anladığı stil tanımlayıcıları.;) –

+0

Evet, bunu anlamıyorum, ancak testlerimden, katmanları ölçekliyorsanız Ad, Sürüm ve ServiceObjectiveId (GUID) değerini sağlamanız gerekir. – kspearrin

+4

@DavidPeden, "slo_service_objectives" ifadesinden bir 'select * yapın - bu, nesne kimliği ile" P1 "veya" S2 "gibi adların eşleştirilmesini sağlar. –

11

Evet, bu özellik vardır mevcuttur: (Teşekkürler) Azure SQL Veritabanı Elastik Ölçeği

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

+5

Elastik ölçek o Birçok veritabanında bölümleme/Kırma işlemi verileri için var, otomatik ölçeklendirmeyi yapmak görünmüyor. Büyük senaryo için bu yararlıdır, –

+0

@ErikO gün boyunca ölçeklendirme için değil - neden bunu düşündüğünüzden emin değil: http://azure.microsoft.com/en-us/documentation/articles/sql-database-elastic-scale- Esneklik/ – ErikEJ

+0

Dikey ölçeklendirme hakkında bilgi sahibi olmadı, teşekkürler! –

6

bir başka yolu da Azure otomasyon kullanıp aşağıdaki çalışma kitabı kullanarak yapmanız:

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
u aşağı/büyütmek istediğinizde zamanlamayı ayarlama.
Benim için, ölçekleme için 1, ölçekleme için 1 ve ölçekleme için bir tane daha kullanmıştım.
Yardım edin umarım.

+2

Müthiş! Bu çözüm biraz daha fazla okumayı (Otomasyon Hesabı, yeni bir Varlık (Credential), yeni bir Runbook (bu) ve yeni bir Schedule oluşturmayı öğrenmeyi gerektirir. Ama bu bir çekicilik gibi çalışır. Teşekkürler! –

+1

Bu harika bir cevaptır, ve * Klasik Azure Portalı * ile yapılabilir. (1) Bir otomasyon hesabı oluşturun (2) Varlıklar> Ekle> Kimlik bilgileri> PS kimlik bilgisi> {DB Yönetici kredileriniz} (3) Yukarıdaki başvuru kitabını içe aktarın (bağlantıyı takip edin ve önce indir)) (4) Test etmek için: Yazar> Taslak> Başlayın, yukarıdaki kimlik bilgilerini girin ve diğer paramları verin. (5) Eğer tüm iyi, runbook yayınlayın ve program oluşturun (oldukça açıklayıcı). – Dunc

+0

yukarıdaki runbook'u galeriye aktardı, Bir tedavi. –

5

Bazı durumlarda, SQL sorgusunu yalnızca described in msdn olarak çalıştırmak en kolay seçenek olabilir. Örneğin

:

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