Distribuire Istanza gestita di SQL di Azure in un pool di istanze

Si applica a: Istanza gestita di SQL di Azure

Questo articolo fornisce informazioni dettagliate su come creare un pool di istanze e distribuire Istanza gestita di SQL di Azure in esso.

Operazioni dei pool di istanze

Nella tabella seguente vengono illustrate le operazioni disponibili correlate ai pool di istanze e alla relativa disponibilità nell'interfaccia della portale di Azure, powerShell e dell'interfaccia della riga di comando di Azure.

Comando Portale di Azure PowerShell Interfaccia della riga di comando di Azure
Creare un pool di istanze No
Aggiornare un pool di istanze (numero limitato di proprietà) No
Controllare l'utilizzo e le proprietà del pool di istanze No
Eliminare un pool di istanze No
Creare un'istanza gestita all'interno di un pool di istanze No No
Aggiornare l'utilizzo delle risorse per un'istanza gestita No
Controllare l'utilizzo e le proprietà per un'istanza gestita No
Eliminare un'istanza gestita dal pool No
Creare un database nell'istanza del pool No
Eliminare un database da Istanza gestita di SQL No

Per usare PowerShell, installare la versione più recente di PowerShell Core e seguire le istruzioni per installare il modulo Azure PowerShell.

Comandi di PowerShell disponibili:

Cmdlet Descrizione
New-AzSqlInstancePool Crea un pool di Istanza gestita di SQL.
Get-AzSqlInstancePool Restituisce informazioni su un pool di istanze.
Set-AzSqlInstancePool Imposta le proprietà per un pool di istanze in Istanza gestita di SQL.
Remove-AzSqlInstancePool Rimuove un pool di istanze in Istanza gestita di SQL.
Get-AzSqlInstancePoolUsage Restituisce informazioni sull'utilizzo del pool di Istanza gestita di SQL.

Per le operazioni correlate alle istanze sia all'interno di pool che singole, usare i comandi per istanze gestite standard. La proprietà instance pool name deve essere popolata quando si usano questi comandi per un'istanza in un pool.

Processo di distribuzione

Per distribuire un'istanza gestita in un pool di istanze, è prima necessario distribuire il pool di istanze, ovvero un'operazione a esecuzione singola in cui la durata corrisponde alla distribuzione di una singola istanza creata in una subnet vuota. In seguito, è possibile distribuire un'istanza gestita nel pool, ovvero un'operazione relativamente veloce che in genere richiede fino a cinque minuti. Il parametro del pool di istanze deve essere specificato in modo esplicito come parte di questa operazione.

In anteprima pubblica, entrambe le azioni sono supportate solo con i modelli di PowerShell e Azure Resource Manager. L'esperienza del portale di Azure non è attualmente disponibile.

Dopo la distribuzione di un'istanza gestita in un pool, è possibile usare il portale di Azure per modificarne le proprietà nella pagina del piano tariffario.

Creare una rete virtuale con una subnet

Per inserire più pool di istanze all'interno della stessa rete virtuale, vedere gli articoli seguenti:

Creare un pool di istanze

Dopo aver completato i passaggi precedenti, è possibile creare un pool di istanze.

Ai pool di istanze si applicano le restrizioni seguenti:

  • Nell'anteprima pubblica sono disponibili solo i pool per utilizzo generico e di quinta generazione.
  • Il nome del pool può contenere solo lettere minuscole, numeri e trattini e non può iniziare con un trattino.
  • Se si vuole usare Vantaggio Azure Hybrid, viene applicato a livello di pool di istanze. È possibile impostare il tipo di licenza durante la creazione del pool o aggiornarlo in qualsiasi momento dopo la creazione.

Importante

La distribuzione di un pool di istanze è un'operazione a esecuzione prolungata che richiede circa 4,5 ore.

Per ottenere i parametri di rete:

$virtualNetwork = Get-AzVirtualNetwork -Name "miPoolVirtualNetwork" -ResourceGroupName "myResourceGroup"
$subnet = Get-AzVirtualNetworkSubnetConfig -Name "miPoolSubnet" -VirtualNetwork $virtualNetwork

Per creare un pool di istanze:

$instancePool = New-AzSqlInstancePool `
  -ResourceGroupName "myResourceGroup" `
  -Name "mi-pool-name" `
  -SubnetId $subnet.Id `
  -LicenseType "LicenseIncluded" `
  -VCore 8 `
  -Edition "GeneralPurpose" `
  -ComputeGeneration "Gen5" `
  -Location "westeurope"

Importante

Poiché la distribuzione di un pool di istanze è un'operazione a esecuzione prolungata, è necessario attenderne il completamento prima di eseguire uno dei passaggi successivi contenuti in questo articolo.

Creare un'istanza gestita

Dopo aver completato la distribuzione del pool di istanze, è possibile creare un'istanza gestita all'interno di esso.

Eseguire il comando seguente per creare un'istanza gestita:

$instanceOne = $instancePool | New-AzSqlInstance -Name "mi-one-name" -VCore 2 -StorageSizeInGB 256

La distribuzione di un'istanza all'interno di un pool richiede un paio di minuti. Una volta creata la prima istanza, è possibile creare istanze aggiuntive:

$instanceTwo = $instancePool | New-AzSqlInstance -Name "mi-two-name" -VCore 4 -StorageSizeInGB 512

Creazione di un database

Per creare e gestire database in un'istanza gestita all'interno di un pool, usare i comandi a istanza singola.

Per creare un database all'interno di un'istanza gestita:

$poolinstancedb = New-AzSqlInstanceDatabase -Name "mipooldb1" -InstanceName "poolmi-001" -ResourceGroupName "myResourceGroup"

Ottenere l'utilizzo del pool

Per ottenere un elenco di istanze all'interno di un pool:

$instancePool | Get-AzSqlInstance

Per ottenere i dati di uso delle risorse del pool:

$instancePool | Get-AzSqlInstancePoolUsage

Per ottenere una panoramica dettagliata sull'uso del pool e delle istanze al suo interno:

$instancePool | Get-AzSqlInstancePoolUsage –ExpandChildren

Per elencare i database in un'istanza:

$databases = Get-AzSqlInstanceDatabase -InstanceName "pool-mi-001" -ResourceGroupName "resource-group-name"

Nota

Per controllare i limiti relativi al numero di database per pool di istanze e all'istanza gestita distribuita all'interno del pool, visitare la sezione Limiti delle risorse del pool di istanze .

Scalabilità

Dopo aver popolato un'istanza gestita con i database, è possibile che vengano raggiunti i limiti dell'istanza relativi ad archiviazione o prestazioni. In tal caso, se il limite di uso del pool non è stato superato, è possibile ridimensionare l'istanza. Il ridimensionamento di un'istanza gestita all'interno di un pool è un'operazione che richiede un paio di minuti. Il prerequisito per il ridimensionamento è disporre di vCore e risorse di archiviazione a livello di pool di istanze.

Per aggiornare il numero di vCore e le dimensioni di archiviazione:

$instanceOne | Set-AzSqlInstance -VCore 8 -StorageSizeInGB 512 -InstancePoolName "mi-pool-name"

Per aggiornare solo le dimensioni di archiviazione:

$instance | Set-AzSqlInstance -StorageSizeInGB 1024 -InstancePoolName "mi-pool-name"

Connessione

Per connettersi a un'istanza gestita in un pool è necessario eseguire i due passaggi seguenti:

  1. Abilitare l'endpoint pubblico per l'istanza.
  2. Aggiungere una regola in ingresso al gruppo di sicurezza di rete (NSG).

Una volta completati entrambi i passaggi, è possibile connettersi all'istanza tramite un indirizzo endpoint pubblico, una porta e le credenziali fornite durante la creazione dell'istanza.

Abilitare l'endpoint pubblico

L'abilitazione dell'endpoint pubblico per un'istanza può essere eseguita tramite il portale di Azure o tramite il comando PowerShell seguente:

$instanceOne | Set-AzSqlInstance -InstancePoolName "pool-mi-001" -PublicDataEndpointEnabled $true

Questo parametro può essere impostato anche durante la creazione dell'istanza.

Aggiungere una regola in ingresso al gruppo di sicurezza di rete

Questo passaggio può essere eseguito tramite il portale di Azure o i comandi di PowerShell e in qualsiasi momento dopo la preparazione della subnet per l'istanza gestita.

Per informazioni dettagliate, vedere Consentire il traffico dell'endpoint pubblico nel gruppo di sicurezza di rete.

Spostare un'istanza singola esistente in un pool

Lo spostamento delle istanze all'interno e all'esterno di un pool è uno dei limiti dell'anteprima pubblica. Una soluzione alternativa si basa sul ripristino temporizzato dei database da un'istanza esterna a un pool a un'istanza già presente in un pool.

Entrambe le istanze devono trovarsi nella stessa sottoscrizione e nella stessa area. Il ripristino tra le aree e tra le sottoscrizioni non è supportato al momento.

Questo processo ha un periodo di tempo di inattività.

Per spostare i database esistenti:

  1. Sospendere i carichi di lavoro nell'istanza gestita da cui si esegue la migrazione.

  2. Generare script per creare database di sistema ed eseguirli nell'istanza all'interno del pool di istanze.

  3. Eseguire un ripristino temporizzato di ogni database dalla singola istanza all'istanza nel pool.

    $resourceGroupName = "my resource group name"
    $managedInstanceName = "my managed instance name"
    $databaseName = "my source database name"
    $pointInTime = "2019-08-21T08:51:39.3882806Z"
    $targetDatabase = "name of the new database that will be created"
    $targetResourceGroupName = "resource group of instance pool"
    $targetInstanceName = "pool instance name"
    
    Restore-AzSqlInstanceDatabase -FromPointInTimeBackup `
      -ResourceGroupName $resourceGroupName `
      -InstanceName $managedInstanceName `
      -Name $databaseName `
      -PointInTime $pointInTime `
      -TargetInstanceDatabaseName $targetDatabase `
      -TargetResourceGroupName $targetResourceGroupName `
      -TargetInstanceName $targetInstanceName
    
  4. Puntare l'applicazione alla nuova istanza e riprendere i carichi di lavoro.

Se sono presenti più database, ripetere il processo per ogni database.

Passaggi successivi