Condividi tramite


Informazioni sul backup di SQL Server in macchine virtuali di Azure

Backup di Azure offre una soluzione basata sul flusso specializzata per eseguire il backup di SQL Server in esecuzione nelle macchine virtuali di Azure. Questa soluzione si allinea ai vantaggi di Backup di Azure del backup senza infrastruttura, della conservazione a lungo termine e della gestione centrale. Offre inoltre i vantaggi seguenti, in particolare per SQL Server:

  • Backup del carico di lavoro che supportano tutti i tipi di backup: completo, differenziale e del log
  • RPO (obiettivo del punto di ripristino) di 15 minuti con backup del log frequenti
  • Ripristino temporizzato fino a un secondo
  • Backup e ripristino a livello di singolo database

Per visualizzare gli scenari di backup e ripristino attualmente supportati, vedere la matrice di supporto.

Processo di backup

Questa soluzione sfrutta le API native SQL per eseguire i backup dei database SQL.

  • Dopo aver specificato la macchina virtuale di SQL Server da proteggere e aver eseguito la query per trovare i database al suo interno, il servizio Backup di Azure installerà un'estensione di backup di carichi di lavoro nella macchina virtuale denominata AzureBackupWindowsWorkload.

  • Questa estensione è costituita da un coordinatore e da un plug-in SQL. Mentre il coordinatore è responsabile di attivare i flussi di lavoro per varie operazioni, come la configurazione del backup, il backup e il ripristino, il plug-in gestisce il flusso di dati effettivo.

  • Per individuare i database in questa VM, Backup di Azure crea l'account NT SERVICE\AzureWLBackupPluginSvc. Questo account viene usato per il backup e il ripristino e richiede le autorizzazioni sysadmin SQL. L'account NT SERVICE\AzureWLBackupPluginSvc è un Account del servizio virtuale e quindi non richiede la gestione di alcuna password. Backups di Azure usa l'account NT AUTHORITY\SYSTEM per l’individuazione o l’interrogazione del database, di conseguenza è necessario che sia un account di accesso pubblico in SQL. Se la VM SQL Server non è stata creata da Azure Marketplace, è possibile ricevere un errore UserErrorSQLNoSysadminMembership. In tal caso seguire queste istruzioni.

  • Dopo l'attivazione della configurazione della protezione nei database selezionati, il servizio di backup configura il coordinatore con le pianificazioni di backup e altri dettagli sui criteri, che l'estensione memorizza nella cache locale della VM.

  • Nell'orario pianificato il coordinatore comunica con il plug-in, che avvia lo streaming dei dati di backup dal server SQL tramite VDI.

  • Il plug-in invia i dati direttamente all'insieme di credenziali di Servizi di ripristino, eliminando così la necessità di una posizione per la gestione temporanea. I dati vengono crittografati e archiviati dal servizio Backup di Azure negli account di archiviazione.

  • Al termine del trasferimento dei dati, il coordinatore conferma il commit con il servizio di backup.

    Architettura del backup SQL

Prima di iniziare

Prima di iniziare, verificare i requisiti seguenti:

  1. Assicurarsi che sia in esecuzione un'istanza di SQL Server in Azure. È possibile creare rapidamente un'istanza di SQL Server nel Marketplace.
  2. Rivedere le considerazioni sulla funzionalità e il supporto degli scenari.
  3. Esaminare le domande comuni su questo scenario.

Impostare le autorizzazioni della VM

Quando si esegue l'individuazione in SQL Server, Backup di Azure esegue le operazioni seguenti:

  • Aggiunge l'estensione AzureBackupWindowsWorkload.
  • Crea un account NT SERVICE\AzureWLBackupPluginSvc per individuare i database nella macchina virtuale. Questo account viene usato per il backup e il ripristino e richiede le autorizzazioni di amministratore di sistema SQL.
  • Individua i database in esecuzione in una macchina virtuale. Backup di Azure usa l'account NT AUTHORITY\SYSTEM. Questo account deve essere un account di accesso pubblico in SQL.

Se non si è creata la VM di SQL Server in Azure Marketplace o se si usa SQL 2008 o 2008 R2, potrebbe venire generato un errore UserErrorSQLNoSysadminMembership.

Per concedere le autorizzazioni in caso di SQL 2008 e 2008 R2 in esecuzione in Windows 2008 R2, vedere qui.

Per tutte le altre versioni, correggere le autorizzazioni con i passaggi seguenti:

  1. Usare un account con le autorizzazioni sysadmin SQL Server per accedere a SQL Server Management Studio (SSMS). A meno che non siano necessarie autorizzazioni speciali, l'autenticazione di Windows dovrebbe funzionare.

  2. In SQL Server aprire la cartella Sicurezza/Account di accesso.

    Aprire la cartella Sicurezza/Account di accesso per vedere gli account

  3. Fare clic con il pulsante destro del mouse sulla cartella Account di accesso e scegliere Nuovo account di accesso. In Account di accesso - Nuovo, selezionare Cerca.

    Nella finestra di dialogo Account di accesso - Nuovo selezionare Cerca

  4. L'account di servizio virtuale di Windows NT SERVICE\AzureWLBackupPluginSvc è stato creato durante la fase di registrazione della macchina virtuale e di individuazione SQL. Immettere il nome dell'account come mostrato nella casella Immettere il nome dell'oggetto da selezionare. Selezionare Controlla nomi per risolvere il nome. Seleziona OK.

    Selezionare Controlla nomi per risolvere il nome del servizio sconosciuto

  5. In Ruoli server assicurarsi che sia selezionato il ruolo sysadmin. Seleziona OK. Le autorizzazioni necessarie a questo punto devono essere presenti.

    Verificare che sia selezionato il ruolo del server sysadmin

  6. Associare ora il database all'insieme di credenziali di Servizi di ripristino. Nell'elenco dei server protetti del portale di Azure, fare clic con il pulsante destro del mouse sul server in stato di errore e scegliere >Individua di nuovo i database.

    Verificare che il server abbia le autorizzazioni appropriate

  7. Verificare l'avanzamento nell'area Notifiche. Quando i database selezionati sono stati individuati, viene visualizzato un messaggio di conferma.

    Messaggio di distribuzione riuscita

Nota

Se sono installate più istanze di SQL Server, è necessario aggiungere l'autorizzazione sysadmin per l'account NT Service\AzureWLBackupPluginSvc a tutte le istanze di SQL.

Concedere le autorizzazioni di amministratore di sistema SQL per SQL 2008 e SQL 2008 R2

Aggiungere gli account di accesso NT AUTHORITY\SYSTEM e NT Service\AzureWLBackupPluginSvc all'istanza di SQL Server:

  1. Passare all'istanza di SQL Server in Esplora oggetti.

  2. Passare a Sicurezza - > Account di accesso

  3. Fare clic con il pulsante destro del mouse e selezionare Nuovo account accesso...

    Nuovo account di accesso con SSMS

  4. Passare alla scheda Generale e immettere NT AUTHORITY\SYSTEM come ID di accesso.

    ID di accesso per SSMS

  5. Passare a Ruoli del server e scegliere i ruoli public e sysadmin.

    Scelta dei ruoli in SSMS

  6. Passare a Stato. Selezionare Concedi per Autorizzazione per la connessione al motore di database e selezionare Abilitato per Account di accesso.

    Concedere le autorizzazioni in SSMS

  7. Seleziona OK.

  8. Ripetere la stessa procedura (passaggi da 1 a 7 precedenti) per aggiungere l'account di accesso NT Service\AzureWLBackupPluginSvc all'istanza di SQL Server. Se l'account di accesso esiste già, assicurarsi che abbia il ruolo del server sysadmin e che in Stato siano selezionate l'opzione Concedi per Autorizzazione per la connessione al motore di database e l'opzione Abilitato per Account di accesso.

  9. Dopo aver concesso l'autorizzazione, riscoprire i database nel portale: Insieme di credenziali - > Gestione -> Infrastruttura di backup -> Carico di lavoro nella macchina virtuale di Azure:

    Opzione Individua di nuovo i database nel portale di Azure

In alternativa, è possibile automatizzare la concessione delle autorizzazioni eseguendo i comandi di PowerShell seguenti in modalità di amministrazione. Per impostazione predefinita, il nome dell'istanza è impostato su MSSQLSERVER. Modificare l'argomento relativo al nome dell'istanza nello script, se necessario.

param(
    [Parameter(Mandatory=$false)]
    [string] $InstanceName = "MSSQLSERVER"
)
if ($InstanceName -eq "MSSQLSERVER")
{
    $fullInstance = $env:COMPUTERNAME   # In case it is the default SQL Server Instance
}
else
{
    $fullInstance = $env:COMPUTERNAME + "\" + $InstanceName   # In case of named instance
}
try
{
    sqlcmd.exe -S $fullInstance -Q "sp_addsrvrolemember 'NT Service\AzureWLBackupPluginSvc', 'sysadmin'" # Adds login with sysadmin permission if already not available
}
catch
{
    Write-Host "An error occurred:"
    Write-Host $_.Exception|format-list -force
}
try
{
    sqlcmd.exe -S $fullInstance -Q "sp_addsrvrolemember 'NT AUTHORITY\SYSTEM', 'sysadmin'" # Adds login with sysadmin permission if already not available
}
catch
{
    Write-Host "An error occurred:"
    Write-Host $_.Exception|format-list -force
}

Configurare backup simultanei

È ora possibile configurare i backup per salvare contemporaneamente i punti di ripristino e i log di SQL Server in un insieme di credenziali di Servizi di ripristino e archiviazione locale.

Per configurare i backup simultanei, seguire la procedura seguente:

  1. Passare al percorso C:\Program Files\Azure Workload Backup\bin\plugins e quindi creare il file PluginConfigSettings.json, se non è presente.

  2. Aggiungere le entità di valore chiave separate da virgole, con chiavi EnableLocalDiskBackupForBackupTypes e LocalDiskBackupFolderPath al file JSON.

    • In EnableLocalDiskBackupForBackupTypes, elencare i tipi di backup da archiviare in locale.

      Ad esempio, se si vuole archiviare i backup Completo e Log, menzionare ["Full", "Log"]. Per archiviare solo i backup del log, menzionare ["Log"].

    • In LocalDiskBackupFolderPath, menzionare il percorso della cartella locale. Quando si menzione il percorso nel file JSON, assicurarsi di usare la doppia barra.

      Ad esempio, se il percorso preferito per il backup locale è E:\LocalBackup, menzionare il percorso in JSON come E:\\LocalBackup.

      Il file JSON finale dovrebbe essere visualizzato come segue:

      {
         "EnableLocalDiskBackupForBackupTypes": ["Log"],
         "LocalDiskBackupFolderPath": "E:\\LocalBackup",
      }
      

      Se nel file JSON sono presenti altre voci precompilate, aggiungere le due voci precedenti nella parte inferiore del file JSON subito prima della parentesi graffa di chiusura.

  3. Per rendere effettive immediatamente le modifiche, anziché nel tempo previsto di un'ora, passare a TaskManager>Servizi, fare clic con il pulsante destro del mouse su AzureWLbackupPluginSvc e selezionare Arresta.

    Attenzione

    Questa azione annulla tutti i processi di backup in corso.

    La convenzione di denominazione del file di backup archiviato e la struttura della cartella per tale file sarà {LocalDiskBackupFolderPath}\{SQLInstanceName}\{DatabaseName}.

    Ad esempio, se si dispone di un database Contoso nell'istanza SQL MSSQLSERVER, i file si troveranno in E:\LocalBackup\MSSQLSERVER\Contoso.

    Il nome del file è il VDI device set guid che viene usato per l'operazione di backup.

  4. Controllare se il percorso di destinazione in LocalDiskBackupFolderPath dispone di autorizzazioni di lettura e scrittura per NT Service\AzureWLBackupPluginSvc.

    Nota

    Per una cartella nei dischi della macchina virtuale locale, fare clic con il pulsante destro del mouse sulla cartella e configurare le autorizzazioni necessarie per NT Service\AzureWLBackupPluginSvc nella scheda Sicurezza.

    Se si usa una rete o condivisione SMB, configurare le autorizzazioni eseguendo i cmdlet di PowerShell seguenti da una console utente che dispone già dell'autorizzazione per accedere alla condivisione:

    $cred = Get-Credential
    New-SmbGlobalMapping -RemotePath <FileSharePath> -Credential $cred -LocalPath <LocalDrive>:  -FullAccess @("<Comma Separated list of accounts>") -Persistent $true
    

    Esempio:

    $cred = Get-Credential
    New-SmbGlobalMapping -RemotePath \\i00601p1imsa01.file.core.windows.net\rsvshare -Credential $cred -LocalPath Y:  -FullAccess @("NT AUTHORITY\SYSTEM","NT Service\AzureWLBackupPluginSvc") -Persistent $true
    

Passaggi successivi

  • Informazioni sul backup dei database di SQL Server.
  • Informazioni sul ripristino dei database SQL Server di cui è stato eseguito il backup.
  • Informazioni sulla gestione dei database SQL Server di cui è stato eseguito il backup.