SQL Server-Transaktionssicherungen im Vergleich zu Protokollen

12

Ich habe eine mittelgroße, geschäftskritische SQL Server 2008-Datenbank geerbt und versuche, mich ganz der Sicherungsplanung zu widmen. (Ich bin ein Entwickler, kein DBA.)

So wie unser System derzeit eingerichtet ist, gibt es zwei Sicherungssysteme:

  1. Wöchentliche vollständige Sicherungen ( .bak) und stündliche .trnSicherungen des Transaktionsprotokolls ( ). Wir führen mehrere Sätze dieser Backups und sie werden regelmäßig außerhalb des Unternehmens versandt.
  2. SQL Server-Protokolle ( .ldf), wobei das Wiederherstellungsmodell auf festgelegt ist Full. Diese Datei befindet sich auf einem anderen Laufwerk als die Hauptdatei .mdf, wird jedoch ansonsten nicht gesichert.

Im Falle einer Notfallwiederherstellung (oder beim Wiederherstellen von Sicherungen auf einem .bakEntwicklungscomputer) werden die Dateien verwendet und anschließend die TRN-Dateien angewendet. Wir haben ein Skript, das diese Prozedur relativ einfach macht.

Meine Fragen:

  1. Ist es möglich, die Datenbank aus der .ldfDatei wiederherzustellen ? Wofür ist es überhaupt?
  2. Ist es unnötig redundant, beide Transaktionsprotokolle zu haben?
  3. Ist es wichtig, die .ldfDatei zu sichern?
Strang
quelle

Antworten:

16

Nein, es ist nicht möglich, eine Datenbank aus einer ldf-Datei wiederherzustellen. Die ldf-Datei wird zusammen mit den mdf-Dateien wiederhergestellt.

Nein, es ist nicht redundant, da sie zwei verschiedene Zwecke haben.

Es ist wichtig, vollständige Sicherungen und Transaktionsprotokollsicherungen durchzuführen. Wenn Sie nur eine Kopie der ldf-Datei haben, können Sie die Datenbank nicht wiederherstellen.

Was eine ldf-Datei angeht, ist die ldf das Transaktionsprotokoll. Stellen Sie sich das als einen Umlaufpuffer vor, der Änderungen an Ihrer Datenbank aufzeichnet. Wenn Sie eine Zeile aktualisieren, wird die Änderung sofort in die ldf geschrieben. Zu einem späteren Zeitpunkt (normalerweise weniger als fünf Minuten) werden die geänderten Daten in die MDF-Datei geschrieben.

Wenn der Server abgestürzt ist oder ein Stromausfall aufgetreten ist, liest SQL beim Start die ldf und wendet diese Änderungen erneut an (REDO).

Wenn Sie eine Transaktion haben, die noch nicht festgeschrieben wurde, und der Server abstürzt, müssen alle von dieser Transaktion vorgenommenen Änderungen rückgängig gemacht werden, um die Datenbank konsistent zu machen. Die ldf-Datei hat auch diese Aufgabe. (RÜCKGÄNGIG MACHEN)

Ich habe oben erwähnt, dass die ldf-Datei kreisförmig ist. Durch das Erstellen einer Transaktionsprotokollsicherung (.trn) wird ein Teil der ldf-Datei kopiert. Nachdem eine trn-Datei sicher erstellt wurde, kann sql diesen Teil der ldf-Datei wiederverwenden. Die Reihe von trn-Sicherungen erstellt eine Kette, die alle an der Datenbank vorgenommenen Änderungen aufzeichnet. Wenn Sie nie ein Transaktionsprotokoll-Backup erstellt hätten, wäre die LDF-Datei natürlich immer größer geworden.

In einem Katastrophenszenario erhalten Sie nach dem Wiederherstellen der vollständigen Sicherung eine Kopie der Datenbank zum Zeitpunkt des Abschlusses der vollständigen Sicherung. Sie können dann die TRN-Dateien der Reihe nach wiederherstellen und die Datenbank zu jedem Zeitpunkt auf den aktuellen Stand bringen, einschließlich der letzten TRN-Sicherung.

Ich beschreibe einige wichtige Details, aber das Wichtigste ist, dass ldf eine Arbeitsdatei ist, die die letzten Änderungen an der Datenbank aufzeichnet. Die trn-Dateien sind Kopien von Teilen der ldf, die unter der Annahme erstellt wurden, dass Sie diese aufbewahren, damit sql den Speicherplatz in der ldf wiederverwenden kann. Im Katastrophenfall haben Sie sie an einem anderen Ort.

StrayCatDBA
quelle
2
+1 Sehr schöne Antwort. Das einzige, was ich hinzufügen würde, ist, dass wenn ein DBA "Datenbank" sagt, diese die kombinierten .mdf- (die Datendatei) und .ldf- (die Protokolldatei) Dateien bedeuten. Die beiden Dateien bilden zusammen eine Einheit. In einigen Datenbanken werden möglicherweise auch mehrere MDFS- und / oder NDS-Dateien (sekundäre Datendateien) angezeigt. Diese Dateien werden auch zu einer einzigen Einheit, der Datenbank, zusammengefasst. Wenn Sie eines von ihnen verlieren, befinden Sie sich in einem Katastrophenmodus und müssen Korrekturmaßnahmen ergreifen.
Kenneth Fisher
+1 gute Antwort, auch nicht versehentlich die "physische Datei" (die tatsächliche .mdf / .ndf / .ldfs) sichern, während Sie auf einem System leben, auch mit einer Drittanbieter-App wie Norton, während MS SQL Server als ausgeführt wird ein sicheres "Backup". Diese Dateien sind sehr vertraulich, daher sollten aktuelle MS SQL Server-Sicherungsdateien immer erstellt werden, wenn dies möglich ist.
Ali Razeghi
Danke, das ist sehr hilfreich. Es hört sich so an, als ob unsere regulären SQL Server-Sicherungspläne ausreichen und es nicht erforderlich ist, die MDF- oder LDF-Dateien direkt zu manipulieren.
Hank