Differenza tra backup completo e backup completo solo copia


17

Ho visto nel thread di SQL Server Central Un backup completo tronca il registro? quel backup completo non tronca il registro:

No. Nessun backup completo o differenziale tronca il registro delle transazioni. - Lynn Pettis
No: un backup completo non tronca il registro. - Chad Crawford

Qual è la differenza tra backup completo e backup completo solo copia?

Per il backup del registro esiste un backup di sola copia che impedisce l'interruzione della catena di registro senza troncare il registro. Quindi cos'è il backup completo solo copia?

Risposte:


14

Per lo meno è necessario considerare i backup differenziali. A meno che non venga utilizzata solo la copia completa, il backup di diff successivo sarà disattivato. Backup di sola copia :

Backup completi di sola copia (tutti i modelli di ripristino) Un backup di sola copia non può fungere da base differenziale o backup differenziale e non influisce sulla base differenziale.

L'unica differenza tra copia completa e copia completa è che la copia completa non interrompe la catena differenziale. Nessuno dei due interrompe la catena di registro in quanto nessuno di essi tronca il file di registro.


24

La differenza chiave tra backup completi e di sola copia è indipendentemente dal fatto che sia LSN (Log Sequence Number) e in particolare l' DatabaseBackupLSNaggiornamento.

Quando si esegue un backup completo, DatabaseBackupLSNviene aggiornato. Dopo aver eseguito il backup completo, se si esegue un backup differenziale quel backup ha un valore DatabaseBackupLSNcorrispondente a quello del backup completo e quindi SQL può collegare i due insieme (ad esempio, sa da quei LSN che il diff ha seguito il pieno).

Il problema si presenta quando si eseguono backup pianificati, quindi si dispone di un backup completo iniziale e quindi di una sequenza di differenziali. Se si esegue manualmente un backup completo, verrà aggiornato l'LSN, quindi da quel momento in poi ogni backup differenziale eseguito tramite backup pianificato farà riferimento a un nuovo LSN non a quello originale. In caso di necessità di ripristino, è possibile ripristinare il backup completo pianificato, ma quando si tenta di ripristinare uno qualsiasi dei backup differenziali eseguiti dopo il processo manuale, si riscontrerebbe un errore poiché gli LSN non corrispondono più.

Con un backup di sola copia non tocca DatabaseBackupLSN, e come tale non interrompe quella catena di backup.

C'è una buona descrizione del problema, oltre al motivo per cui così tante persone lo fraintendono in Breaking the Backup Chain - REDUX (Or Eating Crow) di Michael K. Campbell, che include buone guide visive come questa:

Immagine SQLmag - Backup completo v Backup Copy_Only

Per una buona spiegazione dei quattro diversi LSN e di come vengono utilizzati, vedere Informazioni sui numeri di sequenza dei log di SQL Server per i backup di Simon Liew.

Il modo per evitare il problema è di non avere più di una cosa che fa backup standard di un database. Qualsiasi backup ad hoc o secondario deve essere eseguito con l'opzione di sola copia, vedere Backup di sola copia (SQL Server) per tutti i dettagli, ma essenzialmente si utilizza l'opzione "Copia solo di backup" in SSMS, tramite T-SQL specificare WITH COPY_ONLYnel comando o con PowerShell utilizzare il -CopyOnlyparametro


1
Per aggiungere: praticamente COPIA SOLO consente di eseguire un backup per scopi non di backup. Per un cliente, i backup vengono eseguiti automaticamente su un sistema di backup aziendale: ottenere un ripristino è PAINFULL, in particolare portarne uno in un ambiente diverso (scartoffie, operazioni giornaliere). SOLO COPIA mi consente di effettuare una copia SENZA interferire con il backup gestito dal backup aziendale e quindi ripristinarlo in un ambiente di test.
TomTom,

12

Supponiamo di avere un database con backup pianificati. Il backup completo viene eseguito una volta ogni 24 ore alle 00:00, inoltre sono disponibili backup differenziali ogni 6 ore e backup del registro delle transazioni ogni ora. Quindi, se avessimo bisogno di fare un backup completo extra a metà giornata, per ripristinare un altro server? Cosa dobbiamo fare in questo caso. Certo, possiamo fare un backup completo.

BACKUP DATABASE Test TO DISK = 'C:/Test.bak'

Ma quando si esegue un backup di un database, ci sono alcune modifiche che influenzano il modo in cui verranno ripristinati i seguenti backup (i backup differenziali e i backup del registro delle transazioni influenzano entrambi come sarà l'operazione di ripristino). In questo caso, tutti i seguenti backup differenziali dipenderanno dall'ultimo backup completo. Se si perde l'ultimo backup completo, il ripristino del database è impossibile.inserisci qui la descrizione dell'immagine

Ma come possiamo fare un backup che non influenzerà i seguenti processi di backup o ripristino per quel database. È qui che avvengono i backup di sola copia.

BACKUP DATABASE Test TO DISK = 'C:\Test.bak' WITH COPY_ONLY

inserisci qui la descrizione dell'immagine


2

Quando si dispone di un backup completo e di una serie di backup dei file di registro, viene mantenuta una catena di registro mediante LSN (Log Sequence Number). Se si desidera eseguire un backup senza interrompere la catena di registro, eseguire un backup di sola copia.

Se non si esegue un backup di sola copia, la catena di registro viene interrotta e il backup eseguito sarà l'ultimo backup completo. Ciò significa che i backup del registro precedenti non possono essere applicati ai backup completi appena acquisiti. La catena di registro viene gestita principalmente per ripristini temporizzati o scenari di spedizione dei registri.

Ad esempio: supponiamo di avere uno scenario di backup che esegue backup completi ogni 6 ore (mezzanotte, 6:00, mezzogiorno, 18:00) e registra i backup ogni 15 minuti. Una richiesta arriva alle 9 del mattino per avere una copia del tuo DB posizionata su un server di prova. Si desidera eseguire il backup senza interrompere la catena di registro o interrompere i processi di backup. Questo è quando viene eseguito un backup di sola copia. Il backup solo copia non interromperà i set di backup regolari.


1
Non credo che la catena di registro degli effetti di backup di sola copia. Un backup completo di sola copia non ripristini la base differenziale. Questa è l'unica differenza. Vedi questi link sqlservercentral.com/Forums/Topic1471058-391-1.aspx?Update=1 e sqlinthewild.co.za/index.php/2011/03/08/…
Ricercatore IT

1
Non ho accettato la tua risposta. Sia il backup completo che il solo backup completo non interrompono la catena di log. Oltre alla "non reimpostazione della base differenziale", solo il backup completo di una copia è esattamente uguale a un backup completo normale in ogni modo. Vedi il link al forum che ho menzionato nel mio commento precedente.
Ricercatore IT

Supponiamo che tu abbia un backup completo: FB1 e 3 backup del log: LB1, LB2, LB3. Ora esegui un backup completo manuale: FB2 (senza copy_only). Attendere altri 3 backup del registro: LB4, LB5, LB6. Ora elimina FB2. È possibile ripristinare FB1 + LB1 + LB2 + LB3 + LB4 + LB5 + LB6?
Stanley John

Sì, posso ripristinare. ho eseguito il backup completo (non solo copia) FB1, quindi il backup del log (LB1), quindi il backup completo (non solo la copia) FB2, quindi nuovamente il backup del log (LB2). poi ho ripristinato in questa sequenza FB1 + LB1 + LB2. Ripristinato correttamente e trovato tutte le righe inserite correttamente.
Ricercatore IT

2
-1 perché l'opzione di sola copia con un backup completo non ha nulla a che fare con le catene LSN. Itresearcher lo ha sottolineato ma non hai aggiornato / eliminato la tua risposta.
Edward Dortland,

0

Un backup completo e solo copia non interrompono la catena di log. solo se si esegue un backup di tlog si verificherà una mancata corrispondenza LSN.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.