Transaktionsprotokollpflege in der Spiegeldatenbank


10

SQL Server-Version: 2008 R2 Enterprise SP2

Ich versuche, unsere SQL Server-Wartung in den Griff zu bekommen, und bin auf etwas gestoßen, das ich für falsch halte. Wir haben eine einzelne Produktionsinstanz mit 3 Datenbanken, die jeweils außerhalb einer DR-Instanz gespiegelt werden.

Beim Betrachten der DR-Instanz bemerkte ich, dass die LDF-Dateien riesig waren, über 35 GB für die stark genutzten Datenbanken.

Ich verstehe, dass dies wahrscheinlich darauf zurückzuführen ist, dass sich die Spiegeldatenbanken im vollständigen Wiederherstellungsmodus befinden und dass die Protokolle nie gesichert wurden. Sie werden nur weiter wachsen, bis der Speicherplatz auf dem Laufwerk knapp wird.

Wir führen Protokollsicherungen in der Hauptdatenbank durch, und meine Frage ist, was die Fallstricke bei der Durchführung einer Protokollsicherung auf einem Spiegel sind.

Mindestens eine vollständige Datenbanksicherung vom Spiegel muss abgeschlossen sein, bevor eine Protokollsicherung durchgeführt werden kann. Gibt es in diesem Fall spezielle Optionen, die verwendet werden müssen, da es sich um einen Spiegel handelt?

Dies sind wiederum Empfehlungen zur Pflege des Transaktionsprotokolls in der MIRROR- Datenbank.

Vielen Dank für jede Eingabe

Antworten:


5

Wir führen Protokollsicherungen in der Hauptdatenbank durch, und meine Frage ist, was die Fallstricke bei der Durchführung einer Protokollsicherung auf einem Spiegel sind.

Sie können keine Protokollsicherung für die Spiegeldatenbank durchführen.

Mindestens eine vollständige Datenbanksicherung vom Spiegel muss abgeschlossen sein, bevor eine Protokollsicherung durchgeführt werden kann. Gibt es in diesem Fall spezielle Optionen, die verwendet werden müssen, da es sich um einen Spiegel handelt?

Sie können auch keine vollständige Datenbanksicherung für die Spiegeldatenbank durchführen.

Nehmen wir zum Beispiel Folgendes: Ich habe Server1welche die Hauptdatenbank beherbergt AdventureWorks2012und Server2welche den Spiegel enthält. Folgendes passiert, wenn ich versuche, Sicherungen in der Spiegeldatenbank (on Server2) auszuführen :

use master;
go

backup database AdventureWorks2012
to disk = 'c:\sqlserver\AW_mirror.bak';
go

Nachricht 954, Ebene 14, Status 1, Zeile 2
Die Datenbank "AdventureWorks2012" kann nicht geöffnet werden. Es fungiert als Spiegeldatenbank .
Meldung 3013, Ebene 16,
Status 1, Zeile 2 Die Sicherungsdatenbank wird abnormal beendet.

backup log AdventureWorks2012
to disk = 'c:\sqlserver\AW_mirror.trn';
go

Nachricht 954, Ebene 14, Status 1, Zeile 1
Die Datenbank "AdventureWorks2012" kann nicht geöffnet werden. Es fungiert als Spiegeldatenbank .
Meldung 3013, Ebene 16,
Status 1, Zeile 1 Das Sicherungsprotokoll wird abnormal beendet.

Schauen Sie sich diese FAQ zur Datenbankspiegelung von Robert Davis an . Ich werde ihn bezüglich dieser Operation und der Pflege des Transaktionsprotokolls der Spiegeldatenbank zitieren:

Wenn Sie das Protokoll auf dem Principal sichern, werden die virtuellen Protokolldateien (einzelne Einheiten in der Protokolldatei) als wiederbeschreibbar markiert. Dieselben VLFs werden auch in der Spiegelprotokolldatei als wiederbeschreibbar markiert. Der VLF-Status wird in der Datenbank gespiegelt .

Da haben Sie es also. Wenn Sie Transaktionsprotokollsicherungen auf dem Principal haben, wird ein ähnliches Verhalten bei der Wiederverwendung von Protokollen in die Partnerdatenbank gespiegelt.


Ich hasse es, wenn es einen Artikel gibt, der meine genaue Frage beantwortet und ich finde ihn nicht. Dies ist absolut sinnvoll, wenn ich übernahm, dass die Protokolle nicht gesichert wurden und auf dem Principal sehr groß wurden. Nachdem ich regelmäßige Sicherungen gestartet hatte, schrumpfte ich die Protokolle, dachte aber nicht daran, dies auf dem Spiegel zu tun. Vielen Dank!
Jeremie Grund

1
Eine zusätzliche Frage wäre, ob es möglich ist, das überwachsene gespiegelte Transaktionsprotokoll zu verkleinern, nachdem wir regelmäßige Transaktionsprotokollsicherungen auf dem Principal haben.
Jeremie Grund

@JeremieGrund Eine Möglichkeit, dies zu tun, wäre ein Failover auf die gespiegelte Datenbank und das Verkleinern dort. Testen Sie dies gründlich in einer Umgebung ohne Produktion, um sicherzustellen, dass es das gewünschte / erwartete Verhalten aufweist.
Thomas Stringer

0

@JeremieGrund - Wenn die Architektur der physischen Datenbankdatei identisch ist (Namen und Speicherorte der Daten- und Protokolldateilaufwerke), wird der Befehl zum Verkleinern an den Spiegel gesendet und auf dem Spiegel ausgeführt, wenn Sie die Protokolldatei auf dem Principal verkleinern. Auf diese Weise kann Ihre Spiegelprotokolldatei verwaltet werden. Wenn die Dateiarchitektur nicht identisch ist, sollten Sie dem Vorschlag von Thomas Stringer folgen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.