Ćwiczenia > Mechanizmy bezpieczeństwa w MS SQL Server 2000 > Kopie zapasowe
9.2 Kopie zapasowe
Kopia zapasowa (ang. backup) to pojęcie związane nie tylko z bazami danych, ale ogólnie z przechowywaniem istotnych danych w kilku miejscach. Istotą kopii zapasowych jest to, by w przypadku utraty danych móc szybko i w nieskomplikowany sposób przywrócić dane sprzed awarii lub katastrofy (tak na ogół określamy wypadki losowe, które powodują utratę danych). Odpowiednia strategia kopii zapasowych (rodzaje i częstotliwość ich wykonywania) musi być zaprojektowana zanim baza danych rozpocznie pracę produkcyjną (czyli zanim zaczną z niej korzystać użytkownicy). Krok 1 - Jak przechowywane powinny być dane? Poniżej przedstawiamy kilka reguł, którymi powinni kierować się administratorzy serwerów baz danych (SQL Server) przy planowaniu przechowywania bazy danych. Stosowanie się do tych reguł może w znaczący sposób poprawić wydajność pracy serwera i pojedynczych baz danych. 1. Pliki baz danych dobrze jest przechowywać na innym dysku niż dysk systemowy. 2. Baza danych powinna składać się z kilku grup plików danych, z których każda grupa powinna być przechowywana na innym fizycznym dysku. 3. Pliki dziennika transakcji baz danych (.ldf) powinny znajdować się na innym dysku niż pliki danych (.mdf i .ndf). 4. Dla bezpieczeństwa pliki baz danych powinny być przechowywane na woluminie zapewniającym tolerancję błędów (np. RAID-1 lub RAID-5). Należy preferować w miarę możliwości (szczególnie finansowych) sprzętowe macierze RAID (tzn. gotowe do pracy fabrycznie sprzężone w tablicę dyski). 5. Do dysków z tolerancją błędów najlepiej używać kontrolerów SCSI (ang. small computer system interface) - takie kontrolery zapewniają najlepszą wydajność pracy (niestety jednocześnie są najdroższe). 6. Nośniki (taśmy czy płyty CD/DVD) zawierające kopie zapasowe powinny być przechowywane w innym miescu niż serwer przechowujący dane. To tylko niektóre z reguł, ale już na ich podstawie można wywnioskować, że w praktyce na długo przed rozpoczęciem pracy produkcyjnej bazy danych czynione są odpowiednie przygotowania (część na papierze - czasem głównie w kosztorysach). Krok 2- Poznaj typy kopii zapasowych MS SQL Server oferuje wiele typów kopii zapasowych. Wybór odpowiednich typów (na ogół strategia zawiera dwa typy) zależy od tego, jaką porcję danych trzeba zapisać, jak szybko kopia powinna zostać wykonana oraz jak szybko dane muszą zostać przywrócone w przypadku ich utraty. Poniższa tabela przedstawia listę typów kopii zapasowych w MS SQL Server. Aby zachować nazewnictwo SQL Servera, nie będziemy tłumaczyć nazw typów kopii na język polski.
Typ kopii zapasowej Opis
full database backup Pełna kopia bazy danych.
differential database backup Kopia wszystkich stron danych zmodyfikowanych od wykonania ostatniej pełnej kopii bazy danych.
filegroup backup Pełna kopia wszystkich plików wchodzących w skład określonej grupy plików.
differential filegroup backup Kopia wszystkich stron danych zmodyfikowanych od wykonania ostatniej pełnej kopii grupy plików.
file backup Pełna kopia pliku danych.
differential file backup Kopia wszystkich stron danych zmodyfikowanych od wykonania ostatniej pełnej kopii pliku danych.
transaction log backup Kopia aktywnej części dziennika transakcji (z jednoczesnym wyczyszczeniem dziennika).
snapshot backup and restore Pełna kopia bazy danych wykonywana w bardzo krótkim czasie (sekundy) za pomocą dodatkowego sprzętu lub/oraz oprogramowania.
Zależnie od przyjętej strategii przechowywania danych i wykonywania kopii zapasowych wybrać należy, które rodzaje kopii zapasowych i z jaką częstotliwością będziesz wykonywać w swojej bazie danych. Najwolniej wykonuje się pełna kopia bazy danych, zaś najszybciej wykonywane są kopie różnicowe (differential). Dość często stosowaną strategią jest wykonywanie cotygodniowe (najlepiej w czasie zmniejszonej aktywności serwera - np. w nocy z niedzieli na poniedziałek) pełnej kopii bazy danych, zaś każdego dnia (w godzinach obniżonej aktywności - najczęściej nocą) kopii różnicowej.
Krok 3 - Poznaj metody przywracania danych Oprócz różnych typów kopii zapasowych istnieje wiele mechanizmów przywracania danych zapisanych w tychże kopiach. Poniższa tabela zawiera oferowane przez SQL Server metody przywracania danych (również podajemy angielskie nazwy).
Metoda przywracania Opis
full database restore Pełne przywrócenie całej bazy danych przy użyciu następujących kopii zapasowych: pełnej kopii bazy danych, ostatnio wykonanej kopii różnicowej (differential database backup) oraz wszystkich kopii dziennika transakcji w kolejności wykonania od ostatniej pełnej lub różnicowej kopii bazy danych.
file or filegroup restore with full recovery Pełne przywrócenie pliku lub grupy plików przy użyciu kopii zapasowej pliku/grupy plików, ostatniej różnicowej kopii pliku/ grupy plików (differential file/filegroup backup) oraz wszystkoch kopii dziennika transakcji w kolejności wykonania od ostatniej pełnej lub różnicowej kopii pliku/grupy plików.
recovery to a point in time Przywrócenie bazy danych do stanu w określonym punkcie w czasie przy użyciu pełnego zapisu dziennika transakcji (tzn. dziennik musi pracować w trybie bez czyszczenia zawartości) w kopiach zapasowych transakcji oraz kopii zapasowych bazy danych, plików oraz grup plików.
recovery to a named transaction Przywrócenie całej bazy danych do nazwanej zakładki (tuż przed lub po określoną transakcją) przy użyciu pełnego zapisu dziennika transakcji w kopiach zapasowych transakcji oraz kopii zapasowych bazy danych, plików oraz grup plików.
Musisz wiedzieć, że dziennik transakcji (ang. transaction log) może pracować w kilku trybach (zależnie od tego, jakie ma być jego obciążenie i jaką strategię kopii zapasowych i przywracania danych ustanowiono dla bazy danych) i nie zawsze informacje o wszystkich operacjach wykonywanych w bazie danych są w nim zapisywane. Nie będziemy omawiać tego zagadnienia (szukaj w Books Online pod hasłem log shipping lub recovery models), gdyż byłoby to poruszanie szczegółów administracji serwerem SQL.
Krok 4 - Wykonaj kopię zapasową bazy Dla przykładu wykonamy pełną kopię zapasową bazy danych Biblioteka. 1. Uruchom program Enterprise Manager. 2. Rozwijaj drzewo po lewej stronie okna programu i wejdź do folderu Management. 3. W folderze Management kliknij prawym przyciskiem myszy na pozycji Backup i w menu kontekstowym wybierz opcję New Backup Device..., aby stworzyć nośnik dla kopii zapasowych (nie masz raczej taśmy, więc zapiszemy kopię do pliku na twardym dysku). 4. W oknie Backup Device Properties - New Device wpisz jako nazwę (pole name) nośnika Biblioteka_full_backup, zaś jako ścieżkę do pliku (ploe file name) podaj na przykład C:\Biblioteka_full_backup.BAK (lub ścieżkę na innym dysku, na którym masz trochę wolnej przestrzeni). Kliknij OK.
Rys. 9.2.1 Enterprise Manager - dodawanie nowego nośnika kopii zapasowych 5. W folderze Management kliknij prawym przyciskiem myszy na pozycji Backup i w menu kontekstowym wybierz opcję Backup a Database. 6. W oknie SQL Server Backup ustaw pola w zakładce General jak pokazano na rysunku poniżej (aby określić pole Destination kliknij przycisk Add... i wybierz z listy nośników utworzony przed chwilą plik Biblioteka_full_backup).
Rys. 9.2.2 Enterprise Manager - konfigurowanie kopii zapasowej 7. W oknie SQL Server Backup przejdź do zakładki Options, zaznacz opcję Verify backup upon completion (sprawdzenie integralności danych po zakończeniu wykonywania kopii zapasowej) i kliknij OK. Zostanie wykonana kopia zapasowa (operacja powinna zakończyć się po chwili informacją o udanym przebiegu i weryfikacji). Krok 5 - Odtwórz dane w bazie danych z kopii zapasowej Spróbujmy teraz odtworzyć dane z kopii zapasowej. 1. W programie Enterprise Manager kliknij prawym przyciskiem myszy na bazie danych Biblioteka i z menu kontekstowego wybierz Wszystkie zadania - Restore Database.... 2. W oknie Restore database sprawdź, czy ustawienia są takie, jak na rysunku poniżej i kliknij OK. Zostanie przywrócona zawartość bazy z pełnej kopii zapasowej.
Rys. 9.2.3 Enterprise Manager - konfigurowanie przywracania danych
Pamiętaj, że podczas przywracania danych z kopii zapasowej nie można pracować z bazą danych (musisz zamknąć wszystkie programy i aplikacje klienckie używające bazy danych - między innymi program Query Analyzer).
Podczas pracy z projektem Prace dyplomowe poeksperymentuj z kopiami zapasowymi (jedną pełną kopię zachowaj, byś zawsze mógł wrócić do pierwotnego stanu bazy danych). Przed przywróceniem danych z kopii zapasowej dokonaj modyfikacji danych, żebyś mógł zaobserwować zmiany po wykonaniu operacji przywracania. Zaproponuj strategię wykonywania kopii zapasowych dla tego projektu i dołącz swoje przemyślenia do dokumentacji projektu.
Przejdź dalej
Ćwiczenia > Mechanizmy bezpieczeństwa w MS SQL Server 2000 > Kopie zapasowe