16.1.1 Údržba SQL dát

Údržba SQL dát


Zálohovanie transakčného logu


Dáta sú v SQL serveroch uložené do niekoľkých súborov. Ten najčastejší scénár je uloženie dát do súboru s príponou .mdf a uloženie transakčného logu do súboru s príponou .Idf

V MDF súbore sú čisté dáta. V LDF  je práve spomínaný transakčný log, ktorý behom práce s programom môže meniť svoju veľkosť až do niekoľkonásobnej veľkosti (napr. niekoľko desiatok GB). Pravidelnou zálohou transakčného logu (TRN) sa jeho veľkosť zmenšuje, nezaberá tak disk, práca s dátami je tak rýchlejšia. Ako zálohovať tento TRN si ukážeme nižšie. Možností je viacej, ale jedna je priamo vo vlastnostiach konkrétnej databáze.

V SQL Studiu, pravým tlačidlom klikneme na našu databázu, z menu zvolíme "Properties" a v pravej časti dialógu je možnosť Transaction LOG. Tu je treba nastaviť cieľ, kam sa budú záložné súbory ukladať. Je nutné nastaviť oba spôsoby, teda ako lokálne úložisko, tak úložisko pomocou UNC cesty (obidva ciele môžu viesť na jedno miesto). Platnosť jednej zálohy nastavíme na jeden deň, pretože po plnej zálohe už TRN potrebovať nebudeme. Z týchto záloh TRN je možné v prípade potreby obnoviť celú databázu alebo len predchádzajúci stav, napr. pred 30 minútami. Nižšie na obrázku je príklad nastavení, kde sa záloha bude ukladať každých 30 minút.

 


Interval zálohy TRN je na zváženie. Pokiaľ v systéme pracuje viac užívateľov (viac ako 10), je pravdepodobné, že pri ich práci bude dochádzať k väčšiemu počtu prístupov k dátam a tým sa bude TRN zväčšovať. Odporúčaná hodnota je každých 30 minút. Pokiaľ sa bude TRN zálohovať často, ako napr. zmieňovaných 30 minút, nebude to nijako zdržovať server a záložné súbory nebudú príliš veľké. Naopak, pokiaľ sa bude záloha TRN vykonávať napríklad každé 2 hodiny a v systéme je bežné prihlásených 15 ľudí bude jedna záloha trvať dlhšiu dobu, bude sa zaťažovať viac server a záložné TRN súbory budú väčšie. Pri intervale 30 minút, je doba vytvorenia takej zálohy od 1 do 3 minút.

Zálohu TRN nie je možné spustiť na databáze, na ktorej ešte neprebehla plná záloha, preto je nutné najskôr vytvoriť aspoň jednu plnú zálohu.

Z dôvodu možného výpadku služby SQL Agent alebo zálohovania TRN nie je nastavené vôbec a môže stať, že súbor s transakčným logom (.ldf) narastie do obrovských rozmerov a bude hroziť, že dôjde miesto na disku serveru, prípadne už došlo. V takom prípade trvá veľmi dlho, než by sa štandardným spôsobom zmenšoval a tak sa táto záležitosť môže vyriešiť rýchlo a efektívne.


Vykonáme to v dvoch krokoch.

  1. Znovu vo vlastnostiach konkrétnej databáze prejdeme do položky "Options" a nastavíme Recovery model a voľbu "Simple". Uložíme OK. 


2. Opäť vstúpime do vlastností databáze a prejdeme do položky "Files". Tu nastavíme počiatočnú veľkosť pre LDF súbor na 50 MB. 



Opäť uložíme - OK. SQL server teraz začne upravovať veľkosť transakčného logu - súboru LDF. Táto operácia môže trvať niekoľko minút v závislosti na výkone SQL serveru a voľnej pamäti RAM. Po ukončení bude LDF súbor na veľkosti max. 50 MB. Akonáhle máme problém s obrovským LDF súborom vyriešený, je nutné prepnúť späť položku Recovery Model na voľbu "Full" a ihneď tiež nastaviť zálohovanie TRN ako je uvedené vyššie a vykonať plnú zálohu databáze, inak nemôže záloha TRN prebiehať. 

Ukážka možného základného plánu pre údržbu dát v SQL serveri


Nižšie je uvedený návrh na možný plán údržby dát v SQL serveri. Plán je tvorený z piatich základných úloh.

  1. Záloha TRN - popísané vyššie
  2. Záloha DB - plná, denná záloha SQL dát. Pravidelnosť 1x denne
  3. Shrink DB - optimalizácia databáze. Pravidelnosť 1x denne
  4. Reorganize index - defragmentuje a triedi indexy v databázach a zaisťuje tak optimálnu veľkosť a fragmentáciu indexov. Je vhodné naplánovať 1x týždenne v dňoch pracovného pokoja či v nočných hodinách
  5. Clean - odstránenie a vyčistenie histórie plánovača. Pravidelnosť 1x týždenne a je možné zvoliť ako staré záznamy sa budú z histórie odstraňovať.