Wird mein Wiederherstellungsprozess durch diese nicht nur kopierfähige Sicherung von Drittanbietern stark beeinträchtigt?

7

Diese Frage kann wie ein Duplikat gelesen werden, ist jedoch situationsabhängig und wird aufgrund von Verwirrung veröffentlicht, indem das Wissen aus anderen Antworten angewendet wird.

Ich habe Dutzende von Artikeln gelesen (unter 1 , 2 , 3 , 4 ), finde aber widersprüchliche Meinungen (basierend auf meinem Verständnis, das jetzt unter Informationsüberflutung leidet oder möglicherweise nicht genügend Informationen in meine anderen Fragen einbezieht). Ich erstelle diese Frage, um eine endgültige Antwort auf meine Situation zu erhalten.

In Anbetracht des folgenden Sicherungsszenarios muss ich wissen, ob die Sicherungssoftware eines Drittanbieters mich daran hindert, eine vollständige Wiederherstellung bis zum Zeitpunkt der letzten Sicherung (18:00 Uhr) durchzuführen.

Time  | Action                                       | Device   
------|----------------------------------------------|----------------------------
12:00 | Full backup (non copy_only)                  | D:\MyBackupDevice                 
13:00 | Tran log backup (non copy_only)              | D:\MyBackupDevice                 
14:00 | Tran log backup (non copy_only)              | D:\MyBackupDevice                 
15:00 | Tran log backup (non copy_only)              | D:\MyBackupDevice                 
16:00 | Full backup (non copy_only) VSS snapshot     | Third-party off-site device
17:00 | Tran log backup (non copy_only)              | D:\MyBackupDevice                
18:00 | Tran log backup (non copy_only)              | D:\MyBackupDevice                 
19:00 | Disaster strikes                             |                                   

Mein Wiederherstellungsziel ist die Wiederherstellung bis zum Punkt der 18: 00-Sicherung (ich weiß, dass eine Endprotokoll-Sicherung hinzugefügt werden kann, um die verbleibenden Transaktionen bis zur Katastrophe zu erhalten, aber lassen Sie uns die Dinge vorerst einfach halten). .

Aufgrund dieser Antwort glaube ich, dass die Sicherung eines Drittanbieters einen Konflikt mit meiner eigenen Transaktionsprotokollwiederherstellung verursacht (gemäß dieser Antwort ), der mich daran hindert, meine Wiederherstellung bis zu diesem Punkt durchzuführen. Nach meinem Verständnis enthält die Transaktionsprotokollsicherung Daten seit der letzten vollständigen Sicherung ohne copy_only.

Ist das richtig? Verhindert die Sicherung von Drittanbietern, dass meine eigene Wiederherstellungsroutine funktioniert, da es sich nicht um eine Sicherung handelt, die nicht copy_only ist?

EvilDr
quelle

Antworten:

9

Vielleicht hilft Ihnen das zu verstehen. Lass uns eine Demo machen! Wir werden eine Dummy-Datenbank mit einigen Dummy-Daten erstellen.

USE master;

/*Create a dummy database*/
CREATE DATABASE LogRestoreTest

/*We full now*/
ALTER DATABASE LogRestoreTest SET RECOVERY FULL

/*Context is everything*/
USE LogRestoreTest

/*If nothing changes, do we even need a log backup?*/
CREATE TABLE dbo.t1 (Id INT)

Jetzt machen wir eine vollständige Sicherung. Nur einer. Versprechen.

/*Take a full backup, dummy*/

BACKUP DATABASE LogRestoreTest 
TO DISK = 'F:\Backup\LRT_FULL.bak' 
WITH INIT, FORMAT, COMPRESSION

Jetzt nehmen wir einige Änderungen vor und führen einige Protokollsicherungen durch. Genau wie im wirklichen Leben. Es macht Spaß. Noch kein Trinken.

/*Make a change*/
INSERT dbo.t1 (Id )
VALUES ( 1 )

/*Take a log backup*/
BACKUP LOG LogRestoreTest 
TO DISK = 'F:\Backup\LRT_LOG_1.trn' 
WITH INIT, FORMAT, COMPRESSION

/*Make another change*/
INSERT dbo.t1 (Id )
VALUES ( 2 )

/*Take another log backup*/
BACKUP LOG LogRestoreTest 
TO DISK = 'F:\Backup\LRT_LOG_2.trn' 
WITH INIT, FORMAT, COMPRESSION

/*Make another change*/
INSERT dbo.t1 (Id )
VALUES ( 3 )

Jetzt erstellen wir eine vollständige Out-of-Band-Sicherung und eine weitere Protokollsicherung.

/*A second full backup appears!*/
BACKUP DATABASE LogRestoreTest 
TO DISK = 'F:\Backup\LRT_FULL_2.bak' 
WITH INIT, FORMAT, COMPRESSION

/*Take another log backup*/
BACKUP LOG LogRestoreTest 
TO DISK = 'F:\Backup\LRT_LOG_3.trn' 
WITH INIT, FORMAT, COMPRESSION

Wenn ich Daten in der dritten Protokollsicherung wiederherstellen möchte, habe ich zwei Möglichkeiten.

Stellen Sie die erste vollständige Sicherung und alle drei Protokollsicherungen wieder her:

/*Restore the full backup*/
RESTORE DATABASE LogRestoreTest
FROM DISK = 'F:\Backup\LRT_FULL.bak' 
WITH REPLACE, NORECOVERY


/*Square one*/
RESTORE DATABASE LogRestoreTest
FROM DISK = 'F:\Backup\LRT_LOG_1.trn' 
WITH NORECOVERY

/*What about to here?*/
RESTORE DATABASE LogRestoreTest
FROM DISK = 'F:\Backup\LRT_LOG_2.trn' 
WITH NORECOVERY

/*Obligatory Your Mom*/
RESTORE DATABASE LogRestoreTest
FROM DISK = 'F:\Backup\LRT_LOG_3.trn' 
WITH NORECOVERY

Oder ich kann die letzte vollständige und dann die endgültige Protokolldatei wiederherstellen:

/*Restore the full backup*/
RESTORE DATABASE LogRestoreTest
FROM DISK = 'F:\Backup\LRT_FULL_2.bak' 
WITH REPLACE, NORECOVERY


/*What happens if I try to jump the restores?*/
RESTORE DATABASE LogRestoreTest
FROM DISK = 'F:\Backup\LRT_LOG_3.trn' 
WITH NORECOVERY

Sie müssen mir verzeihen, dass ich hier keine differenziellen Sicherungen erkläre, aber es gibt viele Ressourcen, die sich mit DBA 101-Material befassen.

Hoffe das hilft!

Erik Darling
quelle
7

Antwort des Community-Wikis :

In Ihrer vorherigen Frage haben Sie gesagt:

... stellte sich heraus, dass das Tool keine copy_onlyBackups verwendete und so die Protokollkette zerstörte

Ein FULLBackup unterbricht niemals die Protokollkette.

Bei einer Nicht- COPY_ONLY FULLSicherung wird nur die Differentialbasis zurückgesetzt (der Referenzpunkt für eine DIFFERENTIALSicherung).

Also, nein , das 16:00 | Full backup (non copy_only) VSS snapshotwürde nicht verhindern , dass Sie erfolgreich die folgende Wiederherstellungssequenz ausführen:

  1. 12:00 | Full backup (non copy_only)
  2. 13:00 | Tran log backup (non copy_only)
  3. 14:00 | Tran log backup (non copy_only)
  4. 15:00 | Tran log backup (non copy_only)
  5. 17:00 | Tran log backup (non copy_only)
  6. 18:00 | Tran log backup (non copy_only)

Hier finden Sie eine beispielhafte Wiederherstellungssequenz mit der neuesten FULLAktualisierung:

Eine LOGSicherung enthält Daten seit der letzten LOGSicherung. FULLund DIFFERENTIALSicherungen kürzen das Protokoll nicht.

Aus dem Transaktionsprotokoll (SQL Server)

Wenn unter dem vollständigen Wiederherstellungsmodell oder dem massenprotokollierten Wiederherstellungsmodell seit der vorherigen Sicherung ein Prüfpunkt aufgetreten ist, erfolgt das Abschneiden nach einer Protokollsicherung (es sei denn, es handelt sich um eine Nur-Kopie-Protokollsicherung).

user126897
quelle
2

Ich werde die Informationen aus meinen vorherigen Antworten hier in einer einzigen Antwort zusammenfassen, um ein wenig zu erläutern, was in Ihrem Szenario passiert. Ich möchte darauf hinweisen, dass sich die Voraussetzungen in Ihren Fragen von Frage zu Frage leicht geändert haben.

TL; DR

Nein , die reguläre vollständige Snapshot-Sicherung der Drittanbieterlösung aus Ihrem Beispiel unterbricht die Sicherungskette nicht.


Basislinie

Die Basis für die Erklärung ist Ihre Tabelle, wie in Ihrer Frage definiert:

Time  | Action                                       | Device   
------|----------------------------------------------|----------------------------
12:00 | Full backup (non copy_only)                  | D:\MyBackupDevice                 
13:00 | Tran log backup (non copy_only)              | D:\MyBackupDevice                 
14:00 | Tran log backup (non copy_only)              | D:\MyBackupDevice                 
15:00 | Tran log backup (non copy_only)              | D:\MyBackupDevice                 
16:00 | Full backup (non copy_only) VSS snapshot     | Third-party off-site device
17:00 | Tran log backup (non copy_only)              | D:\MyBackupDevice                
18:00 | Tran log backup (non copy_only)              | D:\MyBackupDevice                 
19:00 | Disaster strikes                             |           

Das Backup erklären

Jedes Mal, wenn SQL Server eine Sicherung der Datenbank durchführt, werden die relevanten LSN-Informationen (Loq Sequence Number) in den MSDB-Sicherungsverlauf eingefügt, sodass der Prozess im Falle einer Wiederherstellung weiß, welche Dateien (Sicherungssätze) zur Wiederherstellung der Datenbank erforderlich sind . Er speichert die Sicherungen Sequenz mit Hilfe der LSNs in den Spalten first_lsn, last_lsnund die database_backup_lsn(und einige andere Spalten).

Diese Informationen werden auch in den Sicherungsdateien selbst gespeichert. Diese Spalten unterstützen den Wiederherstellungsprozess beim Wiederherstellen einer Datenbank aus einer vollständigen Sicherung und zusätzlichen TLOG-Sicherungen.

Die first_lsnenthält die LSN der ersten in der TLOG-Sicherung gespeicherten Transaktion und last_lsndie LSN der letzten Transaktion in der TLOG-Sicherung.

Die database_backup_lsnenthält die LSN der letzten vollständigen Sicherung.

Halt. Geh zurück. Lesen Sie diesen Abschnitt noch einmal.

Beispiel für LSN-Nummern aus einer ähnlichen Situation

backup_type checkpoint_lsn      database_backup_lsn first_lsn           last_lsn             
Full        35000001911700042   35000001908000042   35000001911100002   35000001913500001    
Log         35000001911700042   35000001911700042   35000001911200001   35000001914300001    
Log         35000001911700042   35000001911700042   35000001914300001   35000001914600001    
Log         35000001911700042   35000001911700042   35000001914600001   35000001914900001    
Log         35000001911700042   35000001911700042   35000001914900001   35000001915200001    
Full        35000001915700042   35000001911700042   35000001915700042   35000001917500001    
Log         35000001915700042   35000001915700042   35000001915200001   35000001918300001    

Wie Sie in diesem Beispiel sehen können, stimmt die LSN der TLOG-Sicherungen immer überein. Das last_lsneiner vorherigen TLOG-Sicherung stimmt mit dem first_lsnder nächsten TLOG-Sicherung überein .

Die vollständige Sicherung verfügt jedoch über eine LSN, die im LSN-Bereich der nächsten TLOG-Sicherung beginnt und im LSN-Bereich derselben TLOG-Sicherung endet.

Wiederherstellung basierend auf Ihrer Beispieltabelle

Wenn Sie Ihre Datenbank aufgrund eines Fehlers um 19:00 Uhr auf 18:00 Uhr wiederherstellen müssten, benötigen Sie die vollständige Sicherung von 12:00 Uhr und Ihre Transaktionsprotokollsicherungen von 13:00 bis 18:00 Uhr.

Die LSNs wären ohne Unterbrechungen. Keine vollständige Sicherung von Drittanbietern erforderlich.

Sie können dies überprüfen, indem Sie die Spalte first_lsnund last_lsnIhrer aktuellen Sicherungen überprüfen . Sie sollten zueinander passen.

Ende der Erklärung

Sie können die Erklärung hier und jetzt beenden, es müssen jedoch Überlegungen zur Lösung von Drittanbietern und zur Lösung, die Sie für Ihre Sicherungen verwenden, angestellt werden.

(Fortsetzung folgt...)

Referenz: SQL Server - Grundlegendes zu SQL Server-Sicherungen (Paul S. Randal)

John aka hot2use
quelle