Backup automatico v2 per macchine virtuali di Azure (Resource Manager)

Si applica a: SQL Server nella macchina virtuale di Azure

Backup automatizzato v2 configura automaticamente Backup gestito in Microsoft Azure per tutti i database esistenti e nuovi in una macchina virtuale di Azure che esegue SQL Server 2016 o versioni successive Standard, Enterprise o Developer edition. In questo modo è possibile configurare i backup periodici del database che utilizzano l'archiviazione BLOB di Azure durevole. Backup automatico v2 dipende dall'estensione dell'agente di infrastruttura distribuita come servizio (IaaS) SQL Server.

Prerequisiti

Per usare il backup automatico v2, esaminare i seguenti prerequisiti:

Sistema operativo:

  • Windows Server 2012 R2 o versione successiva

Versione/edizione di SQL Server:

  • SQL Server 2016 o versione successiva: Developer, Standard o Enterprise

Configurazione del database:

  • I database utente di destinazione devono usare il modello di ripristino completo. I database di sistema non devono necessariamente usare il modello di recupero con registrazione completa. Se tuttavia è necessario effettuare il backup del log per Model o MSDB, deve essere usato il modello di recupero con registrazione completa. Per altre informazioni sull'impatto del modello di recupero con registrazione completa sui backup, vedere Backup con il modello di recupero con registrazione completa.
  • La macchina virtuale SQL Server è stata registrata con l'estensione SQL IaaS Agent in modalità di gestione completa.
  • Il backup automatizzato si basa sull'estensione dell'agente IaaS completa SQL Server. Di conseguenza, il backup automatizzato è supportato solo nei database di destinazione dall'istanza predefinita o in una singola istanza denominata. Se non esiste un'istanza predefinita e più istanze denominate, l'estensione SQL IaaS non funziona e il backup automatizzato non funzionerà.

Impostazioni

Nella seguente tabella sono descritte le opzioni che possono essere configurate per il backup automatico. I passaggi di configurazione effettivi variano a seconda che venga usato il portale di Azure o i comandi di Windows PowerShell di Azure. Si noti che il backup automatizzato usa la compressione di backup per impostazione predefinita e non è possibile disabilitarlo.

Basic Settings

Impostazione Intervallo (impostazione predefinita) Descrizione
Backup automatico Enable/Disable (disabilitato) Abilita o disabilita il backup automatico per una macchina virtuale di Azure in cui viene eseguito SQL Server 2016/2017 Developer, Standard o Enterprise.
Periodo di conservazione 1-90 giorni (90 giorni) Numero di giorni di conservazione dei backup.
Storage Account Account di archiviazione di Azure Account di archiviazione di Azure da usare per archiviare i file del backup automatico nell'archiviazione BLOB. In questa posizione viene creato un contenitore per archiviare tutti i file di backup. La convenzione di denominazione dei file di backup include la data, l'ora e il GUID database.
Crittografia Enable/Disable (disabilitato) Abilita o disabilita la crittografia. Quando è abilitata la crittografia, i certificati usati per ripristinare il backup sono contenuti nell'account di archiviazione specificato nello stesso contenitore automatic backup con la stessa convenzione di denominazione. Se la password viene modificata, viene generato un nuovo certificato con tale password, ma il certificato precedente viene mantenuto per ripristinare i backup precedenti.
Password Testo della password Password per le chiavi di crittografia. Questa password è necessaria solo se la crittografia è abilitata. Per ripristinare un backup crittografato, è necessario disporre della password corretta e del certificato correlato usato al momento dell'esecuzione del backup.

Impostazioni avanzate

Impostazione Intervallo (impostazione predefinita) Descrizione
Backup dei database di sistema Enable/Disable (disabilitato) Quando abilitata, questa funzionalità esegue inoltre il backup dei database di sistema: Master, MSDB e Model. Per i database MSDB e Model, verificare che siano in modalità di ripristino completo se si desidera eseguire il backup dei log. Non vengono mai eseguiti backup di log per Master, né backup di alcun tipo per TempDB.
Pianificazione backup Manual/Automated (Automated) (Manuale/Automatizzato - Automatizzato) Per impostazione predefinita, la pianificazione del backup è determinata automaticamente in base all'aumento delle dimensioni dei log. Una pianificazione manuale del backup consente all'utente di specificare l'intervallo di tempo per i backup. In questo caso, i backup viene eseguiti unicamente con la frequenza e nell'intervallo di tempo specificati per il giorno in questione.
Frequenza backup completo Giornaliera/settimanale Frequenza dei backup completi. In entrambi i casi, i backup completi iniziano nell'intervallo di tempo pianificato successivo. Quando si seleziona la frequenza settimanale, i backup potrebbero durare più giorni fino ad aver incluso tutti i database.
Ora di inizio backup completo 00:00 – 23:00 (01:00) Ora di inizio di un determinato giorno in cui possono avere luogo i backup completi.
Intervallo di tempo per il backup completo 1-23 ore (1 ora) Intervallo di tempo di un determinato giorno in cui possono avere luogo i backup completi.
Frequenza di backup del log 5-60 minuti (60 minuti) Frequenza dei backup dei log.

Informazioni sulla frequenza dei backup completi

È importante comprendere la differenza tra i backup completi giornalieri e settimanali. Esaminare i due scenari di esempio seguenti.

Scenario 1: Backup settimanali

Si dispone di una macchina virtuale di SQL Server che contiene una serie di database di grandi dimensioni.

Il lunedì si abilita Backup automatico v2 con le seguenti impostazioni:

  • Pianificazione backup: Manuale
  • Frequenza backup completo: Settimanale
  • Ora di inizio backup completo: 01:00
  • Intervallo di tempo per il backup completo: 1 ora

Ciò significa che l'intervallo di tempo disponibile successivo per il backup sarà martedì alle ore 01:00 per 1 ora. In quel momento, Backup automatico inizia a eseguire il backup dei database, uno alla volta. In questo scenario, date le dimensioni dei database, il tempo è sufficiente per eseguire il backup dei primi due. Passata l'ora, tuttavia, il backup non è stato eseguito per tutti i database.

In questo caso, Backup automatico inizierà a eseguire il backup dei database rimanenti il giorno dopo, ovvero mercoledì, sempre alle ore 01:00 per un'ora. Se anche dopo quell'intervallo di tempo non è stato eseguito il backup di tutti i database, Backup automatico riprova il giorno successivo, e così via fino a quando non viene stato eseguito il backup di tutti i database.

Il martedì successivo, Backup automatico comincia nuovamente il backup di tutti i database.

In questo scenario, Backup automatico opera unicamente nell'intervallo di tempo specificato e viene eseguito il backup di ogni database una volta alla settimana. Si noti anche come sia possibile distribuire i backup su più giorni nel caso in cui un unico giorno non sia sufficiente per completarli.

Scenario 2: Backup giornalieri

Si dispone di una macchina virtuale di SQL Server che contiene una serie di database di grandi dimensioni.

Il lunedì si abilita Backup automatico v2 con le seguenti impostazioni:

  • Pianificazione backup: Manuale
  • Frequenza backup completo: Giornaliera
  • Ora di inizio backup completo: 22:00
  • Intervallo di tempo per il backup completo: 6 ore

Ciò significa che l'intervallo di tempo disponibile successivo per il backup sarà lunedì alle ore 22:00 per 6 ore. In quel momento, Backup automatico inizia a eseguire il backup dei database, uno alla volta.

Il backup viene quindi eseguito nuovamente martedì alle 22:00 per 6 ore.

Importante

I backup vengono eseguiti in sequenza durante ogni intervallo. Per le istanze con un numero elevato di database, pianificare l'intervallo di backup con tempo sufficiente per gestire tutti i backup. Se i backup non possono essere completati entro l'intervallo specificato, alcuni backup potrebbero essere ignorati e il tempo tra i backup per un singolo database potrebbe essere superiore al tempo di intervallo di backup configurato, che potrebbe influire negativamente sull'obiettivo del punto di ripristino (RPO).

Configurare le nuove macchine virtuali

Usare il portale di Azure per configurare il backup automatizzato quando si crea un nuovo computer SQL Server 2016 o versione successiva nel modello di distribuzione Resource Manager.

Nella scheda Impostazioni SQL Server selezionare Abilita in Backup automatico. Quando si abilita il backup automatizzato, è possibile configurare le impostazioni seguenti:

  • Periodo di conservazione per i backup (fino a 90 giorni)
  • Account di archiviazione e contenitore di archiviazione da usare per i backup
  • Opzione di crittografia e password per i backup
  • Backup dei database di sistema
  • Pianificazione dei backup

Per crittografare il backup, selezionare Abilita. Specificare quindi la Password. Azure crea un certificato per crittografare i backup e usa la password specificata per proteggere il certificato.

Scegliere Seleziona contenitore di archiviazione per specificare il contenitore in cui archiviare i backup.

Per impostazione predefinita, la pianificazione viene impostata automaticamente, ma è possibile creare una pianificazione personalizzata selezionando Manuale, che consente di configurare la frequenza di backup, l'intervallo di tempo di backup e la frequenza di backup del log in minuti.

La schermata portale di Azure seguente mostra le impostazioni di backup automatizzate quando si crea una nuova macchina virtuale di SQL Server:

Configurazione automatica del backup nell'portale di Azure

Configurare le macchine virtuali esistenti

Per le macchine virtuali SQL Server esistenti, passare alla risorsa Macchine virtuali SQL e quindi selezionare Backup per configurare i backup automatici.

Selezionare Abilita per configurare le impostazioni di backup automatizzate.

È possibile configurare il periodo di conservazione (fino a 90 giorni), il contenitore per l'account di archiviazione in cui si desidera archiviare i backup, nonché la crittografia e la pianificazione del backup. Per impostazione predefinita, la pianificazione è automatizzata.

Backup automatizzato per le macchine virtuali esistenti

Se si vuole impostare una pianificazione di backup personalizzata, scegliere Manuale e configurare la frequenza di backup, indipendentemente dal fatto che i database di sistema vengano sottoposti a backup e l'intervallo di backup del log delle transazioni in pochi minuti.

Selezionare manuale per configurare la pianificazione del backup personalizzata

Al termine, fare clic sul pulsante Applica nella parte inferiore della pagina di impostazioni di Backup per salvare le modifiche.

Se si intende abilitare il backup automatico per la prima volta, Azure configura l'agente IaaS di SQL Server in background. Durante questo periodo, nel portale di Azure potrebbe non essere visualizzata l'informazione relativa alla configurazione del backup automatico. Attendere alcuni minuti per l'installazione e la configurazione dell'agente. A questo punto, nel portale di Azure verranno visualizzate le nuove impostazioni.

Configurare con PowerShell

È possibile usare PowerShell per configurare Backup automatico v2. Prima di iniziare, è necessario eseguire queste operazioni:

Nota

Questo articolo usa il modulo Azure Az PowerShell, che è il modulo PowerShell consigliato per interagire con Azure. Per iniziare a usare il modulo Az PowerShell, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Installare l'estensione di SQL Server IaaS

Se è stato eseguito il provisioning di una macchina virtuale di SQL Server dal portale di Azure, l'estensione di SQL Server IaaS dovrebbe già essere installata. È possibile verificare se l'estensione è già stata installata per la macchina virtuale eseguendo il comando Get-AzVM ed esaminando la proprietà Extensions.

$vmname = "vmname"
$resourcegroupname = "resourcegroupname"

(Get-AzVM -Name $vmname -ResourceGroupName $resourcegroupname).Extensions 

Se l'estensione SQL Server agente IaaS è installata, dovrebbe essere visualizzata come "SqlIaaSAgent" o "SQLIaaSExtension". ProvisioningState per l'estensione deve anche visualizzare "Successed".

Nel caso in cui l'estensione non sia installata o non ne sia stato eseguito il provisioning, è possibile installarla con il comando seguente. Oltre al nome della macchina virtuale e al gruppo di risorse, è necessario anche specificare l'area ( $region) in cui si trova la macchina virtuale.

$region = "EASTUS2"
Set-AzVMSqlServerExtension -VMName $vmname `
    -ResourceGroupName $resourcegroupname -Name "SQLIaasExtension" `
    -Version "2.0" -Location $region 

Verificare le impostazioni correnti

Se si è abilitato il backup automatico durante il provisioning, è possibile usare PowerShell per verificare la configurazione corrente. Eseguire il comando Get-AzVMSqlServerExtension ed esaminare la proprietà AutoBackupSettings:

(Get-AzVMSqlServerExtension -VMName $vmname -ResourceGroupName $resourcegroupname).AutoBackupSettings

L'output dovrebbe essere simile al seguente:

Enable                      : True
EnableEncryption            : False
RetentionPeriod             : 30
StorageUrl                  : https://test.blob.core.windows.net/
StorageAccessKey            :  
Password                    : 
BackupSystemDbs             : False
BackupScheduleType          : Manual
FullBackupFrequency         : WEEKLY
FullBackupStartTime         : 2
FullBackupWindowHours       : 2
LogBackupFrequency          : 60

Se l'output indica che Enable è impostato su False, è necessario abilitare il backup automatico. I passaggi per farlo sono identici a quelli per abilitare e configurare Backup automatico. Per altre informazioni, vedere la sezione seguente.

Nota

Se si verificano le impostazioni subito dopo una modifica, è possibile che vengano visualizzati i valori precedenti. Attendere alcuni minuti e verificare nuovamente le impostazioni per assicurarsi che siano state applicate le modifiche.

Configurare Backup automatico v2

È possibile usare PowerShell per abilitare Backup automatico e per modificarne configurazione e comportamento in qualsiasi momento.

In primo luogo, selezionare o creare un account di archiviazione per i file di backup. Lo script seguente consente di selezionare un account di archiviazione o di crearne uno.

$storage_accountname = "yourstorageaccount"
$storage_resourcegroupname = $resourcegroupname

$storage = Get-AzStorageAccount -ResourceGroupName $resourcegroupname `
    -Name $storage_accountname -ErrorAction SilentlyContinue
If (-Not $storage)
    { $storage = New-AzStorageAccount -ResourceGroupName $storage_resourcegroupname `
    -Name $storage_accountname -SkuName Standard_GRS -Location $region } 

Nota

Backup automatico non supporta l'archiviazione di backup nell'archiviazione Premium, ma può ottenere i backup da dischi di macchine virtuali che usano l'archiviazione Premium.

Eseguire quindi il comando New-AzVMSqlServerAutoBackupConfig per abilitare e configurare le impostazioni di Backup automatizzato v2 per archiviare i backup nell'account di archiviazione di Azure. In questo esempio, viene impostata su 10 giorni la conservazione dei backup. I backup del database di sistema sono abilitati. I backup completi sono pianificati come settimanali, con un intervallo di tempo di due ore a partire dalle 20:00. I backup del log vengono eseguiti ogni 30 minuti. Il secondo comando, Set-AzVMSqlServerExtension, aggiorna la macchina virtuale di Azure specificata con queste impostazioni.

$autobackupconfig = New-AzVMSqlServerAutoBackupConfig -Enable `
    -RetentionPeriodInDays 10 -StorageContext $storage.Context `
    -ResourceGroupName $storage_resourcegroupname -BackupSystemDbs `
    -BackupScheduleType Manual -FullBackupFrequency Weekly `
    -FullBackupStartHour 20 -FullBackupWindowInHours 2 `
    -LogBackupFrequencyInMinutes 30 

Set-AzVMSqlServerExtension -AutoBackupSettings $autobackupconfig `
    -VMName $vmname -ResourceGroupName $resourcegroupname 

Potrebbero essere necessari diversi minuti per installare e configurare l'agente IaaS di SQL Server.

Per abilitare la crittografia, modificare lo script precedente in modo da passare il parametro EnableEncryption e una password (stringa sicura) per il parametro CertificatePassword. Il seguente script abilita le impostazioni del backup automatico nell'esempio precedente e aggiunge la crittografia.

$password = "P@ssw0rd"
$encryptionpassword = $password | ConvertTo-SecureString -AsPlainText -Force  

$autobackupconfig = New-AzVMSqlServerAutoBackupConfig -Enable `
    -EnableEncryption -CertificatePassword $encryptionpassword `
    -RetentionPeriodInDays 10 -StorageContext $storage.Context `
    -ResourceGroupName $storage_resourcegroupname -BackupSystemDbs `
    -BackupScheduleType Manual -FullBackupFrequency Weekly `
    -FullBackupStartHour 20 -FullBackupWindowInHours 2 `
    -LogBackupFrequencyInMinutes 30 

Set-AzVMSqlServerExtension -AutoBackupSettings $autobackupconfig `
    -VMName $vmname -ResourceGroupName $resourcegroupname

Per confermare l'applicazione delle impostazioni, verificare la configurazione di Backup automatico.

Disabilitare Backup automatico

Per disabilitare Backup automatizzato, eseguire lo stesso script senza il parametro -Enable per il comando New-AzVMSqlServerAutoBackupConfig. L'assenza del parametro -Enable segnala il comando per disabilitare la funzionalità. Come per l'installazione, la disabilitazione del backup automatico può richiedere alcuni minuti.

$autobackupconfig = New-AzVMSqlServerAutoBackupConfig -ResourceGroupName $storage_resourcegroupname

Set-AzVMSqlServerExtension -AutoBackupSettings $autobackupconfig `
    -VMName $vmname -ResourceGroupName $resourcegroupname

Script di esempio

Lo script seguente fornisce un set di variabili da personalizzare per abilitare e configurare Backup automatico per la propria macchina virtuale. In questo caso, potrebbe essere necessario personalizzare lo script in base alle esigenze. Ad esempio, potrebbe essere necessario apportare modifiche se si desidera disabilitare il backup dei database di sistema o abilitare la crittografia.

$vmname = "yourvmname"
$resourcegroupname = "vmresourcegroupname"
$region = "Azure region name such as EASTUS2"
$storage_accountname = "storageaccountname"
$storage_resourcegroupname = $resourcegroupname
$retentionperiod = 10
$backupscheduletype = "Manual"
$fullbackupfrequency = "Weekly"
$fullbackupstarthour = "20"
$fullbackupwindow = "2"
$logbackupfrequency = "30"

# ResourceGroupName is the resource group which is hosting the VM where you are deploying the SQL Server IaaS Extension 

Set-AzVMSqlServerExtension -VMName $vmname `
    -ResourceGroupName $resourcegroupname -Name "SQLIaasExtension" `
    -Version "2.0" -Location $region

# Creates/use a storage account to store the backups

$storage = Get-AzStorageAccount -ResourceGroupName $resourcegroupname `
    -Name $storage_accountname -ErrorAction SilentlyContinue
If (-Not $storage)
    { $storage = New-AzStorageAccount -ResourceGroupName $storage_resourcegroupname `
    -Name $storage_accountname -SkuName Standard_GRS -Location $region }

# Configure Automated Backup settings

$autobackupconfig = New-AzVMSqlServerAutoBackupConfig -Enable `
    -RetentionPeriodInDays $retentionperiod -StorageContext $storage.Context `
    -ResourceGroupName $storage_resourcegroupname -BackupSystemDbs `
    -BackupScheduleType $backupscheduletype -FullBackupFrequency $fullbackupfrequency `
    -FullBackupStartHour $fullbackupstarthour -FullBackupWindowInHours $fullbackupwindow `
    -LogBackupFrequencyInMinutes $logbackupfrequency

# Apply the Automated Backup settings to the VM

Set-AzVMSqlServerExtension -AutoBackupSettings $autobackupconfig `
    -VMName $vmname -ResourceGroupName $resourcegroupname

Monitoraggio

Per monitorare Backup automatico in SQL Server 2016/2017 esistono due opzioni principali. Poiché Backup automatico usa la funzionalità di Backup gestito di SQL Server, le stesse tecniche di monitoraggio sono valide per entrambi.

In primo luogo, è possibile eseguire il polling dello stato chiamando msdb.managed_backup.sp_get_backup_diagnostics. Oppure eseguire una query della funzione con valori di tabella msdb.managed_backup.fn_get_health_status.

È inoltre possibile sfruttare la funzionalità incorporata di posta elettronica database per le notifiche.

  1. Chiamare la stored procedure msdb.managed_backup.sp_set_parameter per assegnare un indirizzo di posta elettronica al parametro SSMBackup2WANotificationEmailIds.
  2. Abilitare SendGrid per inviare i messaggi di posta elettronica dalla macchina virtuale di Azure.
  3. Usare il nome utente e il server SMTP per configurare la posta elettronica database. È possibile configurare la posta elettronica database in SQL Server Management Studio o con i comandi Transact-SQL. Per altre informazioni, vedere Posta elettronica database.
  4. Configurare SQL Server Agent per usare la posta elettronica database.
  5. Verificare che la porta SMTP sia consentita sia attraverso il firewall della macchina virtuale locale sia nel gruppo di sicurezza di rete per la macchina virtuale.

Passaggi successivi

Backup automatico v2 configura backup gestito in Macchine virtuali di Azure. Pertanto è importante esaminare la documentazione per il backup gestito per comprendere il comportamento e le implicazioni.

È possibile trovare altre informazioni sul backup e sul ripristino per SQL Server in macchine virtuali di Azure nell'articolo seguente: Backup e ripristino per SQL Server in macchine virtuali di Azure.

Per informazioni sulle altre attività di automazione disponibili, vedere Estensione Agente IaaS di SQL Server.

Per altre informazioni sull'esecuzione di SQL Server nelle macchine virtuali di Azure, vedere Panoramica di SQL Server nelle macchine virtuali di Azure.