Muutosten kirjaaminen on DBMS - ominaisuus , joka tallentaa tiedot, joita tarvitaan tietokannan palauttamiseksi aiempaan yhdenmukaiseen tilaan loogisten tai fyysisten vikojen sattuessa.
Yksinkertaisimmassa tapauksessa muutosloki koostuu kaikkien tietokantaan tehtyjen muutosten peräkkäisestä kirjoittamisesta ulkoiseen muistiin . Seuraavat tiedot tallennetaan:
Tällä tavalla luotua tietoa kutsutaan tietokannan muutoslokiksi . Loki sisältää tapahtuman aloitus- ja lopetusmerkit sekä tarkistuspisteiden hyväksymismerkit (katso alla).
Takaisinkirjoitettavassa DBMS:ssä ulkoisen muistin tietolohkot merkitään viimeisimmän kyseiselle tietolohkolle tehdyn muutoksen järjestysnumerolla. Järjestelmävian sattuessa tämän merkin avulla voit selvittää, mikä tietolohkon versio onnistui saavuttamaan ulkoisen muistin.
Palautettava DBMS suorittaa tarkistuspisteitä ajoittain. Tämän prosessin aikana kaikki kirjoittamattomat tiedot siirretään ulkoiseen muistiin ja lokiin kirjoitetaan tarkistuspisteen hyväksymismerkki. Tämän jälkeen ennen tarkistuspistettä kirjoitetun lokin sisältö voidaan poistaa.
Muutoslokia ei saa kirjoittaa suoraan ulkoiseen muistiin, vaan se kertyy toimintamuistiin. Jos tapahtuma vahvistetaan, DBMS odottaa, että loput lokista kirjoitetaan ulkoiseen muistiin. Siten on taattu, että kaikki vahvistussignaalin jälkeen syötetyt tiedot siirretään ulkoiseen muistiin odottamatta kaikkien muuttuneiden lohkojen uudelleenkirjoittamista levyvälimuistista . DBMS odottaa, että loput lokista kirjoitetaan samalla tavalla tarkistuspisteen suorittamisen yhteydessä.
Logiikkavian tai yhden tapahtuman palautussignaalin sattuessa loki skannataan taaksepäin ja kaikki peruutetun tapahtuman tietueet haetaan lokista tapahtuman alkuun. Poimittujen tietojen mukaan suoritetaan toimenpiteitä, jotka peruuttavat tapahtuman toiminnot, ja kompensoivat merkinnät kirjoitetaan lokiin . Tätä prosessia kutsutaan palautukseksi .
Fyysisen vian sattuessa , jos loki tai itse tietokanta ei ole vaurioitunut, suoritetaan eteenpäinsiirtoprosessi . Loki skannataan eteenpäin, alkaen edellisestä tarkistuspisteestä. Kaikki tietueet haetaan lokista lokin loppuun. Lokista haettu tieto syötetään ulkoisiin muistitietolohkoihin, joiden muutosnumeromerkki on pienempi kuin lokiin tallennettu. Jos ajo epäonnistuu uudelleen, lokin tarkistus alkaa uudelleen alusta, mutta palautus jatkuu siitä mihin se jäi.
Vikasietokyvyn lisäämiseksi DBMS voi kirjoittaa useita identtisiä kopioita muutoslokista samanaikaisesti. Jos jokin lokin kopio ei ole käytettävissä vian sattuessa, DBMS palauttaa tietokannan käyttämällä mitä tahansa saatavilla olevista kopioista. Tätä strategiaa kutsutaan muutoslokin multipleksoinniksi .
Pääsääntöisesti muutosloki kirjoitetaan ensin päälle heti, kun sille varattu ulkoinen muistitila loppuu. Näin voit palauttaa tietokannan ajan tasalla olevaan ja yhdenmukaiseen tilaan, mutta vain, jos itse tietokanta ei katoa, vaikka se ei olisikaan ajan tasalla.
Joissakin tietojärjestelmissä palautus on kuitenkin taattava, vaikka koko tietokanta katoaisi. Tällaisissa järjestelmissä tietokanta varmuuskopioidaan ajoittain ja muutosloki jaetaan peräkkäisiin segmentteihin ja arkistoidaan. Ennen varmuuskopioinnin aloittamista suoritetaan tarkistuspiste ja loki jaetaan segmentteihin, jotka on kirjoitettu ennen varmuuskopioinnin aloittamista ja sen jälkeen. Varmuuskopiointiprosessin lopussa kaikki ennen varmuuskopioinnin aloittamista kirjoitetut muutoslokit poistetaan. Näin ollen varmuuskopiolla ja kaikilla varmuuskopioinnin jälkeen arkistoiduilla muutoslokeilla tietokanta voidaan palauttaa ajan tasalla olevaan tilaan, vaikka kaikki tietolohkot olisivat kadonneet.
Kaikki todelliset DBMS:t eivät noudata klassista muutoslokin toteutusmallia, osittain tehokkuussyistä.
Oracle Database käyttää kahden tyyppisiä muutoslokeja: syklistä online-uudelleentoimituslokia ( redo log ) ja arkistoitua toistolokia ( arkistoloki ), joihin ensimmäisen lokin tietueet siirretään, kun ensimmäinen käy läpi täyden syklin. Molemmat lokit kirjoitetaan pysyvälle medialle, tiedot toiminnasta pääsevät online-lokiin sillä hetkellä ennen kuin tiedot sitoutuvat haihtumattomalle medialle, arkistoloki toimii vain erityisessä tietokannan lokiarkistointia tukevassa tilassa ( archivelog ). Muutoslokien tietoja ei käytetä tapahtuman palauttamiseen, vaan niitä käytetään palautukseen. Järjestelmänvalvoja suorittaa palautusprosessin käyttämällä tietokannan varmuuskopiota ja arkistointi- ja uudelleenlokien peräkkäistä sovellusta siihen.
Palautustiedot ( peruutusloki ) on ryhmitelty palautussegmentteihin , joita ylläpitää erityinen taulukkotila . Nämä tiedot myös kirjataan uudelleen, eli ne on suojattu samalla tavalla kuin muut tietokannan tiedot. Peruutustapauksessa lokia käytetään muokattavan tapahtuman tietueen palauttamiseen . Lisäksi uudelleenkirjoituslokin tietoja käytetään säilyttämään lukemisen eheys , jotta päästään käsiksi noutohetkellä otetun datan tilannekuvaan [1] .
Informix DBMS:ssä muutosloki on levytila, joka on jaettu osiin, joita kutsutaan tapahtumalokitiedostoiksi (näillä tiedostoilla ei ole mitään tekemistä tiedostojärjestelmän tiedostojen kanssa) tai looginen loki . Se, kirjoitetaanko muutokset tähän lokiin, riippuu siitä, onko tietokanta ei-journaled-, puskuroitu-loki- vai puskuroimaton-lokitilassa. Kaikki muutokset menevät ensin loogisiin lokipuskureihin, ja sitten ne huuhdellaan tapahtumalokiin tietokannan lokitilasta riippuen.
Vian sattuessa palautumista varten ns. fyysinen päiväkirja , johon sivukuvat kopioidaan ennen niiden muokkaamista. Palvelinvian sattuessa sitomattomat tiedot palautetaan käynnistyksen aikana.
Tietokanta | |
---|---|
Käsitteet |
|
Objektit |
|
Avaimet | |
SQL | |
Komponentit |