Come posso ridurre il file di registro delle transazioni fisico quando è l'entità in un mirror?


8

Abbiamo impostato il mirroring del database durante il fine settimana e abbiamo dimenticato di riattivare il processo che esegue il backup dei registri delle transazioni. Quando sono arrivato questa mattina, il registro delle transazioni era aumentato a 58 GB e occupava gran parte dello spazio su disco.

Ho eseguito un backup manuale del registro delle transazioni su disco per riavviare il database, tuttavia l'esecuzione di DBCC SHRINKFILE non sembra ridurre la dimensione fisica del file di registro delle transazioni.

DBCC SHRINKFILE (N'MyDatabaseName_Log', 1000)

Se controllo l'utilizzo del registro tramite

DBCC SQLPERF(LOGSPACE)

Vedo che viene utilizzato solo il 22% del registro corrente

Nome registro Dimensione registro (MB) Spazio registro utilizzato (%) Stato
MyDatabaseName 55440.87 22.38189 0

Se esco log_reuse_wait_descin sys.databses, l'unico record che vedo è DATABASE_MIRRORING, quindi immagino che il mirror stia giocando un ruolo nel perché le dimensioni fisiche del file di registro non si riducono?

SELECT log_reuse_wait_desc
FROM sys.databases
WHERE name = N'MyDatabaseName';

Ho anche notato che il mio stato di mirroring del database principale è sospeso e il tentativo di riprenderlo fallisce immediatamente con il seguente errore:

Il partner di mirroring remoto per il database "MyDatabaseName" ha riscontrato l'errore 5149, stato 1, gravità 25. Il mirroring del database è stato sospeso. Risolvi l'errore sul server remoto e riprendi il mirroring oppure rimuovi il mirroring e ristabilisci l'istanza del server mirror.

Anche i log degli errori sul server mirror contengono questo errore, ma contengono anche errori relativi al riempimento dell'unità del file di registro

MODIFY FILE ha riscontrato l'errore 112 del sistema operativo (Spazio su disco insufficiente.) Durante il tentativo di espandere il file fisico.

e

F: \ Databaselogs \ MyDatabaseName_1.ldf: errore del sistema operativo 112 (spazio su disco insufficiente.) Rilevato.

Il server principale ha 60 GB sull'unità del file di registro (ci sono altri database ospitati qui), mentre il server con mirroring ha solo 45 GB.

Il backup del file di registro ha reso nuovamente utilizzabile il database, tuttavia desidero anche ridurre la dimensione del file di registro fisico sul disco e riprendere il mirroring.

Come posso ridurre le dimensioni del mio file di registro delle transazioni fisiche senza compromettere il mirroring o la catena di backup?

Sto eseguendo SQL Server 2005


Che cosa ha il server secondario nel registro errori di SQL Server? Dovresti avere alcuni messaggi di log degli errori che indicano cosa è successo a causare la sospensione della sessione di mirroring.
Thomas Stringer,

@ThomasStringer In realtà stavo per pubblicare la mia risposta a questa domanda ... Penso che la mia risposta sia che non posso, almeno non disabilitando il mirror e configurandolo di nuovo. Lo spazio sul server con mirroring riservato ai file di registro è inferiore allo spazio sul server principale (host principale altri database) e non ho modo di ridurre le dimensioni del registro delle transazioni con mirroring. Ho anche aggiornato la mia domanda con i messaggi di errore dal server con mirroring
Rachel,

Risposte:


2

Da quello che posso dire, non posso.

Credo che gran parte del file di registro sia in attesa di essere eseguito il mirroring sul server mirror, ma il mirror è inattivo e non può essere ripreso perché anche il registro delle transazioni con mirroring è cresciuto per occupare tutto lo spazio sul disco.

Questa teoria è ulteriormente supportata dal fatto che una volta rimosso il mirroring, il DBCC SHRINKFILEcomando rimpicciolisce correttamente il file di registro fisico e log_reuse_wait_descsi torna ad aspettareLOG_BACKUP

Non riesco a ridurre il file di registro sul server con mirroring perché funge da mirror e non può essere aperto, quindi penso che il mirror sia irrecuperabile.

Quindi eliminerò del tutto il mirror e ripristinerò tutto (processo molto lento con un database da 300 GB). E questa volta, mi assicurerò che la dimensione del registro delle transazioni sia abbastanza piccola prima di avviare il mirror e che i backup del registro delle transazioni siano in esecuzione una volta eseguito il backup del mirror.

Inoltre, imposterò un limite su quanto può crescere il registro delle transazioni sul server di produzione, quindi il mirror non cerca mai di aumentare il registro delle transazioni oltre le dimensioni disponibili sul disco.


1
Un'altra opzione potrebbe essere quella di eseguire un backup diff e ripristinarlo sul mirror. Potrebbe non funzionare, ma vale la pena provare se tu o qualcun altro ti imbatti di nuovo.
cfradenburg,

@cfradenburg Sì, ho provato a farlo, ma non ha funzionato nel mio caso a causa dei tempi dei miei backup durante il fine settimana e dello spazio su disco che è stato massimizzato sul mirror. Vale sicuramente la pena provare prima di decidere di eliminare completamente il mirror e ricominciare da capo.
Rachel,

1

Oggi abbiamo riscontrato lo stesso problema con i nostri DB, che per qualche motivo avevano smesso di eseguire il backup dei registri delle transazioni negli ultimi 3 mesi e i registri erano balzati a 200 GB.

Esattamente gli stessi codici di errore della tua situazione e il mirroring non riprenderebbero. L'unità di registro era completamente piena sul mirror.

Fortunatamente sono stato in grado di liberare spazio eliminando un paio di vecchi registri vaganti nell'unità Log. Successivamente, è stato in grado di riprendere il mirroring.

Quindi è andato nei backup del piano di manutenzione e ha attivato manualmente i backup del database e del registro delle transazioni. Anche dopo il backup, i file di registro delle transazioni erano ancora enormi. Quindi ho dovuto ripetutamente dire a SQL Studio di ridurre i file di registro (liberare qualsiasi spazio inutilizzato) e, dopo alcuni tentativi nell'arco di un paio d'ore, li ha ridotti ad una dimensione più gestibile.

Spero che sia di aiuto.

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.