Różnica między pełną kopią zapasową a pełną kopią zapasową tylko do kopiowania

17

Widziałem w centralnym wątku programu SQL Server Czy pełna kopia zapasowa obciąża dziennik? pełna kopia zapasowa nie obcina dziennika:

Nie. Pełne lub różnicowe kopie zapasowe nie obcinają dziennika transakcji. - Lynn Pettis
Nie - pełna kopia zapasowa nie obcina dziennika. - Chad Crawford

Czym więc różni się pełna kopia zapasowa od pełnej kopii zapasowej tylko do kopiowania?

Kopia zapasowa dziennika zawiera kopię zapasową tylko do kopiowania, która zapobiega przerwaniu łańcucha dziennika bez obcinania dziennika. Czym jest pełna kopia zapasowa tylko do kopiowania?

Badacz IT
źródło

Odpowiedzi:

14

Przynajmniej musisz rozważyć różnicowe kopie zapasowe. O ile nie zostanie użyte tylko pełne kopiowanie, twoja kolejna kopia zapasowa różnic będzie wyłączona. Kopie zapasowe tylko do kopiowania :

Pełne kopie zapasowe tylko do kopiowania (wszystkie modele odzyskiwania) Kopia zapasowa tylko do kopiowania nie może służyć jako baza różnicowa ani kopia różnicowa i nie wpływa na bazę różnicową.

Jedyną różnicą między pełną a pełną kopią jest to, że pełna kopia nie przerywa łańcucha różnicowego. Żadne z nich nie przerywa łańcucha dziennika, ponieważ żadne z nich nie obcina pliku dziennika.

Remus Rusanu
źródło
24

Kluczową różnicą między kopiami pełnymi a kopiami tylko do kopiowania jest to, czy LSN (numer sekwencji dziennika), a konkretnie DatabaseBackupLSNjest aktualizowany.

Po wykonaniu pełnej kopii zapasowej DatabaseBackupLSNjest ona aktualizowana. Po zrobieniu pełnej kopii zapasowej, jeśli wykonasz różnicową kopię zapasową, ta kopia będzie DatabaseBackupLSNpasowała do kopii pełnej, a zatem SQL może połączyć obie (np. Wie z tych LSN, że diff wykonał pełną kopię).

Problem pojawia się, gdy masz zaplanowane kopie zapasowe, więc masz początkową pełną kopię zapasową, a następnie sekwencję różnicową. Jeśli ręcznie wykonasz pełną kopię zapasową, zaktualizuje ona LSN, a następnie od tego momentu każda różnicowa kopia zapasowa, którą wykonasz za pomocą zaplanowanej kopii zapasowej, będzie wskazywać, że nowa LSN nie jest oryginalna. W przypadku konieczności przywrócenia można przywrócić zaplanowaną pełną kopię zapasową, ale próba przywrócenia dowolnej kopii zapasowej różnicowej wykonanej po ręcznym zadaniu może zakończyć się niepowodzeniem, ponieważ LSN nie będą już pasować.

W przypadku kopii zapasowej tylko do kopiowania nie dotyka DatabaseBackupLSN, a zatem nie przerywa łańcucha kopii zapasowych.

Jest dobry opis tego problemu, a także dlaczego tak wiele osób go nie rozumie w Przerwaniu łańcucha zapasowego - REDUX (lub Jedzenie Crow) Michaela K. Campbella, który zawiera dobre wizualne przewodniki takie jak ten:

Obraz SQLmag - Pełna kopia zapasowa v Kopie zapasowe Tylko kopia

Aby uzyskać dobre wyjaśnienie czterech różnych LSN i sposobu ich użycia, zapoznaj się z artykułem Zrozumienie numerów sekwencji dziennika SQL Server dla kopii zapasowych autorstwa Simona Liewa.

Sposobem na uniknięcie tego problemu jest nie więcej niż jedna operacja wykonywania standardowych kopii zapasowych bazy danych. Wszelkie doraźne lub wtórne kopie zapasowe powinny być wykonywane z opcją tylko do kopiowania, zobacz Pełne kopie zapasowe (SQL Server), aby uzyskać szczegółowe informacje, ale zasadniczo używasz opcji „Kopiuj tylko do kopii zapasowej” w SSMS, za pomocą T-SQL określ WITH COPY_ONLYw poleceniu lub w PowerShell użyj -CopyOnlyparametru.

Keith Langmead
źródło
1
Aby dodać: Praktycznie TYLKO KOPIUJ pozwala na tworzenie kopii zapasowej do celów innych niż kopia zapasowa. Dla klienta kopie zapasowe są tworzone automatycznie w korporacyjnym systemie tworzenia kopii zapasowych - uzyskanie przywracania jest BARDZO BŁĘDNE, szczególnie przenoszenie go do innego środowiska (praca papierkowa, wykonywanie w ciągu dnia). TYLKO KOPIUJ pozwala mi wykonać kopię BEZ zakłócania tworzenia kopii zapasowej zarządzanej przez korporacyjną kopię zapasową, a następnie przywrócić ją do środowiska testowego.
TomTom
12

Załóżmy, że mamy bazę danych z zaplanowanymi kopiami zapasowymi. Pełna kopia zapasowa jest uruchamiana raz na 24 godziny o 00:00, mamy także różnicowe kopie zapasowe, które działają co 6 godzin, oraz kopie zapasowe dziennika transakcji, które są uruchamiane co godzinę. Co więc, jeśli musimy wykonać dodatkową pełną kopię zapasową w środku dnia, aby przywrócić inny serwer? Co powinniśmy zrobić w tym przypadku. Oczywiście możemy wykonać pełną kopię zapasową.

BACKUP DATABASE Test TO DISK = 'C:/Test.bak'

Jednak podczas tworzenia kopii zapasowej bazy danych zachodzą pewne zmiany, które wpływają na sposób przywrócenia następujących kopii zapasowych (kopie różnicowe i kopie zapasowe dziennika transakcji wpływają na to, jak będzie przebiegać operacja przywracania). W takim przypadku wszystkie kolejne różnicowe kopie zapasowe będą zależały od ostatniej pełnej kopii zapasowej. W przypadku utraty ostatniej pełnej kopii zapasowej przywracanie bazy danych jest niemożliwe.wprowadź opis zdjęcia tutaj

Ale w jaki sposób możemy wykonać kopię zapasową, która nie wpłynie na następujące procesy tworzenia kopii zapasowej lub przywracania dla tej bazy danych. To tutaj powstają kopie zapasowe tylko do kopiowania.

BACKUP DATABASE Test TO DISK = 'C:\Test.bak' WITH COPY_ONLY

wprowadź opis zdjęcia tutaj

Alexandr Omelchenko
źródło
2

Gdy masz pełną kopię zapasową i zestaw kopii zapasowych pliku dziennika, łańcuch dziennika jest utrzymywany przy użyciu LSN (numer sekwencji dziennika). Jeśli chcesz wykonać kopię zapasową bez przerywania łańcucha dziennika, wykonaj kopię zapasową tylko do kopiowania.

Jeśli nie wykonasz kopii zapasowej tylko do kopiowania, łańcuch dziennika zostanie przerwany, a tworzona kopia zapasowa będzie najnowszą pełną kopią zapasową. Oznacza to, że poprzednich kopii zapasowych dziennika nie można zastosować do nowo wykonanych pełnych kopii zapasowych. Łańcuch dziennika jest w większości utrzymywany w celu odzyskania punktu lub scenariuszy wysyłki dziennika.

Na przykład: powiedzmy, że masz scenariusz tworzenia kopii zapasowych, który wykonuje pełne kopie zapasowe co 6 godzin (północ, 6 rano, w południe, 18:00) i zapisuje kopie zapasowe co 15 minut. O 9 rano przychodzi żądanie umieszczenia kopii bazy danych na serwerze testowym. Chcesz wykonać kopię zapasową bez przerywania łańcucha dziennika lub zakłócania zadań tworzenia kopii zapasowych. Dzieje się tak, gdy wykonywana jest kopia zapasowa tylko do kopiowania. Kopia zapasowa tylko do kopiowania nie zakłóci regularnych zestawów kopii zapasowych.

StanleyJohns
źródło
1
Nie sądzę, że łańcuch dziennika kopii zapasowych tylko do kopiowania. Pełna kopia zapasowa tylko do kopiowania nie resetuje bazy różnicowej. To jedyna różnica. Zobacz te linki sqlservercentral.com/Forums/Topic1471058-391-1.aspx?Update=1 i sqlinthewild.co.za/index.php/2011/03/08/…
informatyk
1
Nie zgodziłem się na twoją odpowiedź. Zarówno pełna kopia zapasowa, jak i tylko pełna kopia zapasowa nie przerywają łańcucha dzienników. Poza „nie resetującą różnicową bazą” kopia tylko pełna kopia jest pod każdym względem dokładnie taka sama jak normalna pełna kopia zapasowa. Zobacz link do forum, o którym wspomniałem w poprzednim komentarzu.
informatyk
Powiedzmy, że masz pełną kopię zapasową: kopie zapasowe dziennika FB1 i 3: LB1, LB2, LB3. Teraz wykonaj ręczną pełną kopię zapasową: FB2 (bez copy_only). Poczekaj na 3 kolejne kopie zapasowe dziennika: LB4, LB5, LB6. Teraz usuń FB2. Czy możesz przywrócić FB1 + LB1 + LB2 + LB3 + LB4 + LB5 + LB6?
StanleyJohns
Tak, mogę przywrócić. Zrobiłem pełną kopię zapasową (nie tylko kopiowanie) FB1, następnie kopię zapasową dziennika (LB1), następnie pełną kopię zapasową (nie tylko kopiowanie) FB2, a następnie ponownie kopię zapasową dziennika (LB2). następnie przywróciłem w tej sekwencji FB1 + LB1 + LB2. Przywrócono poprawnie i znaleziono wszystkie wiersze wprowadzone poprawnie.
informatyk
2
-1, ponieważ opcja kopiowania tylko z pełną kopią zapasową nie ma nic wspólnego z łańcuchami LSN. Itresearcher zwrócił na to uwagę, ale nie zaktualizowałeś / nie usunąłeś swojej odpowiedzi.
Edward Dortland,
0

Pełna kopia zapasowa i kopia tylko do kopiowania nie przerywają łańcucha dziennika. tylko jeśli wykonasz kopię zapasową tlog, wystąpi niedopasowanie LSN.

Kevin
źródło