Upload
mrtomyli
View
24
Download
0
Embed Size (px)
DESCRIPTION
Download for free shere with all
Citation preview
6.12.2012
1
Obnova baze podataka
Tuzla, 05.12.2012. god.
Mr.sc. Emir Mekovi
Obnova baze podataka u sluaju razruenja Database Recovery
Dovesti bazu podataka u najnovije stanje za koje se pouzdano zna da je bilo ispravno
Velike baze podataka dijeljene, viekorisnike obavezno moraju posjedovati mehanizme obnove
Male, jednokorisnike baze podataka obino imaju malu ili uopte nemaju podrku obnovi obnova se preputa korisnikovoj odgovornosti
podrazumijeva se da korisnik periodino stvara backup kopiju te u sluaju potrebe obnavlja bazu runo.
2
6.12.2012
2
Uzroci razruenja
greke opreme
greke operativnog sistema
greke sistema za upravljanje bazama podataka
greke aplikacijskog programa
greke operatera
kolebanje izvora energije
poar, sabotaa, ...
3
Opte pravilo koje omoguava obnovu
Redundancija - svaki se podatak mora moi rekonstruisati iz nekih drugih informacija redundantno pohranjenih negdje drugo u sistemu (na traci, na drugom disku, na ogledalnom disku, ...):
ogledanje podataka (mirroring)
sigurnosne kopije (backup) - On-line backup
dnevnici izmjena
ponitavanje transakcija
ponovo obavljanje transakcija 4
6.12.2012
3
Opti opis postupka koji omoguava obnovu
Periodino kopiranje sadraja baze podataka na arhivski medij (traka) (1 dnevno, 1 sedmino - zavisno o uestalosti
promjena)
Svaka izmjena u bazi podataka evidentira se u logikom dnevniku izmjena (logical log, journal) stara vrijednost zapisa
nova vrijednost zapisa
korisnik, vrijeme,
izmjena se prvo zapisuje u dnevnik, a tek se onda provodi!
5
Kad nastane kvar ...
Baza je potpuno unitena
najsvjeija arhivska kopija
dnevnik izmjena - ponovo obavljanje izmjena koje su se dogodile u meuvremenu (nakon izrade arhive)
Baza nije unitena - sadraj je nepouzdan - program je prekinut tokom obavljanja niza logiki povezanih izmjena
vraanje na ispravno stanje - pomou dnevnika izmjena ponitavaju se sve nepouzdane izmjene
6
6.12.2012
4
Transakcija
jedinica rada nad bazom podataka
sastoji se od niza logiki povezanih izmjena
poetak transakcije - BEGIN WORK
zavretak transakcije:
COMMIT WORK - uspjean zavretak - potvrivanje transakcije
ROLLBACK WORK - neuspjean zavretak - ponitavanje transakcije - ponitavanje svih izmjena koje je obavila transakcija
7
Odreivanje granica transakcije
eksplicitno:
BEGIN WORK
.
COMMIT WORK ili ROLLBACK WORK
implicitno: svaka operacija izmjene u bazi podataka (npr. UPDATE naredba)
predstavlja transakciju, njezin uspjean zavretak COMMIT WORK, neuspjean zavretak predstavlja ROLLBACK WORK
transakcije se ne mogu ugnjeivati - jedna aplikacija u jednom asu moe imati samo jednu aktivnu transakciju
sve operacije obnove moraju se obavljati unutar granica transakcije 8
6.12.2012
5
Obavljanje transakcija
Dio sistema koji brine o obavljanju transakcija (transaction manager, transaction processing monitor TP monitor) osigurava zadovoljavanje svih poznatih pravila integriteta
9
Data
Log
Query Processor
Transaction Manager
Log Manager
Buffer Manager
Recovery Manager
Stanja transakcije
Aktivna (active) tokom izvoenja Djelimino zavrena (partially committed) nakon to je obavljena njezina
posljednja operacija Neispravna (failed) nakon to se ustanovi da nije mogue nastaviti njezino
normalno izvoenje Neuspjeno zavrena (aborted) nakon to su poniteni njezini efekti i baza
podataka vraena u stanje kakvo je bilo prije nego to je zapoela Potvrena (committed) uspjeno zavrena
10
Djelimino zavrena
Neispravna Neuspjeno
zavrena
Potvrena
Aktivna
Dijagram stanja transakcije
6.12.2012
6
Primjer transakcije
CREATE PROCEDURE prijenos (s_racuna INTEGER, na_racun INTEGER, iznos DECIMAL (8,2)) DEFINE pom_saldo DECIMAL (8,2); BEGIN WORK; UPDATE racun SET saldo = saldo iznos WHERE br_racun = s_racuna; UPDATE racun SET saldo = saldo + iznos WHERE br_racun = na_racun; SELECT saldo INTO pom_saldo FROM racun WHERE br_racun = s_racuna; IF pom_saldo < 0 THEN ROLLBACK WORK; ELSE COMMIT WORK; END IF END PROCEDURE
11
Potvrivanje transakcije
Taka potvrivanja (commit point) sve izmjene koje je transakcija napravila postaju permanentne (trajne)
Sve izmjene koje je transakcija napravila prije take potvrivanja mogu se smatrati tentativnima (privremenim tentative)
U taki potvrivanja otputaju se svi kljuevi Potvrena izmjena nikad ne moe biti ponitena sistem garantuje da e
njezine izmjene biti trajno pohranjene u bazi podataka, ak i ako kvar nastane ve u sljedeem trenutku
Ako kvar nastane nakon potvrivanja i prije nego to su izmjene iz memorijskih spremnika (buffer-a) prebaene u bazu podataka izmjene bi u trenutku kvara bile izgubljene, ALI: procedura za ponovo pokretanje provest e promjene u bazi podataka vrijednosti koje je potrebno zapisati u bazu podataka pronalaze se u
odgovarajuim zapisima u dnevniku izmjena dnevnik mora biti zapisan prije nego to zavri procedura potvrivanja
write-ahead log rule
12
6.12.2012
7
Osobine transakcije
ACID Atomicity - atomarnost - transakcija se mora obaviti u
potpunosti ili se uopte ne smije obaviti,
Consistency - konzistentnost - transakcijom baza podataka prelazi iz jednog konzistentnog stanja u drugo konzistentno stanje,
Isolation - izolacija - kada se paralelno obavljaju dvije ili vie transakcija, njihov efekat mora biti isti kao da su se obavljale jedna iza druge,
Durability - izdrljivost - ukoliko je transakcija obavila svoj posao, njezini efekti ne smiju biti izgubljeni ako se dogodi kvar sistema, ak i u situaciji kada se kvar desi neposredno nakon zavretka transakcije
13
Sa stanovita krajnjeg korisnika transakcija je nedjeljiva
ne zanima ga injenica da se moraju obaviti dvije operacije nad bazom podataka
Korisnik mora biti siguran da je zadatak obavljen potpuno i samo jednom!
14
6.12.2012
8
Dnevnik izmjena
15
Transakcija A
Transakcija B
Transakcija C
beginA A1 A2 commitA
beginB B1 commitB
beginC C1 C2 commitC
beginA beginB A1 B1 beginC C1 A2 commitB C2 commitA commitC
Tipovi greaka
1. Greke koje otkriva sama aplikacija
2. Greke unutar transakcije kojima aplikacija ne rukuje na eksplicitan nain (npr. preliv, dijeljenje s nulom)
3. Kvar raunarskog sistema - baza nije fiziki unitena
4. Kvar medija za pohranu - fiziki unitena baza
- sluajevi 1. i 2. ne smatraju se razruenjem 16
6.12.2012
9
Greke koje otkriva aplikacija
Sluajevi u kojima aplikacija predvia obavljanje naredbe ROLLBACK WORK Ponitavanje efekata transakcije Ponitavanje poruka
kao da transakcija nikad nije zapoela s radom ponitavanje poruka - brisanjem iz reda poruka
(poruke se ne ispisuju odmah, ve na kraju transakcije)
ponitavanje izmjena - pretragom dnevnika unazad - nova vrijednost zapisa zamjenjuje se sa starom vrijednou - sve dok se ne doe do poetka transakcije - BEGIN WORK
17
Greke koje ne otkriva aplikacija
ako se javi greka za koju nismo pretpostavili akciju - program zavri na neplanirani nain
u tim sluajevima ne postoji naredba ROLLBACK WORK ! Ponitavanje efekata transakcije, ponitavanje poruka
Primjer: pokuaj unosa zapisa iji klju ve postoji u bazi:
18
CREATE TABLE osoba ( mbr INTEGER, prezime CHAR(20), ime CHAR(20) PRIMARY KEY (mbr) );
BEGIN WORK; INSERT INTO osoba VALUES (1,Muji', Mujo'); INSERT INTO osoba VALUES (2,Husi', Huso'); INSERT INTO osoba VALUES (1,Fati', Fata'); INSERT INTO osoba VALUES (4,Hasi', Haso'); COMMIT WORK;
Greka!
6.12.2012
10
Dnevnik izmjena
19
Transakcija A
Transakcija B
Transakcija C
beginA A1 A2 commitA
beginB B1 commitB
beginC C1 C2 rollbackC
beginC C1 A2 commitB C2 commitA rollbackC undoC2 undoC1
Greke sistema
baza nije razruena - sve transakcije koje su se odvijale u vrijeme kvara moraju biti ponitene jer nisu kompletne!
pretraivanjem dnevnika od poetka identifikuju se transakcije za koje postoji BEGIN i ne postoji COMMIT ili ROLLBACK
takav postupak bi predugo trajao
uvode se kontrolne take (checkpoint)
u odreenim intervalima (obino svakih 5 minuta) odreuje se kontrolna taka
20
6.12.2012
11
Kontrolna taka
1. pohrana sadraja spremnika dnevnika (log buffer) u datoteku dnevnika
2. zapisivanje zapisa kontrolne take u datoteku dnevnika
3. pohrana sadraja spremnika baze podataka (database buffer) u bazu podataka
4. zapisivanje adrese zapisa kontrolne take iz datoteke dnevnika u datoteku za ponovno pokretanje (restart file)
Zapis kontrolne take sadri: listu svih aktivnih transakcija za svaku transakciju - adresu najnovijeg zapisa u datoteci
dnevnika 21
Primjer
22
vrijeme kontrolna
taka greka
sistema
T1
T2
T3
T4
T5
Transakcije T3 i T5 treba ponititi Transakcije T2 i T4 treba ponovo obaviti
6.12.2012
12
Proces obnove
Stvara se: lista za ponitavanje - na poetku sadri sve transakcije koje su
bile aktivne u kontrolnoj taki
lista za ponovo obavljanje - na poetku je prazna
Pretrauje se dnevnik od kontrolne take transakcija za koju se pronae BEGIN dodaje se u listu za
ponitavanje
transakcija za koju se pronae COMMIT prebacuje se iz liste za ponitavanje u listu za ponovo obavljanje
Ponovo se obavljaju transakcije iz liste za ponovo obavljanje
Ponitavaju se transakcije iz liste za ponitavanje
SUBP ne moe prihvatiti niti jedan zahtjev dok se ne zavri proces obnove! 23
Proces obnove
Logika ponovnog obavljanja
Uinak ponovnog obavljanja, bez obzira koliko se puta obavljalo mora biti isti kao da je operacija obavljena tano jednom!
redo (redo (redo ( ..redo(x)))) = redo (x)
Ponovo obavljanje = Obnova unaprijed (forward recovery)
Logika ponitavanja
Uinak ponitavanja, bez obzira koliko se puta obavljalo mora biti isti kao da je operacija obavljena tano jednom!
undo (undo (undo ( ..undo(x)))) = undo (x)
Ponitavanje = Obnova unazad (backward recovery) 24
6.12.2012
13
Kvarovi medija
baza je razruena - npr. zbog kvara diska obnova sadraja baze pomou najnovije arhivske kopije
pomou najnovijeg dnevnika obavljaju se transakcije koje su bile provedene od trenutka arhiviranja
ako je najnovija arhivska kopija pokvarena uzima se predzadnja arhivska kopija
dnevnik izmjena od predzadnje arhive do zadnje arhive
dnevnik izmjena nastalih nakon zadnje arhive
Preporuke: uvati najmanje tri posljednje arhive i pripadne dnevnike
dnevnik se ne nalazi na istom disku na kojem je baza podataka 25
Ciklika izmjena logikih dnevnika
odreuje se broj dnevnika koji e se koristiti
im se jedan dnevnik popuni - kopira se na traku dnevnik se mora nalaziti na disku sve dok su
transakcije sadrane u njemu aktivne (da bi se omoguio ROLLBACK )
26
LOG1 LOG2 LOG3 LOG4
LOG1 LOG2 LOG3 LOG4
6.12.2012
14
Ciklika izmjena logikih dnevnika
U sluaju da su svi dnevnici puni - obustavljaju se sve akcije i sistem eka da se napravi sigurnosna kopija vremenski preduge transakcije, prevelike transakcije
kad su dnevnici popunjeni npr. 70% - prvi znak za uzbunu (Long Transaction High Water Mark) sistem ne prihvaa nove transakcije
kad su dnevnici popunjeni npr. 85 ili 90% - drugi znak za uzbunu (Long Transaction Exclusive Access High Water Mark) - sve aktivne transakcije se ponitavaju
Kod pogreke medija koristi se arhivska kopija + dnevnici s traka
27
Obnova uz zadovoljenje zahtjeva za visokim stepenom dostupnosti
ogledanje podataka (mirroring)
arhiviranje tokom obavljanja transakcija (online backup)
inkrementirano arhiviranje
fiziki dnevnik (physical log)
28
6.12.2012
15
Ogledanje
slika podataka u ogledalu (mirror)
promjene se provode istovremeno u primarnom i ogledalnom podruju
u sluaju pogreke u jednom od podruja nastavak rada na ispravnom podruju
nalog za ponovo kreiranje (popravljanje) ogledalnog podruja
ogledanje pod kontrolom hardware-a RAID - Redundant Arrays of Inexpensive Disks (Level 1
ogledalni disk, Level 4 - n diskova za podatke + 1 ogledalni disk, ...
ogledanje pod kontrolom SUBP-a 29
Arhiviranje
On-line arhiviranje (On-line Backup) stvaranje arhivske kopije tokom rada korisnika izvoenja
transakcija
stanje baze podataka pohranjeno u arhivskoj kopiji odgovara stanju kakvo je bilo u trenutku pokretanja arhiviranja
Inkrementirano arhiviranje arhiviranje baze podataka dodatno optereuje sistem i usporava
rad korisnika
eli se skratiti trajanje i obim arhiviranja
inkrementirano arhiviranje arhive razliitog nivoa: nivo 0 kopija itave baze podataka npr. jednom mjeseno
nivo 1 sedmina arhiva sadri promjene nastale nakon arhive nivoa 0
nivo 2 dnevna arhiva - sadri promjene nastale nakon arhive nivoa 1 30
6.12.2012
16
Inkrementirano arhiviranje
31
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 01
arhiva nivoa 0
arhiva nivoa 1
arhiva nivoa 2
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18
Ako se 18. decembra desi kvar na disku
Obnova: 1. Arhiva nivoa 0 od 1. decembra 2. Arhiva nivoa 1 od 15. decembra 3. Arhiva nivoa 2 od 17. decembra 4. Logiki dnevnik koji je zapoeo nakon arhive nivoa 2 od 17. decembra
Mjesec decembar:
Fiziki dnevnik
stvara se nakon kontrolne take
pohranjuju se kopije stranica s diska (iz baze podataka) prije obavljanja izmjena (Before Image)
omoguava rekonstrukciju stanja u bazi podataka kakvo je bilo u posljednjoj kontrolnoj taki prije pogreke
ostvaruje se fizika konzistentnost podataka
Kod ponovog pokretanja sistema: provjerava se postoji li neki sadraj u fizikom dnevniku ako
postoji - bilo je izmjena nakon posljednje kontrolne take - pokree se brza obnova: sve stranice fizikog dnevnika pohranjuju se na svoje lokacije
obavljaju se izmjene iz logikog dnevnika poevi od kontrolne take, ponitavaju se transakcije koje nisu zavrile prije pogreke
32
6.12.2012
17
33
Baza podataka
123 Damir Piri 234 Maja uri 345 Dino Peji 456 Ema Mei 567 Goran Mari
123 Deni 15111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
123 Damir Piri 234 Maja uri 345 Dino Peji 456 Ema Mei 567 Goran Mari
123 Damir Piri 234 Maja uri 345 Dino Peji 456 Ema Mei 567 Goran Mari
123 Damir Piri 234 Maja uri 345 Dino Peji 456 Ema Mei 567 Goran Mari
Tabele: osoba(mbr, ime, prez) dijete(mbr, imedj, datrod)
Nakon neke kontrolne take fiziki dnevnik je prazan
123 Deni 15111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
123 Deni 15111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
123 Deni 15111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
123 Deni 15111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
34
Baza podataka
123 Damir Piri 234 Maja uri 345 Dino Peji 456 Ema Mei 567 Goran Mari
123 Deni 15111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
123 Demir Piri 234 Maja uri 345 Dinko Peji 456 Ema Mei 567 Goran Mari
Tabele: osoba(mbr, ime, prez) dijete(mbr, imedj, datrod)
Prije svake izmjene stranica na kojoj e doi do promjene kopira se u datoteku fizikog dnevnika (struktura stack LIFO)
123 Deni 15111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
123 Deni 15111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
123 Deni 10111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
UPDATE osoba set ime = Damir' WHERE mbr = 123; UPDATE dijete set datrod = '15.11.1999' WHERE mbr = 123 and imedj = Deni'; UPDATE osoba set ime = Dino' WHERE mbr = 345;
123 Demir Piri 234 Maja uri 345 Dinko Peji 456 Ema Mei 567 Goran Mari
123 Deni 10111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
123 Damir Piri 234 Maja uri 345 Dinko Peji 456 Ema Mei 567 Goran Mari
123 Demir Piri 234 Maja uri 345 Dinko Peji 456 Ema Mei 567 Goran Mari
123 Demir Piri 234 Maja uri 345 Dinko Peji 456 Ema Mei 567 Goran Mari
123 Damir Piri 234 Maja uri 345 Dinko Peji 456 Ema Mei 567 Goran Mari
123 Damir Piri 234 Maja uri 345 Dino Peji 456 Ema Mei 567 Goran Mari
123 Deni 10111999 123 Jasna
14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
123 Deni 15111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
6.12.2012
18
35
Baza podataka
123 Damir Piri 234 Maja uri 345 Dino Peji 456 Ema Mei 567 Goran Mari
123 Deni 15111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
123 Damir Piri 234 Maja uri 345 Dino Peji 456 Ema Mei 567 Goran Mari
123 Damir Piri 234 Maja uri 345 Dino Peji 456 Ema Mei 567 Goran Mari
123 Demir Piri 234 Maja uri 345 Dinko Peji 456 Ema Mei 567 Goran Mari
Tabele: osoba(mbr, ime, prez) dijete(mbr, imedj, datrod)
Obnova stranice iz fizikog dnevnika kopiraju se u bazu podataka
123 Deni 15111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
123 Deni 15111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
123 Deni 15111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
123 Deni 10111999
123 Jasna 14032002
234 Maja 28122001
234 Denis 17102004 234 Irma 03012002
123 Demir Piri 234 Maja uri 345 Dino Peji 456 Ema Mei 567 Goran Mari
123 Deni 10111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
123 Damir Piri 234 Maja uri 345 Dinko Peji 456 Ema Mei 567 Goran Mari
123 Damir Piri 234 Maja uri 345 Dinko Peji 456 Ema Mei 567 Goran Mari
123 Damir Piri 234 Maja uri 345 Dino Peji 456 Ema Mei 567 Goran Mari
123 Deni 15111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
36
Baza podataka
123 Damir Piri 234 Maja uri 345 Dino Peji 456 Ema Mei 567 Goran Mari
123 Deni 15111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
123 Damir Piri 234 Maja uri 345 Dino Peji 456 Ema Mei 567 Goran Mari
123 Damir Piri 234 Maja uri 345 Dino Peji 456 Ema Mei 567 Goran Mari
123 Demir Piri 234 Maja uri 345 Dinko Peji 456 Ema Mei 567 Goran Mari
Tabele: osoba(mbr, ime, prez) dijete(mbr, imedj, datrod)
Nakon zavretka kopiranja sadraja iz datoteke fizikog dnevnika u bazu podataka sadraj baze podataka je vraen u stanje kakvo je bilo u kontrolnoj toci
123 Deni 15111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
123 Deni 15111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
123 Deni 15111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002
123 Deni 10111999 123 Jasna 14032002 234 Maja 28122001 234 Denis 17102004 234 Irma 03012002