A változásnaplózás egy DBMS -szolgáltatás , amely logikai vagy fizikai hibák esetén tárolja az adatbázis korábbi konzisztens állapotának visszaállításához szükséges információkat .
A legegyszerűbb esetben a változásnaplózás abból áll, hogy az adatbázisban végrehajtott összes változást egymás után a külső memóriába írják. A következő információkat rögzítik:
Az így keletkezett információkat adatbázis - változási naplónak nevezzük. A napló tartalmazza a tranzakció kezdeti és befejezési jeleit, valamint az ellenőrzőpontok elfogadási jeleit (lásd alább).
Egy visszaírható DBMS -ben a külső memória adatblokkjai az adott adatblokkon végrehajtott legutóbbi módosítás sorszámával vannak címkézve. Rendszerhiba esetén ez a jelölés lehetővé teszi, hogy megtudja, hogy az adatblokk melyik verziója sikerült elérnie a külső memóriát.
A visszaírható DBMS időszakonként ellenőrzési pontokat hajt végre. A folyamat során minden íratlan adat átkerül a külső memóriába, és a naplóba egy ellenőrzőpont-elfogadási jel kerül. Ezt követően az ellenőrzőpont előtt írt napló tartalma törölhető.
A változásnapló nem írható közvetlenül a külső memóriába, hanem a működési memóriában halmozódik fel. A tranzakció megerősítése esetén a DBMS megvárja, hogy a napló többi része a külső memóriába kerüljön. Így garantált, hogy a megerősítő jel után bevitt összes adat a külső memóriába kerül, anélkül, hogy megvárná az összes megváltozott blokk újraírását a lemez gyorsítótárából . A DBMS az ellenőrzési pont végrehajtása során ugyanúgy várja a napló többi részének írását.
Logikai hiba vagy egy tranzakció visszaállítási jele esetén a naplót visszafelé vizsgálja, és a visszagörgetett tranzakció összes rekordját lekéri a naplótól egészen a tranzakció kezdetéig. A kinyert információk szerint olyan műveletek kerülnek végrehajtásra, amelyek megszakítják a tranzakció műveleteit, és kompenzációs bejegyzések kerülnek a naplóba . Ezt a folyamatot visszagörgetésnek nevezzük .
Fizikai hiba esetén , ha sem a napló, sem maga az adatbázis nem sérült, akkor a görgetési folyamat végrehajtásra kerül . A naplót előrefelé szkenneljük, az előző ellenőrzőponttól kezdve. Minden rekord lekérésre kerül a naplótól egészen a napló végéig. A naplóból lekért információk olyan külső memória adatblokkokba kerülnek, amelyeknek a változási számjel kisebb, mint a naplóban rögzítetté. Ha a futtatás ismét meghiúsul, a naplóvizsgálat újraindul elölről, de a helyreállítás valójában ott folytatódik, ahol abbahagyta.
A hibatűrés növelése érdekében a DBMS egyszerre több azonos másolatot is írhat a változásnaplóból. Ha meghibásodás esetén a napló egyik példánya elérhetetlenné válik, a DBMS a rendelkezésre álló másolatok bármelyikével visszaállítja az adatbázist. Ezt a stratégiát changelog multiplexelésnek nevezik .
Általános szabály, hogy először a változásnapló kerül felülírásra, amint a számára lefoglalt külső memória elfogy. Ez lehetővé teszi az adatbázis naprakész és konzisztens állapotának visszaállítását , de csak akkor, ha maga az adatbázis nem veszett el, még ha nem is naprakész.
Egyes információs rendszerekben azonban a teljes adatbázis elvesztése esetén is garantálni kell a helyreállítást. Az ilyen rendszerekben az adatbázisról rendszeres időközönként biztonsági mentés készül, a változásnapló pedig egymást követő szegmensekre van felosztva és archiválva. A biztonsági mentés megkezdése előtt egy ellenőrzési pontot hajtanak végre, és a naplót a mentés megkezdése előtt és után írt szegmensekre osztják. A biztonsági mentési folyamat végén a mentés megkezdése előtt írt összes változásnapló törlődik. Így egy biztonsági mentéssel és az összes archivált változásnaplóval a mentés óta az adatbázis akkor is visszaállítható a naprakész állapotba, ha minden adatblokk elveszett.
Nem minden valódi DBMS követi a klasszikus változásnapló megvalósítási sémát, részben hatékonysági okokból.
Az Oracle Database kétféle változásnaplót használ: egy ciklikus online újraindítási naplót ( redo log ) és egy archivált újraindítási naplót ( archívum napló ), amelyben az első napló rekordjai átvitelre kerülnek, amikor az első egy teljes cikluson megy keresztül. Mindkét napló állandó adathordozóra íródik, a művelettel kapcsolatos adatok az adatok nem felejtő adathordozóra történő véglegesítése előtt kerülnek be az online naplóba, az archív napló csak az adatbázis naplóarchiválást támogató speciális módban ( archivelog ) működik. A változásnaplókból származó információk nem a tranzakció visszaállítására, hanem helyreállításra szolgálnak. A visszaállítási folyamatot az adminisztrátor hajtja végre egy adatbázis-mentés, valamint az archiválási és újraindítási naplók egymás utáni alkalmazásával.
A visszagörgetési információk ( visszavonási napló ) visszagörgetési szegmensekbe vannak csoportosítva, amelyeket egy speciális táblaterület tart fenn. Ezek az adatok szintén újranaplózásra kerülnek, vagyis ugyanúgy védettek, mint az adatbázisban lévő többi adat. Visszaállítás esetén a napló a módosított tranzakció rekordjának visszaállítására szolgál . Ezenkívül az újraindítási naplóból származó információk az olvasási integritás fenntartására szolgálnak, hogy hozzáférést biztosítsanak a lekéréskor készített adatok pillanatképéhez [1] .
Az Informix DBMS-ben a változásnapló egy lemezterület, amelyet tranzakciós naplófájloknak (ezeknek semmi közük a fájlrendszeren lévő fájlokhoz) vagy logikai naplónak nevezett részekre osztanak . Az, hogy a változtatások beírásra kerülnek-e ebbe a naplóba, attól függ, hogy az adatbázis nem naplózott, pufferelt-naplózott vagy nem pufferelt-naplózott módban van-e. Minden módosítás először a logikai napló puffereibe kerül, majd az adatbázis naplózási módjától függően a tranzakciós naplóba kerül.
Meghibásodás esetén történő helyreállításra az ún. a fizikai napló , amelybe az oldalképeket a módosítás előtt másolják. Szerver meghibásodása esetén a nem véglegesített adatok az indítás során visszaállnak.
Adatbázis | |
---|---|
Fogalmak |
|
Objektumok |
|
Kulcsok | |
SQL |
|
Alkatrészek |