Zalohovaci software - testovanie

Karel Zak zakkr na zf.jcu.cz
Pondělí Srpen 9 15:21:37 CEST 2004


On Sat, Jul 24, 2004 at 06:09:47AM +0200, Chlopcik Ales wrote:
> Bez zastavovani je TO loterie (v nekterych firmach i ruska ruleta), se
> zastavenim je TO jistota. Zastavenim SRDB dostanu soubory do
> konzistentniho stavu.
> 	U nekterych SRDB by mohlo stacit prevedeni do ReadOnly (myslim u
> Oracle, ale otestovano nemam).

 Takto snad nikdo rozumne  zadne DB nezalohuje. Ono pravidelne zastaveni
 nebo prevod do read-only muze byt  v rade aplikacich znacne nezadouci a
 tedy nepouzitelne. Prave proto vetsina transakcnich DB obsahuje nastroj
 ktery v ramci bezne transakce udela jeji dump nebo nastroje pouzivajici
 nejaky kontinualne se tvorici log (ktery se pise treba na pasku, apod).
 
 To o  cem je  tato debata je  daleko vice o  odolnosti DB  proti jejimu
 nasilnemu  ukonceni a  naslednemu  oziveni (recovery)  --  coz je  stav
 kteremu  _muze_ odpovidat  udelani  snapshot disku. Pad  DB (i  vlastni
 chybou) je pochopitelne  neco co by mela dobra implementace  DB resit a
 byt  na to  pripravena  a zarucit,  ze po  uspesnem  startu budou  data
 odpovidat datovemu  modelu (coz  neznamena, ze  o nejaka  data nemuzete
 prijit).

On Tue, Jul 27, 2004 at 06:02:59AM +0200, Chlopcik Ales wrote:
> Pavel Kankovsky wrote:
> > On Mon, 26 Jul 2004, Chlopcik Ales wrote:
> > 
> > > Ja tvrdim, ze transakce vyvolava VICE nez jeden zapis do databazovych
> > > souboru => jsem schopen se pri vytvareni klonu/kopie/... trefit mezi
> > > dva zapisy teze transakce.
> > 
> > Vyse je popsano, proc by to pri rozumnem navrhu nemelo vadit. Soubory sice
> > muzou byt nekonzistentni, ale existuje jednoduchy a spolehlivy zpusob, jak
> > jejich nekonzistenci behem startu db detekovat a opravit.
> 
> 	Muzete mi rict, kde ma treba MySQL RedoLogy ?

 Vsak se take mluvilo o rozumnych implementacich :-))) 
 
 Asi by bylo  presnejsi nemluvit o tom, ze odolnost  proti padu zarucuji
 transakce,  ale rozumny  postup jak  zapisovat do  datovych souboru  DB
 (prostrednictvim  kontrolniho logu). DB  take vetsinou  nemanipuluji na
 urovni souboru  s daty  jen bezici  transakce, ale  s bloky  dat, ktere
 obsahuji zaznamy  i nekolika transakci  a treba i ruzne  verze stejnych
 dat.

 Pro zajimavost starsi verze PostgreSQL  (6.5 apod.) maji transakce, ale
 jistota,  ze DB  rozumne nastartuje  po "kill  -9" tam  prave z  duvodu
 neexistence logu neni.

 DB bych  asi snapshotem  disku nezalohoval  protoze tim  DB pridelavate
 praci  a  dostavate daleko  hure  prenositelnou  zalohu nez  v  pripade
 pouziti nejakeho k tomu urceneho nastroje.
 
 Pak jeste  snad poznamka  -- sekvencne udelany  snapshot disku  neni to
 same jako  pad DB kdy  se vse  najednou zastavi. Pokud se  vse najednou
 zastavi  tak  podle  logu  lze najit  posledni  platnou  operaci. Pokud
 sekvence  zalohujete soubory  tak dle  logu posledni  platna operace  v
 datovem souboru byt  nemusi, protoze se zalohoval  davno pred logem. To
 znamena, ze u velmi velkych  DB v pripade sekvencniho zalohovani muzete
 prijit o daleko vice dat nez pokud na tu samou DB aplikujete SIGKILL.
 Pochopitelne DB by mela rozdychat oboje i kdyz z ruznyma nasledkama.

    Karel

-- 
 Karel Zak  <zakkr na zf.jcu.cz>
 http://home.zf.jcu.cz/~zakkr/


Další informace o konferenci Linux