Wer sich mit dem Thema Backup im Microsoft SQL Server beschäftigt, ist mit ziemlicher Sicherheit schon über das Copy-Only Backup (zu Deutsch: Kopie Sicherung) gestoßen. Was dieser Backup-Typ bedeutet und wo man ihn einsetzten kann/sollte, dazu gehen die Meinungen auseinander. Aus diesem Grund möchte ich den technischen Hintergrund und die Unterschiede zwischen „normalen“ Backups und den Copy-Only Backups vorstellen und anschließend zeigen wann man diese sinnvoll einsetzen kann.
Das „normale“ Backup
Der SQL Server unterscheidet zunächst einmal die Backups nach Vollbackup, Differenzbackup und Transaktionslogbackup.
Vollbackup
Ein Vollbackup enthält immer alle (nicht leeren) Datenseiten, sogenannte “Pages”, der Datenbank und den aktiven Teil des Transaktionslogs. Nur beide Teile zusammen ergeben einen konsistenten Datenbestand für die Rücksicherung.
Differenzbackup
Ein Differenzbackup beinhaltet alle Pages, welche sich seit dem letzten Vollbackup geändert haben. Hierfür führt der SQL Server in jeder Datenbank eine Historie für Änderungen an den Pages (die Differential Changed Map Page – DCM).
https://technet.microsoft.com/en-us/library/ms345448%28v=sql.105%29.aspx?f=255&MSPPError=-2147217396
Den Inhalt dieser Page kann man sich z.B. für die master-Datenbank über diese TSQL-Befehle anzeigen lassen:
dbcc traceon(3604)
dbcc page(0,1,6,3)
https://blogs.msdn.microsoft.com/sqlserverstorageengine/2006/06/10/how-to-use-dbcc-page/
Bei einem Differenzbackup werden nun nur die Pages gesichert, welche einen entsprechenden Eintrag in der DCM-Page haben.
Transaktionslogbackup
Bei dem Transaktionslogbackup wird lediglich der noch nicht gesicherte Inhalt des Transaktionslogs gesichert. Der Inhalt hängt ausschließlich vom letzten Transaktionslogbackup ab, das den Ausgangspunkt bildet.
Unterschied Voll- und Copy-Only Backup
Tatsächlich besteht der Unterschied zwischen einem regulären Vollbackup und einem Copy-Only Backup einzig in der Tatsache, dass ein Copy-Only Backup die Differential Changed Map Page nicht leert. Eine Differenzsicherung nach einem Copy-Only-Backup würde immer noch alle Pages enthalten, welche sich nach dem letzten regulären Vollbackup geändert haben.
Auf das Transaktionslogbackup hat die Copy-Only-Sicherung keinen Einfluss.
Die weit verbreitete Aussage, dass ein Copy-Only-Backup nicht als Basis für die Transaktionslogbackups dient, stimmt natürlich! Aber die selbe Aussage gilt auch für die normalen Vollbackups. Solange man eine ununterbrochene Kette an Transaktionslogs hat, spielt es keine Rolle, ob man das letzte Vollbackup als Basis nimmt oder irgendein Vorgängerbackup.
Einzig das Differenzbackup benötigt ein reguläres Vollbackup als Basis für die Wiederherstellung.
Nutzen / Anwendungsfall
Heute ist der größte Nutzen für ein Copy-Only Backup bei den AlwaysOn-Verfügbarkeitsgruppen in der Enterprise Edition zu finden. Hier hat man die Möglichkeit, die Vollbackups und Transaktionslogbackups auf einem sekundären Server zu machen, wodurch die Nutzer keine Performanceeinbußen durch das Backup haben. Da aber sekundäre Replikate keinen Schreibzugriff erlauben, kann die DCM Page nicht zurückgesetzt werden. Daher kommt in diesem Szenario nur das Copy-Only Backup infrage. Gleichzeigt bedeutet dies aber, dass man auf Differenzbackups verzichten muss, da diese auf einem veralteten Änderungsstand basieren würden.
http://faq-o-matic.net/?p=8051