Wykład 2

Transkrypt

Wykład 2
Archiwizacja
i odtwarzanie bazy
O czym będzie
•
•
•
•
•
•
Metody odzyskiwania danych w DB2
Dzienniki transakcji
Metody tworzenia kopii zapasowych
Metody odtwarzania
Operacje rollforward
Odbudowa indeksów
Problemy...
• Nigdy nie wiadomo, kiedy awaria systemu
może nastąpić
• Wiele powodów może być przyczyną utraty
danych
– Czynniki zewnętrzne
– Czynniki wewnętrzne
• Pytania:
– Czy archiwizowaliśmy bazę?
– Czy jesteśmy w stanie odtworzyć wszystkie
transakcje do ostatniego momentu z przed awarii
Strategia odtwarzania
• By minimalizować utratę danych musimy:
– opracować strategię odtwarzania
– upewnić się co do jej skuteczności
– ciągle przećwiczyć, testować i przystosować do zmian
• Mogą wystąpić takie scenariusze:
– Zatrzymanie systemu: brak zasilania, awaria sprzętu, błąd
aplikacji – mogą doprowadzić do niespójności bazy
danych
– Błąd transakcji: nieumyślne umieszczenie błędnych
danych przez użytkownika
– Awaria sprzętu: uszkodzenie nośnika danych (dysku(ów))
może powodować utratę części lub całej bazy danych
– Katastrofa: pożar, powódź i inne
Planowanie
• Aby zaplanować strategię odtwarzania i
odzyskiwania danych należy sobie
odpowiedzieć na następujące pytania
– Czy dane mogą być ponownie załadowane z
innego źródła
– Na utratę jakiego rozmiaru danych możemy
sobie pozwolić
– Ile czasu mamy na odzyskiwanie bazy danych
– Jakie zasoby (nośniki danych) posiadamy do
przechowywania kopii zapasowych i pliki
dziennika transakcji
Koncepcje odzyskiwania
• DB2 prowadzi następujące koncepcje odzyskiwania
danych
– Crash recovery: pozwala na odtwarzanie bazy danych do
stanu spójności poprzez wycofanie wszystkich nie
zatwierdzonych transakcji
– Version recovery: pozwala na odtwarzanie bazy danych
na podstawie ostatniego zachowanego obrazu bazy
(komenda BACKUP).
• Wszystkie zmiany, które zachodziły w bazie od momentu
wykonania komendy BACKUP do wystąpienia awarii są stracone!
– Rollforward recovery: Rozszerzenie version recovery o
odzyskiwanie nie zapisanych zmian na podstawie
zapisów w plikach dziennika transakcji
• Pozwala również na przywracanie bazy do określonej chwili
czasu
• Wymaga zastosowania logów archiwalnych
Dziennik transakcji
• Jest decydującym czynnikiem w procesie
odtwarzania bazy danych
• Przechowuje ścieżki wszystkich zmian
zachodzących w obiektach i plikach bazy
• Dla zapewnienia integralności danych DB2
stosuje metodę „uprzedni zapis” (writeahead)
– Zapis do dziennika transakcji przed zapisaniem
do plików bazy danych
Schemat zapisu danych
Wyjaśnienie
• Package cache: obszar pamięci do przechowywania
przetwarzanych poleceń SQL
• Buffer pool: obszar pamięci do przechowywania danych
• Data page: strona pamięci (4kB może mieć do 32 kB)
• Log buffer: obszar pamięci do przechowywania zapisów
dziennika transakcji
• Podczas przetwarzania poleceń SQL, zmiany są najpierw
zachowane w buforze dziennika transakcji, następnie
zapisane do pliku pliku dziennika (log buffer jest pełny lub
zatwierdzenie transakcji –commit-)
• Zapis do plików bazy danych nastąpi w momencie
zapełnienia buffer pool (brak miejsca w pamięci na nowe
strony) lub asynchroniczne (optymalizacja dostępu do
danych)
Podstawowe i wtórne pliki
dziennika transakcji
• Podstawowe pliki dziennika są tworzone
natychmiast po połączeniu z bazą danych
• Wtórne pliki dziennika są tworzone
dynamicznie w razie potrzeby
• Podstawowe parametry konfiguracji
– LOGPRIMARY: określa liczbę podstawowych
plików dziennika do tworzenia
– LOGSECOND:określa maksymalną liczbę
wtórnych plików dziennika do tworzenia
– LOGFILSIZ: rozmiar pliku dziennika (po 4kB)
Przykład konfiguracji
LOGFILSIZ
=
250
LOGPRIMARY=
3
LOGSECOND =
2
LOGPATH
=
C:\mylogs\
• Zawartość c:\mylogs\
– 2005-10-24 07:40p
– 2005-10-24 07:40p
– 2005-10-24 07:40p
1,032,192 S0000000.LOG
1,032,192 S0000001.LOG
1,032,192 S0000002.LOG
Typy plików dziennika
• Aktywny - wtedy gdy:
– Zawiera transakcje nie zatwierdzone (commited) lub nie
wycofane (rolled back)
– Zawiera transakcje zatwierdzone ale jeszcze nie zapisane
w plikach bazy danych
• Bieżący archiwalny plik dziennika:
– Zawiera informacje dot. transakcji zatwierdzonych
zapisanych w plikach bazy danych
– Przechowywany w tym samym katalogu co aktywny plik
dziennika
• Archiwalny plik dziennika:
– Plik dziennika przechowywany w innym katalogu lub
urządzeniu
Rodzaje dzienników - Cykliczny
• Cykliczny dziennik (circular logging):
domyślny rodzaj dziennika
• Jeśli zostało zdefiniowanych 4 podstawowe
pliki dziennika (LOGPRIMARY=4) będą one
użyte następująco: log#1, log#2, log#3,
log#4, log#1, log#2...
• Plik dziennika może być ponownie użyty jeśli
nie jest w stanie aktywnym
• Jeśli transakcja wymaga więcej plików
dziennika niż zdefiniowano w
LOGPRIMARY, DB2 wykorzysta wtórny plik
dziennika (secondary log file)
Ilustracja – Cykliczny plik
dziennika
Rodzaje dzienników –
Przechowywany (retain)
• Plik dziennika nie może być użyty ponownie
• Po wykorzystaniu wszystkich plików dziennika są
one archiwizowane do innego katalogu lub
urządzeniu
• Należy inicjować taki rodzaj dziennika
– db2 update db cfg for database_name using
LOGRETAIN ON
– db2 update db cfg for database_name using USEREXIT
ON
• Userexits: programy pozwalające na przeniesienie
archiwalnych plików dziennika do innego katalogu
niż pliki aktywnego dziennika lub do innego
urządzenia
Ilustracja – Przechowywany
plik dziennika (retain)
Archiwizacja bazy
• Sporządza kompletną kopię bazy danych
• Zawiera informacje dot. przestrzeni tablicowych,
konfigurację bazy, dzienniki transakcji...
• Wymaga posiadania uprawnienia:
– SYSADM, SYSCTRL, SYSMAINT
• Składnia:
BACKUP DATABASE database-alias [USER username [USING
password]]
[TABLESPACE (tblspace-name [ {,tblspace-name} ... ])] [ONLINE]
[INCREMENTAL [DELTA]] [USE {TSM | XBSA} [OPEN num-sess
SESSIONS]] |
TO dir/dev [ {,dir/dev} ... ] | LOAD lib-name [OPEN num-sess
SESSIONS]]
[WITH num-buff BUFFERS] [BUFFER buffer-size] [PARALLELISM n]
[WITHOUT PROMPTING]
Przykład
• Archiwizacja bazy sample do katalogu
mybackups
BACKUP DATABASE sample TO d:\mybackups
• Archiwizacja z dodatkowymi parametrami
BACKUP DATABASE sample
TO /db2backup/dir1, /db2backup/dir2
WITH 4 BUFFERS
BUFFER 4096
PARALLELISM 2
• Archiwizacja w trybie online
BACKUP DATABASE sample ONLINE
TO /dev/rdir1, /dev/rdir2
//nazwa bazy
//lokalizacja
//liczba buforów
//rozmiar bufora
//liczba wątków
Archiwizacja przestrzeni
tablicowych
• Jeśli w bazie danych większe zmiany dotyczą
jedynie niektórych tablic można archiwizować
tylko wybranych przestrzeni tablicowych
• Składnia:
BACKUP DATABASE sample
TABLESPACE ( syscatspace, userspace1, userspace2 )
ONLINE TO /db2tbsp/backup1, /db2tbsp/backup2
Archiwa przyrostowe
• Dzielą się na 2 rodzaje
– Przyrostowy: DB2 archiwizuje wszystkie dane,
które zmieniły się od ostatniego pełnego archiwum
– Delta: DB2 archiwizuje dane, które zmieniły się od
ostatniego pełnego, przerostowego lub delta
archiwum
• Ilustracja
Wykorzystanie Control Center
Parametry backup’u
Nazwy plików archiwum
• Windows:
Alias
Nr katalogu
węzła
Instancja
Miesiąc Godzina Sekunda
DBALIAS.0\DB2INST\NODE0000\CATN0000\20051023\201050.001
Typ
Węzeł
Rok Dzień Minuta Nr
kolejny
• Unix/Linux
DBALIAS.0.DB2INST.NODE0000.CATN0000.20051023201050.001
Typ:
0: pełne archiwum
3: archiwum przestrzeni tablicowej
Dla nie partycjonowanej bazy zawsze NODE0000 i CATN0000
Odtwarzanie bazy
• Odtwarzanie bazy wykonuje się komendą
RESTORE
• Składnia:
RESTORE DATABASE source-database-alias { restore-options | CONTINUE |
ABORT }
Opcje:
[USER username [USING password]] [{TABLESPACE [ONLINE] |
TABLESPACE (tblspace-name [ {,tblspace-name} ... ]) [ONLINE] |
HISTORY FILE [ONLINE]}] [INCREMENTAL [AUTOMATIC | ABORT]]
[{USE {TSM | XBSA} [OPEN num-sess SESSIONS] |
FROM dir/dev [ {,dir/dev} ... ] | LOAD shared-lib
[OPEN num-sess SESSIONS]}] [TAKEN AT date-time] [TO target-directory]
[INTO target-database-alias] [NEWLOGPATH directory]
[WITH num-buff BUFFERS] [BUFFER buffer-size]
[DLREPORT file-name] [REPLACE EXISTING] [REDIRECT] [PARALLELISM n]
[WITHOUT ROLLING FORWARD] [WITHOUT DATALINK] [WITHOUT PROMPTING]
Przykład
(1)RESTORE DATABASE sample
(2) FROM C:\DBBACKUP
(3) TAKEN AT 20051023201050
(4) WITHOUT ROLLING FORWARD
(5) WITHOUT PROMPTING
• (1) nazwa bazy
• (2) źródło (miejsce archiwum)
• (3) data i czas wykonania archiwum
• (4) jeśli były wykorzystane archiwalne pliki dziennika, przy
odtwarzanie bazy jest ona automatycznie ustawiona w trybie
Rollforward recovery (rozszerzenie version recovery o
odzyskiwanie nie zapisanych zmian na podstawie zapisów w
plikach dziennika transakcji) – Tu rezygnacja z
ROLLFORWARD
• (5) bez potwierdzenia rozpoczęcia odtwarzania
Odtwarzanie przestrzeni
tablicowych
• Można odtworzyć z archiwum bazy lub przestrzeni
tablicowej
• Przykład:
(1) RESTORE DATABASE sample
(2) TABLESPACE ( mytblspace1 )
(3) ONLINE
(4) FROM /db2tbsp/backup1, /db2tbsp/backup2
• (3) online: umożliwia odtwarzania przestrzeni
tablicowej podczas pracy innych użytkowników.
W przypadku odtwarzania bazy opcja online jest
niedozwolona
Wykorzystanie Control Center
Parametry odtwarzania
Odtwarzanie bazy - Rollforward
• Pozwala na odtwarzanie bazy do wybranego
momentu czasu na podstawie zapisów
dziennika transakcji
• Podczas odtwarzania DB2:
– Szuka pliki dziennika w odpowiednich katalogach
– Ponownie wykona wszystkie transakcje z pliku
dziennika
• Wymaga uprawnienia: SYSADM, SYSCTRL,
SYSMAINT
• ROLLFORWARD dla bazy wykonywany jest
zawsze w trybie offline.
Przykłady
(1)ROLLFORWARD DATABASE sample TO END OF LOGS
AND COMPLETE
(2)ROLLFORWARD DATABASE sample TO timestamp AND
COMPLETE
(3)ROLLFORWARD DATABASE sample TO timestamp USING
LOCAL TIME AND COMPLETE
• (1) wykona odtwarzania bazy na podstawie
archiwalnych i aktywnych plików dziennika,
następnie wycofa wszystkich nie
zatwierdzonych transakcji
• (2) odtwarza bazę do określonego momentu
czasu (czas względem strefy czasowej)
• (3) jak (2) tylko dla lokalnego czasu
Odtwarzanie przestrzeni
tablicowych ROLLFORWARD
• Może się odbywać zarówno w trybie online
jak i offline za wyjątkiem tabeli systemowej
SYSCATSPACE
• Przykład:
ROLLFORWARD DATABASE sample
TO END OF LOGS AND COMPLETE
TABLESPACE ( userspace1 ) ONLINE
Wykorzystanie Control Center
Parametry odtwarzania
Obiekty w bazie
DB2-UDB
Typy danych
• Poza standardowymi typami danych (INTEGER,
CHAR, DATE) DB2 pozwala użytkownikom na
definiowanie własnych typów
• Wbudowane kategorie typów danych:
–
–
–
–
Numeryczny (Numeric)
Łańcuch znaków (String)
Data i czasu (Datetime)
Datalinks: do obsługi plików poza bazą
• Typy danych użytkownika
– Odmienny: typ danych oparty o wbudowanych typach
– Strukturalny: składa się z wielu kolumn typu
wbudowanego
– Referencyjny: wykorzystując typu strukturalnego można
zdefiniować referencje do wierszy innej tabeli za pomocą
typu referencyjnego
Typy numeryczne
• Integer:
– Smallint (2 bajty): -32,768 do 32,767
– Integer (4 bajty): -2,147,483,648 do
2,147,483,647
– Bigint (8 bajtów): -9,223,372,036,854,775,808 do
9,223,372,036,854,775,807
• Decimal(p,s) (p/2 + 1 bajtów)
– Decimal(10, 2) wymaga 6 bajtów
• Floating point
– Real (4 bajty)
– Double (8 bajtów)
Typy znakowe
• CHAR (CHARACTER): łańcuch znaków o określonej
długości (max. 254 bajty)
• VARCHAR: łańcuch znaków o zmiennej
długości(max 32,672 bajty)
• GRAPHIC: łańcuchy znaków dwubajtowych o
określonej długości (max. 127 znaków)
• VARCHARGRAPHIC: łańcuchy znaków
dwubajtowych o zmiennej długości (max. 16,336
znaków)
• Dodatkowe typy danych: LONG VARCHAR, CLOB
(character large object), LONG VARGRAPHIC,
DBCLOB (double byte CLOB), BLOB (Binary large
object)
Typ daty i czasu
•
•
•
•
DATE: przechowuje datę
TIME: przechowuje czas
TIMESTAMP: przechowuje datę i czas
Wszystkie te typy są przechowywane w bazie
w formacie wewnętrznym, aplikacje mogą
również operować na nie jako łańcuchy
znaków
• Wbudowane funkcje:
– DAYOFWEEK, DAYNAME, DAYS, CURRENT
DATE
Datalinks
• Typ DATALINK służy do obsługi plików
zewnętrznych
• Kolumna tabeli typu DATALINK pozwala na
przechowywanie referencji do pliku poza bazą
danych
• Plik zewnętrzny może być zapisany w tym
samym systemie plików co baza lub na
zdalnej maszynie
• Operowanie na danych tego typu wymaga
użycie wbudowanych funkcji (DLVALUE)
Typy danych użytkownika 1/3
• Odmienny (distinct type): zdefiniowane na
podstawie wbudowanych (standardowych)
typów DB2
• Przykład:
CREATE DISTINCT TYPE CANDOL AS
DECIMAL(10,2) WITH COMPARISONS
CREATE TABLE ITEMS (ITEMID CHAR(5),
PRICE CANDOL )
INSERT INTO ITEMS
VALUES('ABC11',CANDOL(30.50) )
Typy danych użytkownika 2/3
• Strukturalny: składa się z wielu kolumn typu
standardowego
• Np. definiujemy strukturę ADRES która
składa się z atrybutów: ulica, miasto, nr
domu ...
• Można tak zdefiniowaną strukturę użyć
przy definiowaniu struktury tabel
Typy danych użytkownika 3/3
• Referencyjny: wykorzystując typu
strukturalnego można zdefiniować
referencje do wierszy innej tabeli za
pomocą typu referencyjnego
Tabele
CREATE TABLE BOOKS ( BOOKID INTEGER,
BOOKNAME VARCHAR(100), ISBN CHAR(10) )
CREATE TABLE MYBOOKS LIKE BOOKS
CREATE TABLE MYBOOKS AS (SELECT * FROM BOOKS)
DEFINITION ONLY
DESCRIBE TABLE MYBOOKS
Tabele są przechowywane w przestrzeniach tablicowych
- Przestrzeń tablicowa musi być stworzona przed tworzeniem
tabeli
- Można określić jawnie w jakiej przestrzeni tablicowej ma być
stworzona tabela
CREATE TABLE BOOKS ( BOOKID INTEGER,
BOOKNAME VARCHAR(100),ISBN CHAR(10) )
IN BOOKINFO
Zmiana,usuwanie, NOT NULL,
DEFAULT, GENERATED
• ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)
• DROP TABLE BOOKS
• CREATE TABLE BOOKS ( BOOKID INTEGER NOT
NULL,BOOKNAME VARCHAR(100) WITH DEFAULT
'TBD',ISBN CHAR(10) )
• CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL
GENERATED ALWAYS AS IDENTITY (START WITH 1,
INCREMENT BY 1),BOOKNAME VARCHAR(100) WITH
DEFAULT 'TBD',ISBN CHAR(10) )
• CREATE TABLE AUTHORS (AUTHORID INTEGER NOT
NULL PRIMARY KEY, LNAME VARCHAR(100), FNAME
VARCHAR(100), FICTIONBOOKS INTEGER,
NONFICTIONBOOKS INTEGER, TOTALBOOKS INTEGER
GENERATED ALWAYS AS (FICTIONBOOKS +
NONFICTIONBOOKS) )
Integralność (Constraints)
• Unikalność: zapewnia unikalność wartości kolumn w tabeli
– CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY
KEY, BOOKNAME VARCHAR(100), ISBN CHAR(10) NOT NULL
CONSTRAINT BOOKSISBN UNIQUE )
• Więzy referencyjne:
– CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL
PRIMARY KEY, LNAME VARCHAR(100), FNAME VARCHAR(100))
– CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY
KEY, BOOKNAME VARCHAR(100), ISBN CHAR(10), AUTHORID
INTEGER REFERENCES AUTHORS)
– RESTRICT, NO ACTION, CASCADE, SET NULL
• Dla tabeli (table check constraints)
– ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK
(BOOKTYPE IN ('F','N') )
Widoki
•
•
•
•
•
Wsparcie dla INSERT, UPDATE, DELETE
Dodatkowy poziom kontroli dostępu
Użyteczny przy obsłudze danych historycznych
Są przechowywane w tabeli SYSIBM.SYSVIEWS,
Tabela SYSIBM.SYSVIEWS ma zdefiniowany widok:
SYSCAT.VIEWS
• CREATE VIEW NONFICTIONBOOKS AS SELECT * FROM
BOOKS WHERE BOOKTYPE = 'N'
• Tworzenie widoków z inną nazwą kolumn niż w tabeli
– CREATE VIEW MYBOOKVIEW (TITLE,TYPE) AS SELECT
BOOKNAME,BOOKTYPE FROM BOOKS
• Sprawdzenie poprawności danych
– CREATE VIEW NONFICTIONBOOKS AS SELECT * FROM BOOKS
WHERE BOOKTYPE = 'N' WITH CHECK OPTION
Indeksy
• Zapewniają unikalność wartości w
kolumnach
• Przyspieszają wykonanie zapytań
• Mogą być unikalne lub nieunikalne
• CREATE INDEX IBOOKNAME ON BOOKS
(BOOKNAME)
• CREATE INDEX I2BOOKNAME ON BOOKS
(AUTHOID DESC, BOOKNAME ASC)
• CREATE INDEX BIBOOKNAME ON BOOKS
(BOOKNAME) ALLOW REVERSE SCANS
Wyzwalacze
•
•
•
•
Wykonywane przed operacją
Wykonywane po operacji
Wykonywane zamiast operacji
Operacje: INSERT, DELETE, UPDATE

Podobne dokumenty