Condividi tramite


Backup differenziali (SQL Server)

Questo argomento di backup e ripristino è pertinente per tutti i database di SQL Server.

Un backup differenziale si basa sul backup completo più recente e precedente. Un backup differenziale acquisisce solo i dati modificati dopo il backup completo. Il backup completo su cui si basa un backup differenziale è noto come base del differenziale. I backup completi, ad eccezione dei backup di sola copia, possono fungere da base per una serie di backup differenziali, inclusi backup del database, backup parziali e backup di file. Il backup di base per un backup differenziale di file può essere contenuto all'interno di un backup completo, di un backup di file o di un backup parziale.

Vantaggi

  • La creazione di backup differenziali può essere molto veloce rispetto alla creazione di un backup completo. Un backup differenziale registra solo i dati che sono cambiati dall'ultimo backup completo su cui si basa il backup differenziale. Ciò facilita l'esecuzione di backup frequenti dei dati, riducendo così il rischio di perdita di dati. Tuttavia, prima di ripristinare un backup differenziale, è necessario ripristinarne la base. Pertanto, il ripristino da un backup differenziale richiederà necessariamente più passaggi e tempo rispetto al ripristino da un backup completo perché sono necessari due file di backup.

  • I backup differenziali del database sono particolarmente utili se un subset di un database viene modificato più frequentemente rispetto al resto del database. In questi casi, i backup differenziali del database consentono di eseguire spesso il backup senza il sovraccarico dei backup completi del database.

  • Nel modello di recupero completo, l'uso di backup differenziali può ridurre il numero di backup del log da ripristinare.

Panoramica dei backup differenziali

Un backup differenziale acquisisce lo stato di qualsiasi extent (raccolte di otto pagine fisicamente contigue) che sono cambiate tra quando è stata creata la base differenziale e quando viene creato il backup differenziale. Ciò significa che le dimensioni di un determinato backup differenziale dipendono dalla quantità di dati modificati dopo la base. In generale, più è vecchia una base, più grande sarà un nuovo backup differenziale. In una serie di backup differenziali, è probabile che un extent frequentemente aggiornato contenga dati diversi in ogni backup differenziale.

La figura seguente illustra il funzionamento di un backup differenziale. La figura mostra 24 estensioni di dati, 6 di cui sono state modificate. Il backup differenziale contiene solo queste 6 estensioni di dati. L'operazione di backup differenziale si basa su una pagina bitmap che contiene un bit per ciascun extent. Per ogni extent aggiornato dalla base, il bit viene impostato su 1 nella bitmap.

La bitmap differenziale identifica gli extent modificati

Annotazioni

La bitmap differenziale non viene aggiornata da un backup di sola copia. Pertanto, un backup di sola copia non influisce sui backup differenziali successivi.

Un backup differenziale eseguito subito dopo la sua base completa è generalmente significativamente più piccolo rispetto alla base differenziale. Questo consente di risparmiare spazio di archiviazione e tempo di backup. Tuttavia, man mano che un database cambia nel tempo, la differenza tra il database e una base differenziale specifica aumenta. Maggiore è il tempo tra un backup differenziale e la relativa base, più grande sarà il backup differenziale. Ciò significa che i backup differenziali possono quindi avvicinarsi alla base differenziale in base alle dimensioni. Un backup differenziale di grandi dimensioni perde i vantaggi di un backup più veloce e più piccolo.

Con l'aumento delle dimensioni dei backup differenziali, il ripristino di un backup differenziale può aumentare significativamente il tempo necessario per ripristinare un database. È pertanto consigliabile eseguire un nuovo backup completo a intervalli impostati per stabilire una nuova base differenziale per i dati. È ad esempio possibile eseguire un backup completo settimanale dell'intero database, ovvero un backup completo del database, seguito da una serie regolare di backup differenziali del database nell'arco della settimana.

In fase di ripristino, prima di ripristinare un backup differenziale, è necessario ripristinarne la base. Ripristinare quindi solo il backup differenziale più recente per inoltrare il database all'ora in cui è stato creato il backup differenziale. In genere, si ripristina il backup completo più recente seguito dal backup differenziale più recente basato su tale backup completo.

Backup differenziali dei database con tabelle Memory-Optimized

Per informazioni sui backup differenziali e sui database con tabelle ottimizzate per la memoria, vedere Backup di un database con tabelle Memory-Optimized.

Backup differenziali dei database di Read-Only

Per i database di sola lettura, i backup completi usati da soli sono più facili da gestire rispetto a quando vengono usati con backup differenziali. Quando un database è di sola lettura, il backup e altre operazioni non possono modificare i metadati contenuti nel file. Di conseguenza, i metadati richiesti da un backup differenziale, ad esempio il numero di sequenza del log in corrispondenza del quale inizia il backup differenziale (LSN di base differenziale) viene archiviato nel database master . Se la base differenziale viene eseguita quando il database è di sola lettura, la bitmap differenziale indica più modifiche rispetto a quelle effettivamente apportate dopo il backup di base. I dati aggiuntivi vengono letti dal backup, ma non vengono scritti nel backup, perché la differential_base_lsn archiviata nella tabella di sistema del backupset viene usata per determinare se i dati sono stati effettivamente modificati dopo la base.

Quando un database di sola lettura viene ricompilato, ripristinato o scollegato e collegato, le informazioni di base differenziale andranno perse. Ciò si verifica perché il database master non è sincronizzato con il database utente. Il motore di database di SQL Server non è in grado di rilevare o prevenire questo problema. Eventuali backup differenziali successivi non sono basati sul backup completo più recente e potrebbero fornire risultati imprevisti. Per stabilire una nuova base differenziale, è consigliabile creare un backup completo del database.

Procedure consigliate per l'uso di backup differenziali con un database Read-Only

Dopo aver creato un backup completo del database di un database di sola lettura, se si intende creare un backup differenziale successivo, eseguire il backup del database master .

Se il database master viene perso, ripristinarlo prima di ripristinare un backup differenziale di un database utente.

Se si scollega e si collega un database di sola lettura per il quale si prevede di usare backup differenziali in un secondo momento, non appena è pratico, eseguire un backup completo del database sia del database di sola lettura che del database master .

Attività correlate

Vedere anche

Panoramica del backup (SQL Server)
Backup completo del database (SQL Server)
Ripristini di database completi (modello di recupero completo)
Ripristini di database completi (modello di recupero semplice)
Backup del log delle transazioni (SQL Server)