w otwierającym rozdział książki Craiga Mullina, administracja bazami danych, mówi „pod wieloma względami biznes dzisiaj to dane”. W większości organizacji osobą odpowiedzialną za ochronę danych jest administrator bazy danych … ty.
to prawda; cała firma jest w Twoich zdolnych rękach, działa na tym serwerze, który nigdy nie zawiesza się, z tymi wszystkimi użytkownikami końcowymi, którzy nigdy nie popełniają błędów przy użyciu aplikacji, zbudowanych przez tych programistów, którzy piszą bezbłędny kod za pierwszym razem, za każdym razem, z zdolną pomocą tego nowego kooperacyjnego, który ma uprawnienia ” sa ” dzięki Twojemu szefowi.
OK. Przestań płakać. Istnieją rzeczy, które możesz zrobić, aby chronić dane serwera SQL pod twoją opieką, a jedną z najważniejszych jest regularne wykonywanie kopii zapasowych bazy danych.
kopie zapasowe
Microsoft w SQL Server Books Online definiuje kopie zapasowe jako:
kopia danych, która jest używana do przywracania i odzyskiwania danych po awarii systemu
kopie zapasowe SQL mogą być tworzone na wiele sposobów i mogą zawierać wszystkie lub niektóre dane, a także pewną część dziennika transakcji. Chociaż ten artykuł koncentruje się na składni 2005, większość pojęć dotyczy 2000. To ogromny temat. W najlepszym razie, zarysuję powierzchnię i dam ci wystarczająco dużo informacji, żebyś więcej nie zaczął płakać. Po przeczytaniu tego powinieneś być w stanie skonfigurować rozsądny zestaw kopii zapasowych dla swojego systemu.
modele odzyskiwania
aby rozpocząć pracę nad kopiami zapasowymi, firma musi zdefiniować model odzyskiwania bazy danych. Zasadniczo model odzyskiwania określa, co zamierzasz zrobić z danymi dziennika transakcji.
istnieją trzy modele odzyskiwania: pełny, prosty i zbiorczy. Są one dość łatwe do zdefiniowania:
- proste-w trybie prostego odzyskiwania dziennik transakcji nie jest archiwizowany, więc możesz odzyskać tylko najnowszą pełną lub różnicową kopię zapasową.
- Full-w trybie pełnego odzyskiwania tworzysz kopię zapasową bazy danych i dziennika transakcji, dzięki czemu możesz odzyskać bazę danych do dowolnego punktu w czasie.
- Logowanie zbiorcze-w trybie rejestrowania zbiorczego większość transakcji jest zapisywana w dzienniku transakcji, ale niektóre operacje zbiorcze, takie jak ładunki zbiorcze lub tworzenie indeksu, nie są rejestrowane.
dwa najczęściej używane tryby są proste i pełne. Niekoniecznie zakładaj, że oczywiście zawsze musisz korzystać z pełnego odzyskiwania, aby chronić swoje dane. To decyzja biznesowa. Firma powie Ci, czy musisz odzyskać do pewnego momentu lub po prostu potrzebujesz ostatniej pełnej kopii zapasowej. To będzie określić, czy dane można odzyskać za pomocą innych środków, takich jak ręczne wprowadzanie, lub jeśli trzeba chronić jak najwięcej, jak to możliwe, gdy przychodzi przez przewód. Używasz prostego odzyskiwania, jeśli możesz sobie pozwolić na utratę danych przechowywanych od ostatniej pełnej lub różnicowej kopii zapasowej i/lub po prostu nie potrzebujesz odzyskiwania do pewnego momentu. W trybie prostym musisz przywrócić wszystkie wtórne grupy plików do odczytu/zapisu po przywróceniu podstawowej. Używasz Simple głównie na drugorzędnych bazach danych, które nie są absolutnie istotną częścią przedsiębiorstwa lub systemów raportowania, z dostępem tylko do odczytu, więc i tak nie ma dziennika transakcji, o który warto się martwić. Używasz Full jeśli każdy bit danych jest niezbędny, musisz odzyskać do pewnego momentu lub, zwykle w przypadku bardzo dużych baz danych (VLDB), musisz przywrócić pojedyncze pliki i grupy plików niezależnie od innych plików i grup plików.
zarówno w modelu prostego, jak i pełnego odzyskiwania można teraz uruchomić kopię zapasową tylko do kopii, która pozwala skopiować bazę danych do pliku kopii zapasowej, ale nie wpływa na dziennik, harmonogramy kopii różnicowych ani odzyskiwanie do określonego punktu w czasie. Postaram się zgłębić jak najwięcej z tych tematów poprzez artykuł, ale nie pliki i filegroups.
praca z prostym odzyskiwaniem
wystarczy mówić. Przejdźmy do tworzenia kopii zapasowych. Załóżmy, że jesteśmy w prostym odzyskiwaniu na małej i średniej wielkości bazie danych. Użyję AdventureWorks do wszystkich przykładowych skryptów. Aby ustawić go na proste odzyskiwanie:
1
|
ALTER DATABASE AdventureWorks SET Recovery SIMPLE
|
najprostszą strategią tworzenia kopii zapasowych jest uruchamianie, w regularnych odstępach czasu, następującego polecenia SQL Server backup, które wykona pełną kopię zapasową bazy danych:
1
2
|
BACKUP DATABASE AdventureWorks
TO DISK = ” C:\Backups\AdventureWorks.BAK’
|
o co chodzi z tym pisaniem? Czy nie mamy narzędzi GUI do obsługi pracy za nas? Tak, większość prostych kopii zapasowych można wykonać za pomocą SQL Server Management Studio. Jeśli jednak chcesz dowiedzieć się i zrozumieć, co Management Studio robi dla Ciebie, lub jeśli chcesz mieć drobnoziarnistą kontrolę nad tym, co jest zabezpieczone, jak i gdzie, będziesz musiał wyłamać klawiaturę i odłożyć mysz.
powyższe polecenie spowoduje utworzenie podstawowej kopii zapasowej na dysk. Większość baz danych znam kopię zapasową do pliku, a następnie zeskrobać pliki na taśmie lub innym nośniku. Dzieje się tak dlatego, że pliki na dysku są proste i szybkie do odzyskania, podczas gdy media mogą czasami być trochę uciążliwe. Na przykład, mamy zwykle dwa do trzech dni kopii zapasowych na naszych systemach plików do natychmiastowego odzyskania. Przechodzimy do systemów taśmowych tylko wtedy, gdy musimy uruchomić przywracanie starszych kopii zapasowych.
co to za polecenie zrobiło? Zrobił kopię wszystkich danych w bazie danych. Kopiował również niezatwierdzone wpisy do dziennika. Są one używane podczas odzyskiwania do zatwierdzania lub wycofywania zmian, które wystąpiły w danych podczas procesu tworzenia kopii zapasowej.
kopie zapasowe tylko do kopiowania
Zwykle tworzenie kopii zapasowej bazy danych wpływa na inne procesy tworzenia kopii zapasowych i przywracania. Na przykład po uruchomieniu poprzedniego polecenia, wszelkie kopie różnicowe (kopia, która kopiuje tylko dane zmienione od ostatniej kopii zapasowej) będą używać tego jako punktu wyjścia dla zmian danych, a nie kopii zapasowej, którą uruchomiłeś zeszłej nocy. Jak wspomniano wcześniej, SQL 2005 wprowadza nową koncepcję kopii zapasowych, copy_only backups, które pozwalają nam zachować od przerywania cyklu:
1
2
3
|
BACKUP DATABASE AdventureWorks
TO DISK = ” C:\Backups\AdventureWorks.bak ’
WITH COPY_ONLY;
|
już znaleźliśmy jeden z tych bardziej szczegółowych momentów, w których Studio zarządzania nie chciało Ci pomóc. Jeśli chcesz kopii zapasowej tylko, musisz użyć wiersza poleceń.
kopie różnicowe
Załóżmy na chwilę, że wciąż jesteśmy w prostym odzyskiwaniu, ale mamy do czynienia z większą bazą danych, powiedzmy coś powyżej 100 GB. Pełne kopie zapasowe mogą nieco spowolnić proces. Zamiast tego, po konsultacji z firmą, zdecydowaliśmy się na cotygodniowe pełne kopie zapasowe i codzienne kopie różnicowe. Kopie różnicowe archiwizują tylko Strony danych, które uległy zmianie od czasu ostatniej pełnej kopii zapasowej. Poniżej znajduje się polecenie SQL backup do wykonania kopii różnicowej:
1
2
3
|
BACKUP DATABASE AdventureWorks
TO DISK = ” C:\backups\AdventureWorks.bak ’
z różnicą;
|
teraz, gdybyśmy mieli przywrócić tę bazę danych, najpierw przeszlibyśmy do ostatniej pełnej kopii zapasowej, przywrócić ją, a następnie przywrócić kopie różnicowe w kolejności (więcej na ten temat później).
1
2
3
|
BACKUP DATABASE Adventureworks
TO DISK = ” C:\backups\AdventureWorks.bak ’
z INIT;
|
istnieje wiele innych opcji tworzenia kopii zapasowych, których Nie będę tutaj wyszczególniać. Przeczytaj książki online, aby zobaczyć szczegóły dotyczące rozmiaru bloku, daty ważności, dni retain, hasła, nazwy, statystyk i tak dalej.
Możesz również uruchomić instrukcję, która sprawdzi integralność kopii zapasowej bazy danych. Nie sprawdza integralności danych w kopii zapasowej, ale sprawdza, czy kopia zapasowa jest poprawnie sformatowana i dostępna.
1
2
|
RESTORE VERIFYONLY
FROM DISK = ” C:\backups\Adventureworks.bak’
|
pełne odzyskiwanie i kopie zapasowe logów
pracujemy przede wszystkim nad bazą danych, która była w trybie prostego odzyskiwania (kiedyś nazywała się Truncate Log on Checkpoint). W tym trybie nie wykonujemy kopii zapasowych dzienników transakcji w celu późniejszego odzyskania. Każda kopia zapasowa w ramach tego mechanizmu to kopia zapasowa bazy danych. Kopie zapasowe dziennika są po prostu niemożliwe.
jednak dane są chronione tylko od ostatniej dobrej kopii zapasowej, pełnej lub różnicowej. Zmieńmy nasze założenia. Teraz mamy do czynienia z dużą, krytyczną aplikacją i bazą danych. Chcemy być w stanie odzyskać tę bazę danych do ostatniej minuty. Jest to bardzo ważna kwestia. W teorii, ponieważ wpisy dziennika są przechowywane i archiwizowane, jesteśmy chronieni aż do momentu awarii. Jednak niektóre awarie mogą spowodować uszkodzenie dziennika, co uniemożliwia odzyskanie do określonego punktu w czasie. Musimy więc określić, jaki będzie rozsądny minimalny czas między kopiami zapasowymi logów. W tym przypadku możemy żyć z nie więcej niż 15 minut wartości utraconych danych.
Zacznijmy więc od ustawienia naszej bazy danych w trybie pełnego odzyskiwania:
1
|
ALTER DATABASE AdventureWorks SET RECOVERY FULL
|
następnie, zgodnie z harmonogramem, w tym przypadku co 15 minut, uruchamiamy polecenie SQL backup dla dziennika transakcji:
1
2
|
BACKUP logu
TO DISK = ” C:\backups\AdventureWorks_Log.bak”;
|
ten skrypt utworzy kopię zapasową wykonanych transakcji z dziennika transakcji. Ma znaczniki w pliku, które pokazują czas rozpoczęcia i zakończenia. Po pomyślnym zakończeniu dziennik zostanie obcięty, usuwając z dziennika transakcji zatwierdzone transakcje, które zostały zapisane do pliku kopii zapasowej. Jeśli to konieczne, możesz użyć instrukcji WITH NO_TRUNCATE do przechwytywania danych z dziennika transakcji niezależnie od stanu bazy danych, zakładając, że jest on online, a nie w stanie awaryjnym. To tylko w nagłych wypadkach.
zauważ, że w tym przypadku nie używamy instrukcji INIT, ale możesz to zrobić, jeśli wybierzesz. Podczas tworzenia kopii zapasowych logów masz opcje:
- Uruchom wszystkie kopie zapasowe do jednego pliku, gdzie będą się układać, a wszystko, co musisz zrobić, podczas przywracania (omówione później), to przejść przez nie.
- Nazwij kopie zapasowe jednoznacznie, prawdopodobnie używając daty i czasu w łańcuchu.
w tym drugim przypadku, bezpieczeństwo mówi, użyj INIT, ponieważ masz maksymalną kontrolę nad tym, co zostanie skopiowane, gdzie i będziesz mógł dokładnie wiedzieć, co to jest kopia zapasowa, kiedy została wykonana i skąd na podstawie nazwy. Jest to kolejne miejsce, w którym obsługa kopii zapasowych z wiersza poleceń daje większą kontrolę niż GUI. Wykorzystaliśmy oba podejścia w naszych systemach z różnych powodów. Możesz zdecydować, co jest najlepsze dla Twoich wymagań technologicznych i biznesowych.
większość opcji dostępnych dla kopii zapasowej bazy danych znajduje się w kopii zapasowej dziennika, w tym COPY_ONLY. Umożliwiłoby to przechwycenie zestawu danych transakcji bez wpływu na dziennik lub następną zaplanowaną kopię zapasową dziennika. Byłoby to przydatne do przenoszenia danych produkcyjnych do innego systemu w celu rozwiązywania problemów itp.
jeśli masz ustawioną bazę danych na pełne odzyskiwanie, musisz uruchomić kopie zapasowe dziennika. Czasami ludzie zapominają, a dziennik transakcji rośnie do tego stopnia, że wypełnia dysk. W tym przypadku możesz uruchomić:
1
|
kopia zapasowa dziennika Adventureworks z NO_LOG;
|
dołączenie no_log do kopii zapasowej dziennika, a nie podanie lokalizacji dziennika, powoduje usunięcie nieaktywnej części dziennika i robi to bez samego wpisu dziennika, pokonując w ten sposób pełny dysk. Nie jest to absolutnie zalecane, ponieważ łamie łańcuch dziennika, serię kopii zapasowych dziennika, z których można odzyskać bazę danych do punktu w czasie. Firma Microsoft zaleca uruchomienie pełnej kopii zapasowej natychmiast po użyciu tego Oświadczenia. Ponadto ostrzegają, że to oświadczenie może być przestarzałe w przyszłym wydaniu.
przywracanie baz danych
równie ważne jak kopie zapasowe serwera SQL są i są niezbędne, są bezużyteczne bez możliwości przywrócenia bazy danych.
Przywracanie pełnej kopii zapasowej bazy danych
Przywracanie pełnej kopii zapasowej bazy danych jest tak proste, jak tworzenie:
1
2
|
RESTORE DATABASE Adventureworks
FROM DISK = ” C:\Backup\AdventureWorks.bak’;
|
to naprawdę takie proste-chyba że, ponieważ tworzymy kopię zapasową wszystkiego do pliku, jakby to było urządzenie do tworzenia kopii zapasowych. W takim przypadku musisz określić, który plik znajduje się w „urządzeniu”, do którego uzyskujesz dostęp. Jeśli nie wiesz, który plik, musisz wygenerować listę:
1
2
|
RESTORE HEADERONLY
FROM DISK = ” C:\Backup\Adventureworks.bak’;
|
to da ci taką samą listę, jak pokazałem powyżej z Management Studio. Więc teraz, jeśli chcemy przywrócić drugi plik w grupie, kopię zapasową COPY_ONLY, wydasz następujące polecenie:
1
2
3
|
RESTORE DATABASE AdventureWorks
FROM DISK = ” C:\Backup\Adventureworks.bak ’
z plikiem = 2;
|
niestety, jeśli śledzisz to, może się okazać, że właśnie wygenerowałeś ten błąd:
1
2
3
4
5
6
7
|
Msg 3159, Level 16, State 1, Line 1
ogon dziennika dla bazy danych „AdventureWorks” nie został zarchiwizowany.
użyj dziennika kopii zapasowej Z NORECOVERY, aby wykonać kopię zapasową dziennika, jeśli zawiera on pracę, którą wykonujesz
nie chcesz stracić. Użyj klauzuli WITH REPLACE lub with STOPAT instrukcji RESTORE
, aby nadpisać zawartość dziennika.
Msg 3013, poziom 16, Stan 1, linia 1
przywracanie bazy danych kończy się nieprawidłowo.
|
oznacza to, że Twoja baza danych jest w trybie pełnego odzyskiwania, ale nie wykonałeś kopii zapasowej „ogona dziennika”, co oznacza transakcje wprowadzone od ostatniego uruchomienia kopii zapasowej. Można nadpisać ten wymóg, jeśli zmienisz poprzednią składnię na:
1
2
3
4
|
RESTORE DATABASE AdventureWorks
FROM DISK = ” C:\Backups\Adventureworks.bak ’
WITH FILE = 2,
REPLACE;
|
jest to pierwszy raz, kiedy stosujemy klauzule WITH (z FILE=2 i z REPLACE jest reprezentowane jak z FILE=2, REPLACE), ale nie będzie to ostatnie. Czytaj książki online. Większość poleceń z klauzulą może być używana w połączeniu z innymi.
co się stanie, jeśli chcemy przywrócić do innej bazy danych niż oryginał? Na przykład chcemy wykonać kopię naszej bazy danych z oddzielnej kopii zapasowej. Może chcemy przenieść go na serwer wsparcia produkcji, gdzie będziemy nad nim pracować, oddzielnie od produkcyjnej kopii bazy danych. Jeśli przyjmiemy proste podejście, Cóż, spróbuj tego:
1
2
3
|
RESTORE DATABASE AdventureWorks_2
FROM DISK = ” C:\Backups\Adventureworks.bak ’
z plikiem = 2;
|
w takim przypadku powinieneś zobaczyć całą serię błędów dotyczących plików, które nie są nadpisywane. Naprawdę można tworzyć nowe bazy danych z kopii zapasowych, ale jeśli robisz to na serwerze z istniejącą bazą danych, musisz zmienić lokalizację plików fizycznych za pomocą nazw logicznych. Aby poznać logiczne nazwy plików dla danej bazy danych, uruchom to przed próbą przeniesienia plików:
1
2
3
|
RESTORE FILELISTONLY
FROM DISK = ” C:\Backups\Adventureworks.bak ’
z plikiem = 2;
|
następnie można to wykorzystać do identyfikacji odpowiednich nazw logicznych w celu wygenerowania tego skryptu:
1
2
3
4
5
|
RESTORE DATABASE AdventureWorks_2
FROM DISK = ’ C:\ Backups\Adventureworks.bak ’
WITH FILE = 2,
MOVE ’ AdventureWorks_Data 'TO’ C:\backups\aw2_data.mdf’,
przenieś ’ AdventureWorks_Log 'do’ C:\backups\aw2_log.ldf’;
|
przywracanie kopii różnicowej
ostatnią metodą jest zastosowanie kopii różnicowej. Wymaga to dwóch kroków. Najpierw przywrócimy bazę danych, ale z niespodzianką, a następnie zastosujemy backup różnicowy:
1
2
3
4
5
6
7
8
9
|
RESTORE DATABASE AdventureWorks
FROM DISK = ” C:\Backups\Adventureworks.bak ’
WITH FILE = 1 ,
NORECOVERY,
REPLACE;
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks.bak ’
WITH FILE = 3;
|
większość z nich jest prawdopodobnie oczywista w oparciu o to, co już omówiliśmy. Jedna zmarszczka to włączenie słowa kluczowego NORECOVERY. Bardzo prosto, podczas przywracania, transakcje mogły się rozpocząć podczas procesu tworzenia kopii zapasowej. Niektóre z nich są kompletne, a inne nie. po zakończeniu przywracania zakończone transakcje są rolowane do bazy danych, a niekompletne transakcje są rolowane z powrotem. Ustawienie NORECOVERY utrzymuje transakcje otwarte. Pozwala to na pobranie następnego zestawu transakcji z następnej kopii zapasowej w kolejności.
w tym artykule zajmujemy się głównie prostymi kopiami zapasowymi i przywracaniem, ale bardziej zaawansowane Przywracanie w 2005 r. pozwala na przywracanie drugorzędnych grup plików, gdy baza danych jest online. Jego podstawowa grupa plików musi być w trybie online podczas operacji. Będzie to bardziej pomocne dla bardzo dużych systemów bazodanowych.
przywracanie baz danych SQL Server do punktu w czasie
Przywracanie dzienników nie jest znacznie trudniejsze niż różnicowe przywracanie bazy danych, które właśnie zakończyliśmy. Jest po prostu trochę bardziej zaangażowany w przywrócenie do chwili w czasie. Zakładając, że tworzysz kopię zapasową dzienników na pojedynczym pliku lub urządzeniu:
1
2
|
RESTORE HEADERONLY
FROM DISK = ” C:\Backups\Adventureworks_log.bak’;
|
w przeciwnym razie po prostu idź i pobierz nazwy plików, których potrzebujesz. Najpierw uruchom przywracanie bazy danych, dbając o pozostawienie jej w stanie nieodwracalnym. Następnie wykonaj serię przywracania dziennika do określonego punktu w czasie.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
RESTORE DATABASE AdventureWorks FROM DISK = ” C:\Backups\Adventureworks.bak’
WITH FILE = 1,
NORECOVERY,
REPLACE,
STOPAT = 'Oct 23, 2006 14:30:29.000′;
RESTORE LOG
FROM DISK = ” C:\Backups\Adventureworks_log.bak’
WITH FILE = 1,
NORECOVERY,
STOPAT = 'Oct 23, 2006 14:30:29.000′;
RESTORE LOG
FROM DISK = ” C:\Backups\Adventureworks_log.bak ’
WITH FILE = 2,
NORECOVERY,
STOPAT = 'Oct 23, 2006 14: 30: 29.000′;
RESTORE LOG
FROM DISK = ” C:\Backups\Adventureworks_log.bak’
WITH FILE = 3,
NORECOVERY,
STOPAT = 'Oct 23, 2006 14:30:29.000′;
RESTORE LOG
FROM DISK = ” C:\Backups\Adventureworks_log.bak ’
WITH FILE = 4,
STOPAT = 'Oct 23, 2006 14:30:29.000′;
|
teraz mamy bazę danych, która jest dokładna, ostatnia transakcja o 14: 30: 29 23 października. Pamiętaj, że podczas przywracania wieloetapowego, takiego jak to, musisz pozostawić bazę danych w stanie odzyskiwania. Oznacza to dołączanie NORECOVERY do każdej instrukcji, dopóki nie zakończysz procesu przywracania. Jeśli z jakiegoś powodu dodałeś NORECOVERY do wszystkich swoich oświadczeń lub po prostu zatrzymujesz się w środku i chcesz przywrócić bazę danych online, możesz użyć tego Oświadczenia, aby zakończyć proces:
1
2
|
przywracanie bazy danych Adventureworks
z odzyskiwaniem;
|
migawki bazy danych
SQL Server 2005 wprowadził koncepcję migawki lub statycznego widoku bazy danych tylko do odczytu. Migawki są tworzone przede wszystkim w celu dostarczenia wersji bazy danych tylko do odczytu do celów raportowania. Jednak działają one w podobny sposób jak kopie zapasowe. Podstawową różnicą jest to, że wszystkie niezatwierdzone transakcje są wycofywane. Nie ma opcji przewijania do przodu, przechwytywania dzienników itp., że kopie zapasowe zapewniają, ani nie są w ogóle używane bardzo wiele zasobów serwera SQL. Zamiast tego, Technologia dyskowa jest używana do tworzenia kopii danych. Z tego powodu są one znacznie szybsze niż kopie zapasowe zarówno do tworzenia, jak i przywracania.
Uwaga:
aby uzyskać więcej informacji na temat migawki SQL 2005, zobacz http://www.simple-talk.com/sql/database-administration/sql-server-2005-snapshots/.
dobrym wykorzystaniem migawek, oprócz raportowania, może być utworzenie go przed konserwacją po usunięciu wszystkich aktywnych użytkowników (i ich transakcji) z systemu. Chociaż migawki nie obsługują zmienności kopii zapasowych na żywo, ich szybkość i łatwość odzyskiwania sprawiają, że jest to świetne narzędzie do szybkiego odzyskiwania po nieudanym wdrożeniu. Migawki są przechowywane na serwerze, więc musisz upewnić się, że masz odpowiednią pamięć.
składnia jest inna, ponieważ nie tworzysz kopii zapasowej bazy danych; tworzysz nową:
1
2
3
4
|
Utwórz bazę danych Adventureworks_ss1430
ON (NAME = AdventureWorks_Data,
FILENAME = 'C:\Backups\AdventureWorks_data_1430.ss’)
jako migawka AdventureWorks;
|
teraz będzie dostępny tylko do odczytu. Ponieważ zależy nam przede wszystkim na użyciu tego mechanizmu jako mechanizmu tworzenia kopii zapasowych, Załóżmy metodę przywracania bazy danych do migawki bazy danych.
najpierw określ migawkę, której chcesz użyć. Jeśli w dowolnej bazie danych jest więcej niż jedna, którą zamierzasz przywrócić, musisz usunąć wszystkie z wyjątkiem tej, której używasz:
1
|
DROP DATABASE Adventureworks_ss1440;
|
następnie możesz przywrócić bazę danych, uruchamiając instrukcję przywracania (mieszane metafory, niezbyt dobre):
1
2
|
Przywróć DATABASE Adventureworks
z DATABASE_SNAPSHOT = Adventureworks_ss1430;
|
to wszystko. W moim systemie uruchomienie migawek bazy danych Adventureworks zajęło 136 ms. pełna kopia zapasowa zajęła 5,670 ms. przywrócenie migawki zajęło 905ms, a przywracanie bazy danych zajęło 13,382 ms. Włączenie tego do procesu wdrażania produkcji może przynieść znaczące korzyści
ponownie warto zauważyć, że istnieją pewne zastrzeżenia do korzystania z migawki. Musisz mieć wystarczająco dużo miejsca na dysku dla drugiej kopii bazy danych. Musisz uważać na migawki, ponieważ większość składni jest podobna do tej używanej przez same bazy danych. Na koniec, chociaż do bazy danych dołączone są migawki, nie można uruchomić przywracania z kopii zapasowej bazy danych tej bazy danych.
najlepsze praktyki
sposób wykonywania kopii zapasowych bazy danych nie powinien być decyzją techniczną. To powinno być podyktowane przez biznes. Małe systemy o niskich stawkach transakcji i / lub systemy raportowania, które są regularnie ładowane, będą potrzebować tylko pełnej kopii zapasowej bazy danych. Średnie i duże systemy stają się zależne od rodzaju zarządzanych danych, aby określić, jakie typy kopii zapasowych są wymagane.
w przypadku średniej wielkości systemu codzienna kopia zapasowa z kopiami logów w ciągu dnia prawdopodobnie odpowiadałaby na większość wymagań dotyczących danych w odpowiednim czasie.
w przypadku dużej bazy danych najlepszym podejściem jest łączenie i dopasowywanie kopii zapasowych, aby zapewnić maksymalną możliwość odzyskania w minimalnym czasie. Na przykład uruchom cotygodniową pełną kopię zapasową. Dwa razy dziennie w ciągu tygodnia, wykonuj Backup różnicowy. Co 10 minut w ciągu dnia Uruchom kopię zapasową dziennika. Daje to dużą liczbę mechanizmów odzyskiwania.
w przypadku bardzo dużych baz danych musisz uruchomić filegroup i kopie zapasowe plików, ponieważ wykonanie pełnej lub nawet różnicowej kopii zapasowej pełnej bazy danych może nie być możliwe. Wiele dodatkowych funkcji jest dostępnych, aby pomóc w tym obszarze, ale nie będę się w nich tutaj zagłębiać.
powinieneś poświęcić trochę czasu na opracowanie skryptów do uruchamiania kopii zapasowych i przywracania. Konwencja nazewnictwa, dzięki której wiesz jaka baza danych, z jakiego serwera, z jakiej daty, w jakim konkretnym backupie i formacie będzie bardzo sprzyjała twojemu rozsądkowi. Należy zdefiniować wspólną lokalizację dla kopii zapasowych, dziennika, pełnego lub przyrostowego. Wszyscy odpowiedzialni powinni być przeszkoleni zarówno w zakresie tworzenia kopii zapasowych i odzyskiwania, jak i rozwiązywania problemów. Istnieje wiele sposobów, aby to zrobić, ale możesz znaleźć kilka sugestii W Pop Backup i Pop Restores.
prawdziwym testem jest uruchomienie mechanizmów tworzenia kopii zapasowych, a następnie uruchomienie przywracania. Następnie spróbuj innego rodzaju przywracania, i inny, i inny. Upewnij się, że nie tylko wykonałeś należytą staranność w definiowaniu sposobu tworzenia kopii zapasowych systemu, ale zrobiłeś dodatkowy krok w celu zapewnienia, że możesz odzyskać te kopie zapasowe. Jeśli nie ćwiczyłeś tego i nie udokumentowałeś tej praktyki, a następnie nie przetestowałeś dokumentu, w rzeczywistości nie jesteś gotowy na katastrofę.
podsumowanie
kopie zapasowe w przedsiębiorstwie powinny być jak głosowanie w Chicago, wcześnie i często. Konfigurowanie podstawowych kopii zapasowych jest dość proste. Dodawanie kopii zapasowych logów i różnic jest również łatwe. Zapoznaj się z opcjami, aby zobaczyć, jak dodawać kopie zapasowe i przywracanie w plikach i grupach plików, aby zwiększyć szybkość tworzenia kopii zapasowych, a przywracanie obu z nich zwiększy dostępność systemu i czas pracy. Zachowaj wspólny standard nazewnictwa. Zachowaj ostrożność podczas korzystania z migawek, ale na pewno je wykorzystaj. Przechowuj pliki w standardowej lokalizacji między serwerami. Ćwiczcie regenerację. Na koniec, aby naprawdę sprawić, że Twoje kopie zapasowe zaśpiewają, pobierz bezpłatną wersję próbną kopii zapasowej SQL Red Gate. Oferuje wysoką wydajność kompresji i odporności sieci, aby proces pisania lub kopiowania kopii zapasowych w sieci flaky odporne na błędy.