Model obnovy databáze


Samotné nastavení modelu obnovy databáze neřeší problém ztráty dat při výpadku. Je nutné nastavit s komplexním plánem zálohování dat. 





SQL Server používá model obnovy k určení způsobu, jakým zaznamenává změny provedené v databázi a jaké možnosti jsou následně k dispozici při obnově databáze.

Nastavení modelu obnovy je důležitou součástí strategie zálohování. Samotný model obnovy však není záloha a jeho nastavení nezajistí ochranu dat bez pravidelně vytvářených záloh.

  • SQL Server nabízí tři modely obnovy:
  • Jednoduchý (Simple)
  • Úplný (Full)
  • Hromadně protokolovaný (Bulk-logged)


Jednoduchý model

Jednoduchý model je určen pro databáze, u kterých není požadována možnost obnovit databázi do libovolného okamžiku mezi jednotlivými úplnými nebo rozdílovými zálohami.

SQL Server při tomto modelu automaticky uvolňuje část prostoru používaného pro zaznamenávání změn databáze, jakmile již není pro běžný provoz potřeba. Díky tomu není nutné samostatně spravovat zálohy záznamu změn.


Jak probíhá zálohování

Databázi lze zálohovat například:

  • úplnou zálohou,
  • rozdílovou zálohou.


Neprovádějí se zde běžné zálohy záznamu změn databáze (tzv. transaction log backups).

Představme si například, že se úplná záloha vytvoří každý večer ve 23:00.

Pokud dojde druhý den v 15:00 k poruše databázového serveru, poslední dostupná úplná záloha je z předchozího večera. Změny provedené mezi 23:00 a 15:00 není možné pomocí tohoto modelu samostatně obnovit.


Riziko ztráty dat

U jednoduchého modelu je proto nutné počítat s tím, že při havárii může dojít ke ztrátě změn provedených od poslední použitelné zálohy.

Čím méně často se databáze zálohuje, tím větší může být případná ztráta dat.


Výhody

  • jednoduchá správa,
  • není nutné pravidelně zálohovat záznam změn,
  • záznam změn se za běžných okolností automaticky uvolňuje,
  • vhodné pro méně kritické databáze.


Nevýhody

  • nelze provádět zálohy záznamu změn,
  • nelze databázi běžným způsobem obnovit do konkrétního okamžiku,
  • při havárii může dojít ke ztrátě změn od poslední zálohy.



Úplný model

Úplný model je určen pro databáze, u kterých je důležité minimalizovat množství dat, která mohou být při havárii ztracena.

SQL Server v tomto režimu uchovává podrobné informace o změnách databáze. Ty lze následně pravidelně zálohovat.

Kromě úplných a rozdílových záloh je proto možné vytvářet také zálohy záznamu změn databáze.


Jak to funguje

Představme si například tento plán zálohování:

  • každou neděli ve 23:00 úplná záloha,
  • každý den ve 23:00 rozdílová záloha,
  • každých 15 minut záloha záznamu změn.


Pokud dojde ve středu v 14:37 k poruše serveru, lze při správně provedených zálohách obnovit databázi až do okamžiku těsně před poruchou. Díky tomu nemusí být ztracena například celá dopolední práce uživatelů.


Obnova do konkrétního okamžiku

Úplný model umožňuje při správně vytvořených zálohách také obnovu databáze do konkrétního okamžiku. To je užitečné například v situaci, kdy uživatel omylem odstraní větší množství dat.

Pokud existují potřebné zálohy, lze databázi obnovit do stavu před provedením této operace. Je však důležité si uvědomit, že SQL Server neumí obnovit data „z ničeho“. Možnost takové obnovy závisí na tom, zda byly v minulosti skutečně vytvořeny všechny potřebné zálohy. 


Důležitý dopad na velikost souboru databáze

U úplného modelu SQL Server průběžně zapisuje změny do tzv. transakčního protokolu (transaction log). Tento soubor může růst, pokud se záznam změn pravidelně nezálohuje.

Například pokud je databáze nastavena na úplný model, ale administrátor vytvoří pouze jednou za týden úplnou zálohu a vůbec nezálohuje transakční protokol, může jeho soubor postupně narůstat a zabírat značné množství místa na disku. Samotné nastavení databáze na úplný model tedy nestačí. Pokud je použit úplný model, musí být zároveň správně nastaveno pravidelné zálohování transakčního protokolu. 


Výhody

  • možnost pravidelných záloh transakčního protokolu,
  • možnost obnovy databáze do konkrétního okamžiku,
  • možnost výrazně omezit ztrátu dat při havárii,
  • vhodné pro důležité provozní databáze.


Nevýhody

  • složitější správa zálohování,
  • nutnost pravidelně zálohovat transakční protokol,
  • při nesprávném nastavení může transakční protokol výrazně narůstat,
  • vyžaduje dostatek prostoru pro zálohy.



Hromadně protokolovaný model

Hromadně protokolovaný model je speciální režim určený především pro situace, kdy je potřeba provádět rozsáhlé operace s velkým množstvím dat.

Při některých operacích SQL Server nemusí zapisovat do transakčního protokolu všechny jednotlivé změny stejně podrobně jako v úplném modelu. Díky tomu může být například hromadné načítání velkého množství dat výrazně efektivnější.

Tento model se používá především ve specifických provozních situacích, například při některých rozsáhlých importech, údržbě nebo přesunech dat.


Omezení

Hromadně protokolovaný model má některá omezení oproti úplnému modelu. Především některé operace nelze následně obnovit na úroveň jednotlivých změn stejným způsobem jako při úplném modelu. Proto není vhodné tento model používat jen proto, že se zdá být „rychlejší“. Jeho použití by mělo být součástí promyšlené strategie zálohování a správy databáze.


Výhody

  • může výrazně snížit množství zapisovaných informací při některých rozsáhlých operacích,
  • může zrychlit některé hromadné operace,
  • umožňuje zálohování transakčního protokolu.


Nevýhody

  • některé možnosti obnovy jsou omezené,
  • je složitější na správu,
  • pro běžný provoz aplikace obvykle není potřeba.


Co znamená model obnovy pro uživatele 

Model obnovy je především nastavení databáze SQL Serveru. Nemění běžné používání aplikace EviŠtě a uživatel jej za běžného provozu nemusí nijak řešit. Důležitý je především při:

  • zálohování databáze,
  • obnově databáze po havárii,
  • poškození databáze nebo serveru,
  • omylem provedených hromadných změnách,
  • plánování ochrany firemních dat.


Volba modelu by proto měla odpovídat tomu, jak důležitá jsou uložená data a jak velkou ztrátu dat je firma schopna akceptovat.


Častý omyl: Úplný model neznamená automatické zálohování

Jedním z nejčastějších omylů je představa: „Databáze je v režimu Full, takže jsou data automaticky chráněna.“ To není správně.

Úplný model pouze umožňuje využít podrobnější způsob zálohování. Aby tato možnost skutečně poskytovala ochranu proti ztrátě dat, musí být pravidelně prováděny příslušné zálohy.

Například:

Úplný model + žádné zálohy transakčního protokolu = nesprávně nastavené zálohování.


Jaký model zvolit?

Pro běžnou databázi používanou aplikací lze volbu zjednodušit takto:

Požadavek

Vhodný model

Stačí obnova z poslední zálohy

Jednoduchý

Chci pravidelně zálohovat změny

Úplný

Chci možnost obnovy do konkrétního okamžiku

Úplný

Potřebuji speciální režim pro rozsáhlé datové operace

Hromadně protokolovaný

Pro důležité provozní databáze je vhodné věnovat pozornost nejen volbě modelu, ale především celé strategii zálohování.


Doporučení pro zálohování

Bez ohledu na zvolený model by měla existovat pravidelná záloha databáze a měla by být uložena tak, aby nebyla závislá pouze na samotném databázovém serveru.

Zálohu je vhodné ukládat například na jiné úložiště nebo server. Důležité je také občas ověřit, že ze zálohy lze databázi skutečně obnovit. Záloha, která nebyla nikdy otestována, nemusí v případě havárie představovat spolehlivou ochranu. Model obnovy a zálohování proto vždy posuzujte společně.