Backup delle transazioni di SQL Server e registri


12

Ho ereditato un database SQL Server 2008 critico per le aziende di dimensioni moderate e sto cercando di avvolgere la mia testa nella pianificazione del backup. (Sono uno sviluppatore, non un DBA.)

Il modo in cui il nostro sistema è configurato in questo momento ci sono due sistemi di backup:

  1. Backup settimanali completi ( .bak) e backup delle transazioni orarie ( .trn). Conserviamo diversi set di questi backup e vengono regolarmente spediti fuori sede.
  2. Log di SQL Server ( .ldf), con il modello di recupero impostato su Full. Questo file si trova su un'unità separata dal .mdffile principale , ma per il resto non viene eseguito il backup.

In caso di ripristino di emergenza (o durante il ripristino di backup su una macchina di sviluppo), la mia procedura è quella di utilizzare i .bakfile e quindi applicare i file .trn. Abbiamo uno script che rende questa procedura relativamente semplice.

Le mie domande:

  1. È possibile ripristinare il database dal .ldffile? A cosa serve?
  2. È inutilmente ridondante avere entrambi questi registri delle transazioni?
  3. È importante eseguire il backup del .ldffile?

Risposte:


16

No, non è possibile ripristinare un database da un file ldf. Il file ldf verrebbe ripristinato insieme ai file mdf.

No, non è ridondante in quanto hanno due scopi diversi.

È importante eseguire backup completi e backup del registro delle transazioni. Solo avere una copia del file ldf non ti aiuta a ripristinare il database.

Per quanto riguarda a cosa serve un file ldf, ldf è il registro delle transazioni. Pensalo come un buffer circolare che registra le modifiche al tuo database. Quando aggiorni una riga, la modifica viene immediatamente scritta in ldf. Ad un certo punto in futuro (di solito meno di cinque minuti), i dati modificati vengono scritti nel file mdf.

Se il server si è arrestato in modo anomalo o si è verificata un'interruzione dell'alimentazione, all'avvio di SQL, legge ldf e riapplica (REDO) tali modifiche.

Inoltre, se si dispone di una transazione che non è stata eseguita il commit e il server si arresta in modo anomalo, tutte le modifiche apportate da tale transazione devono essere annullate per rendere coerente il database. Anche il file ldf ha questo compito. (DISFARE)

Ho menzionato sopra che il file ldf è circolare. L'esecuzione di un backup del registro delle transazioni (.trn) copia una parte del file ldf. Dopo che un file trn è stato creato in modo sicuro, sql può riutilizzare quella parte del file ldf. La serie di backup trn crea una catena che registra insieme ogni modifica apportata al database. Naturalmente, se non si è mai eseguito un backup del log di tranaction, il file ldf sarebbe cresciuto e cresciuto.

In uno scenario di emergenza, il ripristino del backup completo consente di ottenere una copia del database al momento del completamento del backup completo. È quindi possibile ripristinare i file trn in ordine e portare il database corrente in qualsiasi momento nel tempo, incluso l'ultimo backup trn.

Sto analizzando alcuni dettagli importanti, ma l'essenza è che ldf è un file di lavoro che registra le recenti modifiche al database. I file trn sono copie di parti del file ldf fatte supponendo che si manterrà al sicuro in modo che sql possa riutilizzare lo spazio nel file ldf e se si verifica un disastro, le avrai in una posizione alternativa.


2
+1 Risposta molto bella. L'unica cosa che aggiungerei è che quando un DBA dice "Database" intendono i file .mdf (il file di dati) e .ldf (il file di registro) combinati. I due file insieme formano una singola unità. Su alcuni database potresti anche vedere più .mdf e / o .ndfs (file di dati secondari). Questi file sono anche combinati insieme per creare la singola unità chiamata database. Se ne perdi qualcuno, ti trovi in ​​modalità Disastro e devi intraprendere azioni correttive.
Kenneth Fisher,

+1 buona risposta, inoltre non confondere il backup del 'file fisico' (l'attuale .mdf / .ndf / .ldfs) mentre si vive su un sistema, anche con un'app di terze parti come Norton mentre MS SQL Server è in esecuzione come un "backup" sicuro. Tali file sono estremamente sensibili, pertanto i file di backup MS SQL Server effettivi devono sempre essere creati quando possibile.
Ali Razeghi,

Grazie, è molto utile Sembra che i nostri regolari piani di backup di SQL Server siano sufficienti e non sia necessario manomettere direttamente i file .mdf o .ldf.
Hank,
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.