niedziela, 21 lipca 2013

Tryby odzyskiwania bazy danych wraz z przydatnymi opcjami nadzoru bazy - MSSQL 2008 Server cz.3

W naszej bazie pracującej na silniku 2008 możemy ustawić 3 różne modele pozwalające na odzysk plików bazy w przypadku jakiegoś kataklizmu.

1) Prosty (Simple) -  jako że w modelu tym kopia dziennika transakcji przechowuje ograniczoną liczbę wstecznych danych odzyskać można jedynie dane do wybranego momentu (niestety nie jest on zbyt odległy od czasu uszkodzenia spójności danych ),

2) Bulk-Logged -  loguje więcej danych w dziennikach transakcji niż Prosty jednak nie wszystkie. Również w tym przypadku nie możemy odzyskać bazy do dowolnie wybranego miejsca.

3) Pełna (Full) -  jak nazwa wskazuje, narzędzia rejestrują wszystko co dzieje się w bazie, dlatego też możliwy jest odzysk danych do dowolnego miejsca z przeszłości.


Poniżej schemat przedstawiający możliwe typy kopii zapasowej oraz możliwości naszych schematów:




Pełna kopia
Kopia różnicowa
Dziennik transakcji
Prosty
Tak
Tak
Nie
Bulk-Logged
Tak
Tak
Częściowo
Full
Tak
Tak
Tak


W celu zmiany / ustawienia naszego schematu odzysku bazy na Full (ponieważ tylko on będzie przydatny w 99,9% przypadków) wykorzystamy:

ALTER DATABASE nazwa_naszej_bazy
            SET RECOVERY  FULL
GO

Po wykonaniu tego kodu nasz schemat będzie zbierał max. liczbę danych.

W bazie uszkodzeniu może ulec również strona danych na której zapisywane są dane. Dzieje się tak gdy  w momencie zapisu danych nastąpi skok napięcia lub niestabilność pracy macierzy dyskowej. Żeby mieć nadzór nad ewentualnie uszkodzonymi stronami musimy włączyć: PAGE_VERIFY CHECKSUM.
Uszkodzone strony zapisywane są w tabeli suspect_pages w bazie msdb. Na każdej bazie produkcyjnej powinna być włączona poniższa opcja:

ALTER DATABASE nazwa_naszej_bazy
            SET PAGE_VERIFY CHECKSUM
GO

Możemy również zwiększyć nadzór nad naszą bazą oraz bardziej zoptymalizować jej działanie:

1) AUTO_CLOSE - jeżeli ta opcja jest włączona baza zostaje zamknięta a jej cała pamięć zwolniona, w momencie wylogowania się ostatniego użytkownika. Jej włączenie jest wskazane w momencie gdy zależy nam na pamięci operacyjnej.

ALTER DATABASE nazwa_naszej_bazy
            SET AUTO_CLOSE ON | OFF
GO


2) AUTO_SHRINK -  pozwala na optymalizację wykorzystania miejsca na dyskach twardych przechowujących pliki bazy. Jej włączenie jest mało opłacalne, ponieważ do rozszerzenia lub skompresowania miejsca potrzebną są zasoby sprzętowe, co może zmniejszyć wydajność bazy.

ALTER DATABASE nazwa_naszej_bazy
            SET AUTO_SHRINK ON | OFF
GO

3) CHANGE_TRACKING - możemy włączyć tryb śledzenia, tak aby można było prześledzić zmiany dokonywane na konkretnych wierszach konkretnych tabel. Możemy co jakiś czas wyczyścić dane zawierające informacje o zmianach na wierszach naszej bazy poprzez:  CHANGE_RETENTION (czyszczenie przechowywania tych danych) oraz ustawić automatycznie ich kasowanie AUTO_CLEANUP.



ALTER DATABASE nazwa_naszej_bazy

SET CHANGE_TRACKING = ON

(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON);

GO

Możemy również czasowo zablokować dostęp do naszej bazy. Mamy dostępne 3 tryby dostępu do bazy:

1) ONLINE - baza jest dostępna dla wszystkich,

ALTER DATABASE nazwa_naszej_bazy

SET ONLINE = ON

GO

2) EMERGENCY - dostęp do bazy mają jedynie użytkownicy z grupy db_owner,

ALTER DATABASE nazwa_naszej_bazy

SET ONLINE = EMERGENCY

GO

3) OFFLINE - baza jest całkowicie niedostępna dla użytkowników,

ALTER DATABASE nazwa_naszej_bazy

SET ONLINE = OFFLINE

GO

Możemy również dla bazy ustawić opcje pozwalające tylko na odczyt (READ_ONLY), dodatkowo kasowane są wszystkie dzienniki transakcji. Jeżeli ustawimy READ_WRITE baza będzie ponownie otwarta do zapisu.

Możemy również ograniczyć dostęp do bazy dla użytkownika w tym celu ustawimy jedną z dostępnych opcji:

1) SINGLE_USER - do bazy zalogować się może jedynie 1 użytkownik

ALTER DATABASE nazwa_naszej_bazy
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO

2) RESTRICTED_USERS - do bazy mogą logować się jedynie db_owner

ALTER DATABASE nazwa_naszej_bazy
SET RESTRICTED_USERS
WITH ROLLBACK IMMEDIATE;
GO

3) MULTI_USER - do bazy może zalogować się wielu użytkowników,

ALTER DATABASE nazwa_naszej_bazy
SET RESTRICTED_USERS
GO

Jeżeli wykonamy jedną z tych opcji w momencie gdy do bazy podłączeni są użytkownicy którzy nie spełniają   wymagań nie możemy zmienić nic na bazie, do czasu gdy się nie wylogują  lub gdy nie wykonamy: ROLLBACK - w ten sposób wyrzucimy wszystkich zalogowanych do bazy. W momencie wykonania ROLLBACK IMMEDIATE wycofane są wszystkie transakcje oraz wyrzuceni z bazy.

Do normalnej pracy baza potrzebuje jednego z trybów: ONLINE, READ_WRITE oraz MULTI_USERS.

Zmiany tych opcji można dokonać poprzez Microsoft SQL Server Managment Studio lub przy pomocy powyższych komend.




Brak komentarzy:

Prześlij komentarz