Image
18.5.2016 0 Comments

Databázy III / 4.časť

Späť na úvod >> Späť na seriál

Už ste niekedy prišli o svoje drahocenné dáta? Že nie? Tak to ste šťastlivci! Ale každého to raz čaká, záleží len na tom, ako bude na túto veľmi nepríjemnú skutočnosť pripravený. Kvalitná príprava umožní čo najmenej bolestný návrat k normálnej činnosti SQL servera. Tentoraz si povieme, ako sa vhodne pripraviť na nechcenú stratu dát.
Ochrana a údržba dát (OUD) nie je veľmi populárna oblasť správy nielen SQL servera a databáz, ale aj samotných operačných systémov. To preto, lebo vyžaduje určité finančné aj ľudské zdroje bez zjavného vonkajšieho efektu. A preto sa táto oblasť aj veľmi zanedbáva s heslom „Nám sa to nemôže stať!“.
Do prvého veľkého problému!
Ochranu a údržbu dát si môžeme prirovnať k ochrane a údržbe majetku. Je to dobré prirovnanie, lebo dáta sú naozaj naším majetkom, a ak si spomeniete na úplne prvú vetu tohto celého seriálu („Najväčšia cena je cena informácie.“), budete so mnou súhlasiť. Veď aj náš fyzický majetok si chránime aj za cenu zvýšených nákladov na zámky či iné bezpečnostné zariadenia.
Ak sa vám stále zdá, že táto téma je úplne zbytočná, vráťte sa k nej, až o tie dáta naozaj prídete. Až stratíte informácie, ktoré ste prácne zbierali celé roky, keď sa vám zosype účtovníctvo alebo – nedajbože! – niekto vaše dáta zneužije v obchodnom styku či kriminálnom prostredí. Len aby už nebolo neskoro...

PREVENCIA A OBNOVA. Prevencia je činnosť, ktorá má zabrániť prípadnej strate dát, a obnova je taká činnosť po strate dát, ktorá vedie k uvedeniu do pôvodného stavu pred stratou.
Ako v každej ľudskej činnosti, prevencia, akokoľvek nákladná (vo finančnom aj personálnom smere), je VŽDY lacnejšia ako obnova už spôsobených škôd. Preto ťažisko činností spojených s OUD leží v prevencii.
Medzi preventívne opatrenia patrí:

  • fyzická bezpečnosť
  • personálna bezpečnosť
  • ochrana dát

Pod pojmom obnova dát si môžeme predstaviť

  • obnovu samotných dát po strate
  • opravu poškodených dát

FYZICKÁ BEZPEČNOSŤ. Tejto oblasti sa venuje najmenšia pozornosť. Je skutočne veľmi zanedbávaná, ale ako uvidíme ďalej, je veľmi dôležitá.
Prvý krok pri fyzickom zabezpečení našich systémov spočíva vo vytvorení akéhosi plánu, v ktorom zadefinujeme naše nároky na fyzickú bezpečnosť. Vo firemnom prostredí alebo v prostredí štátnej a verejnej správy sa takýto plán tvorí vo forme smernice a spravidla sa tým niektoré firmy aj solídne živia. Na Slovensku sú k tomu vydané veľmi prísne zákony a príslušné smernice. Uvádzam to tu preto, lebo keby ste chceli svoj dobrý produkt ponúknuť týmto zložkám, musíte počítať s týmto plánom. Pre naše domáce potreby či potreby malej súkromnej firmy bude postačovať, ak si tu uvedené jednotlivé body premyslíme, prípadne odstránime nedostatky.

Na začiatok si položme nasledujúce otázky:

  • Má niekto iný než my fyzický prístup k nášmu počítaču s SQL serverom?
  • Čo ak to bude blázon alebo šialenec a pustí sa doňho kladivom?
  • Čo by sa stalo, keby k nám úplne náhodou neohlásene prišiel niekto od konkurencie?
  • Ak budovu, kde je server, postihne katastrofa, budeme môcť ďalej používať systém?
  • Ak dôjde k havárii systému, ako sa budeme baviť so všetkými rozzúrenými používateľmi a šéfmi?

Fyzická bezpečnosť má tieto prvky:

  • Prostredie – počítače sú zariadenia pomerne citlivé na prostredie, v ktorom pracujú. Prehliadnutie niektorého faktora môže viesť k často nepredvídateľnému zlyhaniu počítača. Faktory, ktoré negatívne ovplyvňujú činnosť počítača, sú:
  • oheň – dokáže zničiť počítače dokonale. Keby aj samotný počítač oheň prežil, nakoniec ho zničí voda pri hasení. Premyslime si, ako sme na prípadný požiar pripravení, či je poruke vhodný hasiaci prístroj, či existuje iné požiarne zabezpečenie v okolí
  • dym – je to silné abrazívum a zhromažďuje sa na hlavičkách diskov alebo iných mechanických prvkoch
  • prach – tu platí to isté ako o dyme, plus to, že prach býva často elektricky vodivý
  • zemetrasenie – v našich podmienkach málo aktuálne, ale treba s ním počítať
  • výbuch – výbuch plynu alebo skladu horľavých látok spôsobí totálne zničenie servera
  • teplotné výkyvy – počítač je náchylný na teplotné výkyvy. Tepelný šok spôsobí poškodenie elektroniky počítača.
  • hmyz a hlodavce – ešte vám nikdy myš neprehryzla elektrické vodiče?
  • elektrické rušenie – často známy jav hlavne vo výrobných priestoroch s elektrickými motormi; pomôcť by mohla UPS-ka alebo napäťové filtre
  • blesky a výboje – dokážu zničiť dáta na magnetických nosičoch; je vhodné uchovávať tieto médiá v kovových ochranných skrinkách
  • vibrácie – od prípadných vibrácií si pomôžeme gumovou podložkou
  • voda a vlhkosť – je najväčší nepriateľ elektroniky; spôsobuje korózie a drobné skraty s ťažkými dôsledkami
  • jedlo a pitie – nesmejte sa – vyliata káva alebo kus šunky v klávesnici vás asi nepoteší, zvlášť ak sa chyba neprejaví hneď, ale až keď kávička zatečie na to správne miesto!
  • Fyzický prístup – zdravý rozum hovorí, že počítače by mali byť v uzamknutej miestnosti. Je však uzamknutá miestnosť bezpečná? Čo také
  • zvýšené podlahy a znížené stropy – nemôže niekto vojsť tadiaľto? Stačí len potkan alebo myš!
  • prístup cez vetracie šachty – mali by byť opatrené sieťkami proti spomínaným hlodavcom
  • Vandalizmus – je nezanedbateľný prvok. Úmyselné poškodenie počítača alebo kabeláže dokáže znefunkčniť náš systém na niekoľko hodín či dní. Nikdy nepodceňujte človeka, ktorý má ľubovoľný (aj patologický) dôvod sa vám pomstiť! Uložte kabely z dosahu alebo aspoň tak, aby neboli na očiach.
  • Krádež – asi najčastejšia nepríjemnosť. Tá môže byť vykonaná s úmyslom získať techniku ako cennosť alebo priamo s cieľom získať dáta. Vhodne skombinované opatrenia, podobné ochrane iného cenného majetku, zámkami počnúc a elektronickými systémami končiac, zabránia nielen strate dát – tie obnovíme z prípadnej zálohy –, ale zabránia aj ich zneužitiu.

PERSONÁLNA BEZPEČNOSŤ. Aj keď sa to nezdá, personálna bezpečnosť je rovnako dôležitá ako fyzická. To preto, že človek dokáže ublížiť systému rovnako (ak nie viac) ako prírodné živly. Dobre poznáte svojich používateľov? Dôverujete tomu, kto vás má pri údržbe systému zastupovať v prípade dovolenky alebo práceneschopnosti?
Pri personálnom zabezpečení je potrebné venovať pozornosť týmto aspektom:

  • minulosť – znie to paranoidne, ale preverte, či dotyčná osoba, ktorá k vám nastúpila do zamestnania a tvrdo sa dožaduje prístupu k vašim firemným dátam:
  • má príslušné vzdelanie a schopnosti. Taký „chrobák Truhlík“, čo všade bol a všetko vie, dokáže spôsobiť riadnu pohromu v systéme;
  • nepochádza z konkurenčného prostredia. Čo ak je nasadený na získanie vašich dát?
  • vstupné školenia – mali by obsahovať základné návyky bezpečnostných opatrení – od používania hesiel cez ukončovanie sedenia, zálohovanie dát až po zamykanie kancelárie. Pre tých, čo pracujú v právnom prostredí, nechajte si podpísať, že používatelia boli riadne poučení. (Mám nedobrú skúsenosť!!!)
  • priebežné školenia – zabezpečia pravidelné oboznamovanie vašich používateľov s novinkami v systéme. A nezabudnite: Repetitio est mater studiorum.“ (Opakovanie je matka múdrosti.)
  • sledovanie prístupu – je dobré, keď budú používatelia vedieť, že sledujete ich prístupy do systému. Aspoň nebudú pokúšať!
  • mininalizácia privilégií – dajte jednotlivým používateľom len najnevyhnutnejšie prístupové práva. Nespôsobia škody, ktoré nechcete. A to ani nechcenou činnosťou alebo nesprávnymi postupmi.
  • odchod používateľa – vždy po odchode používateľa z organizácie odstráňte jeho účet zo systému. Zabránite zneužitiu. Zvláštnu pozornosť venujte používateľom, ktorí zastávali kľúčové pozície, mali značné prístupové práva a odchádzajú nedobrovoľne! Verte mi, tento jav je dnes bežný a niet lepšej časovanej bomby!

OCHRANA DÁT. Ochrana dát je azda najdôležitejším prvkom prevencie pred stratami informácií. Ak aj dokážeme zabezpečiť všetky body z fyzickej a personálnej bezpečnosti, môžeme očakávať, že dôjde k poškodeniu dát inými činiteľmi, ako je „seknutie“ systému, nechcený výmaz (aj zo strany roota!), nezabezpečenie integrity (zlý návrh celej aplikácie – niečo sa niekde vymazalo, čo sa nemalo) alebo úmyselné poškodenie samotných dát. Ochrana dát spočíva v týchto bodoch:

  • zálohovanie systému
  • zálohovanie a obnova dát
  • ochrana záloh dát

ZÁLOHOVANIE SYSTÉMU. Pod týmto pojmom si môžeme predstaviť fyzickú – hmotnú – zálohu celého systému, teda vytvorenie záložného servera na fyzicky inom počítači. Tento variant je finančne náročný a dovolia si ho len solventnejšie firmy či organizácie. U nás prevádzkujeme trojnásobnú zálohu systému – 1 hlavný linuxový server, 1 záložný linuxový server a 1 počítač so systémom Windows, kde je tiež nainštalovaná zodpovedajúca verzia MySQL. V prípade zlyhania Linuxov (hm, hm, že by padli obidva naraz?) sme schopní v priebehu niekoľkých minút aktivovať windowsovskú verziu MySQL a zo záloh dát sme schopní pripraviť náš projekt na činnosť. Ak nemáme dostatok prostriedkov na výstavbu druhého záložného Linuxu, môžeme použiť variant 1hlavný server a 1 počítač s operačným systémom Windows, napr. 95 či 98. Môže to byť aj ľubovoľná pracovná stanica, ktorá by dočasne prevzala úlohu servera. Vzhľadom k tomu, že sme sa naučili nainštalovať a spustiť trojicu – MySQL – Apache – PHP pod obidvoma operačnými systémami, je to možné považovať za vyhovujúce riešenie.
Tu je dôležitá ešte aj stratégia zálohovania. Aktualizácia dát na záložnom serveri môže byť:

  • synchrónna
  • asynchrónna

Synchrónna aktualizácia dát je proces, ktorý zapisuje dáta do konkrétnej databázy na hlavnom serveri a zároveň do stanovenej databázy na záložnom serveri. MySQL takéto zálohovanie nepodporuje, aspoň nie priamo, aj keď ma napadajú spôsoby, ako to vyriešiť.
Asynchrónna aktualizácia dát je proces, kde sa dáta zapisujú do určitej databázy na hlavnom systéme a na záložný systém sa prenesú až s určitým oneskorením. Tento systém je už použiteľný aj v MySQL, napr. pomocou démona cron v linuxovom prostredí. Ten v určitých časových intervaloch skopíruje dáta z hlavného servera do záložného. Ten sa takto stáva pripraveným na prevzatie úlohy v prípade krachu hlavného servera.
ZÁLOHOVANIE A OBNOVA DÁT. je najvhodnejší spôsob, ako sa vrátiť k správnym dátam po ich poškodení. Rovnako dôležité je vytvorenie záložnej kópie, ale aj proces obnovy v prípade havárie. Tento proces musí byť rýchly a zároveň bezpečný, aby sme sa mohli čo najskôr vrátiť k normálnej prevádzke.
Proces vytvárania záloh má mnoho metodologických štúdií, ktoré vznikli ešte v dobách, keď žiadne magnetické médium nebolo dostatočne spoľahlivé. V časoch CD a DVD médií je podstata procesu zálohovania značne jednoduchšia. Cez spomínané zjednodušenie sú základné princípy platné aj dnes a celý proces záloh môžeme rozdeliť do týchto bodov:

  • úplné zálohy
  • inkrementačné zálohy

Keďže obidva spôsoby sú podporované v MySQL, pozrieme sa teraz na ne podrobnejšie.

Úplné zálohovanie
ÚPLNÉ ZÁLOHOVANIE.
Pri tomto spôsobe zálohovania sa zálohujú všetky dáta vo všetkých databázach (prípadne vrátane prístupových práv, teda aj databázy mysql), ktoré systém MySQL obsahuje. Zálohovať môžeme na pevný disk, pásku, cédečko či iné médium vrátane sieťových. Takáto záloha sa tvorí raz za určité obdobie, najčastejšie raz za týždeň.
Obnova dát je v tomto prípade veľmi jednoduchá – obnoví sa naraz celý databázový server vrátane prístupových práv. Nevýhodou je množstvo dát a s tým súvisiace časové zdržanie pri tvorbe zálohy. Odporúčam úplnú zálohu vykonávať na začiatku alebo konci pracovného týždňa a ako úložné médium použiť fyzicky iný disk, ako je ten pracovný. Je to pochopiteľné, lebo ak „kľakne“ disk s ostrými dátami, ku ktorým sa nedostaneme, nedostaneme sa ani k perfektne urobeným zálohám. Dnes vzhľadom na dostupnosť a cenovú výhodnosť je dobré zvoliť médiá CDR alebo CD-RW.

INKREMENTAČNÉ ZÁLOHOVANIE. Inak sa nazýva aj prírastkové – je to také zálohovanie, kde sa zálohujú iba tie dáta, ktoré sa zmenili od poslednej úplnej zálohy. Takéto zálohovanie sa spravidla vykonáva denne. Jednotlivé prírastky sa ukladajú tak, aby inkrementačná záloha každého dňa bola na inom mieste média, napr. v inom vhodne pomenovanom adresári alebo diskete. Ak nebudeme používať diskety, môžeme zvoliť aj pevný disk, či už sieťový (na inom počítači), alebo prinajhoršom vlastný. Predpokladajme, že keď dôjde k poruchám dát, nemusí to byť hneď porucha celého disku, takže sa k denným zálohám dostaneme. A keby nie, prinajhoršom sa vrátime k stavu z predchádzajúceho týždňa, keď sme robili úplnú zálohu na cédečko, ktoré máme poruke v trezore.
Obnova dát je v tomto prípade zložitejšia. Najprv obnovíme dáta z poslednej úplnej zálohy a pokračujeme obnovou dát za jednotlivé dni, až dôjdeme k súčasnému stavu.
Frekvencia tvorby záloh závisí od frekvencie zmien dát v danej databáze. Ak používame databázu len na čítanie a jej dáta sa nemenia počas celého roka, nebudeme predsa robiť denné inkrementačné zálohy, neboli by vlastne žiadne. Ak sa nám menia dáta 1000-krát za deň, je vhodné robiť inkrementácie každú hodinu. Majme na pamäti, že obnovou dát vždy nejaké stratíme. Sú to tie, čo sa zmenili od poslednej zálohy. (Zákon schválnosti hovorí, že dáta sa porušia tesne pred vytvorením zálohy, nie hneď po nej, keď ešte nedošlo k žiadnej zmene.) Musíme pamätať na to, že potrebujeme stratené dáta nahradiť, a to najčastejšie ručne – opisom z papierovej predlohy a podobne. (Ak nám takéto riešenie nevyhovuje, musíme pristúpiť na podstatne nákladnejšiu synchrónnu aktualizáciu.)

Azda najpoužívanejšia schéma vytvárania záloh je takáto:

  • úplnú zálohu vytvárame mimo pracovného času raz týždenne, najlepšie v piatok popoludní alebo vo večerných hodinách. Preferujeme piatok, lebo keby niekde niečo v zálohovaní „kikslo“, máme celú sobotu a nedeľu na nápravu
  • inkrementačné (prírastkové, čiastkové) zálohy vykonávame denne, konkrétne raz za deň, mimo hlavného náporu požiadaviek prístupu k dátam, spravidla vo večerných hodinách, a to tak, že zálohu z každého dňa uložíme separátne, aby sme neprepísali včerajšiu zálohu dnešnou.

Takto dosiahneme zálohu dát, ktorá je maximálne jeden deň stará.
Väčšina tejto činnosti sa dá zautomatizovať, obzvlášť v Linuxe, a o výsledku sa môžeme nechať informovať mailom alebo SMS.
Spomeňme si na predchádzajúcu časť seriálu. Hovorili sme, že je dôležité, aby počas vytvárania záloh nedošlo k čiastočným zmenám dát. Preto by sme mali na dobu tvorby záloh databázu odpojiť, a ak to naozaj nie je možné, tak aspoň zálohované tabuľky zamknúť na čítanie!

OCHRANA ZÁLOH DÁT. Nič nám nebude platný dokonalý a prepracovaný systém záloh dát, ak nezabezpečíme ochranu týchto záloh. Zbytočné budú zálohy na hard disku počítača, ak sa ten zrúti zarovno s ostrými dátami. Preto odkladajme zálohy na fyzicky iné médium. Takisto nezabudnime, že aj diskety, pásky či cédečká môžu zhorieť zarovno s počítačom, ak boli uložené v tej istej miestnosti, kde je server. (No vysvetľujte šéfovi, že ste zálohy robili správne, lenže zhoreli!) Nezabudnime na to, že zálohy môžu byť objektom záujmu iných osôb tak ako ostré dáta. Ak sme perfektne zabezpečili serverovňu strážnymi psami a širokoplecími mužmi v čiernom, nevozme záložné kópie v aute za zadným sklom aj s popisom, že je to záloha databázy klientov nemenovanej banky za prvý kvartál tohto roku!
Pamätajme si! Na zálohy dát sa vzťahujú tie isté princípy ochrany ako na samotné dáta!
A ešte jeden poznatok (zo života!):
Občas skontrolujme, či vytvorené zálohy sú naozaj použiteľné a čitateľné a či zvládneme obnovu dát! Nespoliehajme sa na to, že to overíme, až keď to budeme potrebovať. Aby sme sa nedočkali nemilého prekvapenia!
Ktoré súbory sú dôležité? To zistíme tak, že si položíme otázku: „Strata ktorých dát ma bude bolieť?“ A dajme si odpoveď (že asi všetkých). A takto označené dáta ZÁLOHUJME!
Vráťme sa konečne k MySQL a povedzme si, ako budeme vykonávať jednotlivé zálohy dát a ich obnovu v tomto systéme.

VYTVORENIE ÚPLNEJ ZÁLOHY DÁT V MYSQL. Na vytvorenie úplnej zálohy sa v MySQL používa utilita mysqldump. Jej úlohou je vygenerovať obsah databázy alebo tabuľky v tvare SQL príkazov do čisto textového súboru. Podľa nastavených prepínačov dokáže vytvoriť príkazy na návrh tabuľky a na vkladanie príslušných dát. Obsah tohto súboru je potom jednoducho použiteľný pri obnove dát.
Formálny zápis príkazu mysqldump je:
mysqldump [prepínače] -u používateľ -pheslo meno_databázy [ meno_tabuľky] > meno_súboru

Parametre v hranatých zátvorkách sú nepovinné. Znak > (zobáčik) značí, že výstup programu mysqldump nebude vystupovať na obrazovku (štandardný výstup), ale sa presmeruje do súboru.
Predstavme si, že chceme z našej známej databázy kniznica vydumpovať tabuľku KNIHA do súboru kniha.sql. V takom prípade zapíšeme príkaz:
mysqldump -u root -pheslo kniznica kniha >kniha.sql

Takto vzniknutý súbor kniha.sql sa nachádza v ceste spúšťania podľa príslušných konvencií operačného systému. Ak ho chceme ukladať presne tam, kde potrebujeme, napíšeme úplnú cestu súboru.
Čo sa stalo?

Program mysqldump zistil štruktúru tabuľky kniha a jej obsah. Previedol ich do príkazov SQL a uložil do súboru kniha.sql. Jeho obsah je na výpise č. 1:

# MySQL dump 8.19

#

# Host: localhost    Database: kniznica
#-----------------------------------------------------
# Server version  4.0.1-alpha

#
# Table structure for table 'kniha'
#

CREATE TABLE kniha (
  id int(11) NOT NULL auto_increment,
  nazov varchar(40) default NULL,
  autor varchar(30) default NULL,
  vydavatel varchar(25) default NULL,
  cis_odd int(11) default NULL,
  cena decimal(5,2) default NULL,
  poznamka varchar(25) default NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM PACK_KEYS=1;

#
# Dumping data for table 'kniha'
#

INSERT INTO kniha VALUES (1,'Angelika a kral','Golon, Anne a Serge','Slovensky spisovatel',2,56.00,'');
INSERT INTO kniha VALUES (2,'KGB','Gordijevsky, Oleg','EAAP',6,239.00,'');
INSERT INTO kniha VALUES (3,'Bratia Ricovci','Simenon, Georges','Smena',3,18.00,'');
INSERT INTO kniha VALUES (4,'Vtaky v trni','McCulloughova, Colleen','Slovensky spisovatel',2,66.00,'');
INSERT INTO kniha VALUES (5,'Linux - prakticky pruvodce','Sobell, Mark G.','Computer Press',7,1073.00,'');
INSERT INTO kniha VALUES (6,'Naucte se programovat v Delphi','Binzinger, Thomas','Grada',7,439.00,'');
INSERT INTO kniha VALUES (7,'Pouzivame linux','Welsh, M., Kaufman, L.','Computer Press',7,494.00,'');
INSERT INTO kniha VALUES (8,'Z polovnickej kapsy','Moric, Rudo','Mlade leta',4,89.00,'');
INSERT INTO kniha VALUES (9,'Plebejska kosela','Mihalik, Vojtech','Slovensky spisovatel',1,15.00,'');
INSERT INTO kniha VALUES (10,'Europou bez penazi','Hlubucek, Petr, Ing.','Roman Kasan',5,34.00,'');

 

Všimnime si, že sa tento súbor skladá z obidvoch spomínaných častí – vytvorenia tabuľky kniha príkazom CREATE TABLE a jej naplnenia príslušnými dátami príkazom INSERT.
Samotný príkaz mysqldump má neskonalé možnosti. Môžeme vytvoriť iba štruktúru tabuľky alebo len samotné dáta. Môžeme vytvoriť taký výpis, aby boli informácie prenosné do iného SQL systému. Možnosti sa ovládajú pomocou prepínačov, ktorých stručný prehľad je v tabuľke č. 2:

Prepínač

Skrátený zápis

Opis

--add-drop-table

 

Doplní obsah súboru o príkaz DROP TABLE IF EXIST, ktorý umiestni pred príkaz CREATE TABLE. To zabezpečí, že ak už tabuľka s rovnakým názvom existuje, odstráni ju a nahradí novou.

--add - locks

 

Zaistí vloženie príkazov INSERT medzi príkazy LOCK TABLES a UNLOCK TABLES. Takto nedovolí používateľom manipulovať s tabuľkou, pokým sa do nej nevložia všetky dáta pri obnove dát.

--complete_insert

-c

Pridá názov ku všetkým poliam príkazu INSERT. Tento prepínač je vhodný najmä pri exporte dát do iného SQL systému.

--flush - logs

-F

Pred vytvorením výpisu vyprázdni súbor protokolu služby.

--force

-f

Zaistí, že mysqldump bude pokračovať vo výpise, aj keď medzitým dôjde k neočakávanej chybe.

--lock-tables

-l

Uzamkne pred vytvorením výpisu všetky tabuľky, z ktorých sa výpis bude zostavovať.

--no-create-info

-t

Zabráni tvorbe príkazu CREATE TABLE. Vhodné, pokiaľ chceme získať iba výpis samotných dát.

--no-data

-d

Zabráni tvorbe príkazu INSERT. Výpis bude obsahovať iba štruktúru tabuľky.

--quick

-q

Nedovolí systému MySQL načítanie celého výpisu do operačnej pamäte pred fyzickým vytvorením súboru. Vynúti priamy zápis do súboru už počas čítania informácií z databázy.

--opt

 

Zapne všetky predvoľby, ktoré urýchlia proces vytvárania výpisu.

--tab=cesta

-T

Zaistí vytvorenie dvoch súborov. Jeden – s príponou .sql – bude obsahovať SQL príkazy na vytvorenie štruktúry tabuľky CREATE TABLE a druhý – s príponou .txt – iba výpis dát, oddelených tabulátorom (bez príkazu INSERT). Argument cesta určuje adresár, kde budú príslušné súbory vytvorené. Uvedený adresár musí existovať pred spustením.

--full

 

Doplní príkaz CREATE TABLE o ďalšie podrobnejšie informácie.

--delayed-insert

 

Vloží do príkazu INSERT kľúčové slovo DELAYED.

--where = "podmineka WHERE"

-w "podmienka where"

Umožňuje filtrovanie záznamov, ktoré sa vyexportujú do výpisu na základe splnenia príslušnej podmienky.

Vyskúšajme tento príkaz:
mysqldump --tab=d:\ -u root -pheslo kniznica zaner

V koreni disku D: (linuxáci v príslušnej časti stromu) sa vytvoria súbory zaner.sql (výpis č. 3):

# MySQL dump 8.19
#
# Host: localhost    Database: kniznica
#-------------------------------------------------------
# Server version  4.0.1-alpha

#
# Table structure for table 'zaner'
#

CREATE TABLE zaner (
  cis_odd int(11) NOT NULL auto_increment,
  tematika varchar(20) default NULL,
  PRIMARY KEY  (cis_odd)
) TYPE=MyISAM PACK_KEYS=1;

súbor zaner.txt (výpis č. 4 – pozri úlohu prepínača tab):

1     poezia
2     roman
3     krimi
4     detska lit.
5     cestopis
6     lit. faktu
7     odborna lit.

Použitie mysqldump v základnom režime, teda bez prepínačov, plne vyhovie bežnej zálohovacej stratégii.
Takto vytvorenú úplnú zálohu tabuľky, databázy alebo celého MySQL stroja odložíme tak, ako sme si to povedali skôr.
Ak si tieto príkazy odskúšame, zistíme, že sa vykonajú pomerne rýchlo a ani nezaberajú tak veľa miesta. Prečo teda potom robiť inkrementačné zálohy a nepoužívať iba úplnú zálohu?
To záleží na veľkosti dát. Pokiaľ máme tabuľku s tisíc záznamami, postačuje vykonávanie kompletnej zálohy bez použitia inkrementačných záloh.
Ak však máme databázu s miliónmi záznamov a zmeny sa robia tisíckrát za deň, bez klasickej zálohovej stratégie sa asi nezaobídeme. Ak sa úplná záloha dumpuje niekoľko hodín, nebudeme ju chcieť robiť každý deň. Ak k tomu pripočítame fakt, že je nevyhnutné na dobu tvorby záloh databázu odpojiť alebo aspoň obmedziť do nej zápis, musíme vykonávať inkrementačné zálohovanie, ktoré je časovo menej náročné.
VYTVORENIE INKREMENTAČNEJ ZÁLOHY DÁT V MYSQL. Tvorba inkrementačných záloh v MySQL spočíva vo využití protokolovania činnosti na MySQL serveri.
Tie sa zapisujú do príslušných logovacích súborov vo forme príkazov SQL, ktoré menia hodnotu dát (INSERT, UPDATE a DELETE).
Aby sme mohli túto vlastnosť servera využiť, musíme ho spustiť s parametrom --log-update takto:

- pre Linux:                  safe_mysqld --log-update &
- pre Windows:             mysqld --log-update

Démon alebo služba vytvorí v príslušnom adresári logovací súbor, do ktorého bude protokolovať všetky činnosti, týkajúce sa manipulácie a zmeny dát.
Pomenovanie logovacieho súboru sa riadi ustálenou konvenciou meno_servera.n (napr. mior.001), kde n je číslo, ktoré narastá pri vytvorení každého nového protokolu. Nový protokolovací súbor sa vytvorí pri spustení alebo reštartovaní servera alebo pri spustení príkazu mysqladmin s parametrom flush-logs alebo reload.
Tak ako všetko v slušných programoch, tak aj názov protokolovacieho súboru sa dá zmeniť, napr.
mysqld --log-update=zaloha

Vytvorí sa súbor zaloha.001. Ak reštartujeme server, vytvorí sa nový súbor zaloha.002, do ktorého sa teraz budú ukladať príslušné príkazy. Tým zabezpečíme, aby sme získali zálohu z iného dňa do iného súboru.
Ak spustíme server tak, že protokolovaciemu súboru stanovíme príponu, napríklad .log takto:
mysqld --log-update=zaloha.log

vytvorí sa iba jeden súbor s menom zaloha.log a nikdy, ani po reštarte MySQL sa nevytvorí iný, ale zmeny dát sa pripisujú do tohto súboru.
Aby sme zapísali všetky protokolované príkazy, musíme použiť príkaz mysqladmin s parametrom flush-logs. Tým sa vyprázdni pamäť, kde sa tieto protokolované logy dočasne ukladali. Zároveň sa vytvorí nový protokolovací súbor s číslom o jednotku väčším.
Našou úlohou je, aby sme zabezpečili správnu rotáciu súborov. V operačnom systéme Windows mnoho možností nemáme.
Naopak, v Linuxe a un*xe všeobecne je možné využiť mnoho variantov. Buď využijeme možnosti samotného operačného systému, alebo môžeme využiť skript mysql-log-rotate, ktorý je pripravený v linuxovej verzii MySQL v adresári support-files.
Teraz vieme, že na sedem dní inkrementačných záloh postačuje sedem súborov. Aby sme zbytočne nezapĺňali disk inkrementačnými súbormi donekonečna, dobre zvolené rotovanie alebo napísaný skriptík zabezpečí, že sa súbory staršie ako sedem dní automaticky zmažú.
Tak ako úplné zálohovanie aj inkrementačné vrátane rotácie logov môžeme – hlavne v Linuxe – zautomatizovať a o výsledkoch alebo prípadných chybách sa necháme informovať.
Nesmieme zabudnúť, že technika je síce mocná čarodejnica, ale ľudský zásah je niekedy nevyhnutný, a to pri vložení výmenného záznamového média do záznamovej jednotky (disketa, páska, CD-R, CD-RW).

OBNOVA DÁT V MYSQL. Teraz vieme, že záložné súbory, či už od úplnej, alebo inkrementačnej zálohy, sú vlastne iba súbory s bežnými príkazmi SQL. To znamená, že ich môžeme jednoducho použiť na obnovu dát.
Obnovu dát vykonáme tak, že tieto súbory použijeme v spojení s monitorom mysql v dávkovom režime.
Ako prvý použijeme súbor z úplnej zálohy. Ten nech sa volá kniha.sql. Syntaktický zápis je:
mysql -u meno_používateľa -p heslo_používateľa názov_databáze < meno_zálohového_súboru

Poznámka: Príslušný používateľ musí mať, samozrejme, riadne definované práva k tomuto úkonu!
Takže príkazom:
mysql -u root -pheslo kniznica < kniha.sql

sa načíta súbor kniha.sql a všetky príkazy SQL, ktoré obsahuje, sa riadne vykonajú. (Obrátený zobáčik < má opačný význam ako >, teda činnosť programu sa nebude do súboru kniha.sql zapisovať, ale sa obsah súboru bude do programu mysql načítavať.
Potom vezmeme jednotlivé súbory inkrementačných záloh a obdobným spôsobom vykonáme doplnenie rozdielov k dnešnému dňu:
mysql -u root -pheslo kniznica < update.001
mysql -u root -pheslo kniznica < update.002

CVIČNÝ PRÍKLAD ZÁLOHOVANIA A OBNOVY. Aby sme si príslušnú teóriu precvičili, urobíme si tento cvičný príklad:

1. Spustíme server s prepínačom --log-update, aby dokázal vykonávať inkrementačné zálohy:

- v Linuxe:                    safe_mysqld --log-update &
- vo Windows 9X:         mysqld --log-update

V adresári, kde sa nachádzajú dátové súbory, vznikol súbor mior.001 (mior preto, lebo aj server sa volá mior).

2. Majme databázu test a v nej tabuľku zaner s touto štruktúrou a dátami:

CIS_ODD

TEMATIKA

1

poézia

2

román

3

krimi

4

detská lit.

5

cestopis

6

lit. faktu

7

odborná lit.

cis_odd je typu integer int(3) a  tematika je typu varchar(20).

3. Urobíme úplnú zálohu príkazom:
mysqldump --opt -u root -pheslo test zaner  >zaner.sql

Obsah súboru zaner.sql je na výpise č. 5:

# MySQL-Front Dump 2.2
#
# Host: localhost   Database: test
#--------------------------------------------------------
# Server version 4.0.1-alpha

USE test;

#
# Table structure for table 'zaner'
#

DROP TABLE IF EXISTS zaner;
CREATE TABLE `zaner` (
  `cis_odd` int(3) NOT NULL default '0',
  `tematika` varchar(20) default NULL,
  PRIMARY KEY  (`cis_odd`)
) TYPE=MyISAM PACK_KEYS=1;

#
# Dumping data for table 'zaner'
#
INSERT INTO zaner VALUES("1","poezia");
INSERT INTO zaner VALUES("2","roman");
INSERT INTO zaner VALUES("3","krimi");
INSERT INTO zaner VALUES("4","detska lit.");
INSERT INTO zaner VALUES("5","cestopis");
INSERT INTO zaner VALUES("6","lit. faktu");
INSERT INTO zaner VALUES("7","odborna lit.");

4. Zmažeme 5. oddelenie (5. položku)
Môžeme to urobiť v monitore mysql (nezabudnite nastaviť správnu databázu pomocou use test;):
mysql> delete from zaner where cis_odd = 5;

Odpoveď by mala byť:             Query OK, 1 row affected

Opustíme monitor mysql príkazom exit.
Poznámka: Môžeme to urobiť aj v inej ľubovoľnej aplikácii!
Presvedčíme sa, že je piata položka naozaj zmazaná!
5. Urobíme inkrementačnú zálohu
Spustíme príkaz v OS:  mysqladmin -u root -pheslo flush-logs

Súbor mior.001 sa naplnil príslušným obsahom a vytvoril sa nový súbor mior.002
(Poznámka: V niektorých verziách Windows sa môže vytvoriť len súbor mior bez prípony. V Linuxe to funguje korektne!)
Pozrieme sa do súboru mior.001 – výpis č. 6:

# C:\MYSQL\BIN\MYSQLD~1.EXE, Version: 4.0.1-alpha-log at 020721 17:59:32
use test;
delete from zaner where cis_odd = 5;

Vidíme, že sa skutočne protokolovali naše činnosti. A práve túto vlastnosť teraz využijeme.
Dosiahli sme status quo!
6. Tabuľku zaner zmažeme – nasimulujeme stratu dát
napr. v mysql monitore:
mysql> delete from zaner;

Odpoveď: Query OK, 6 rows affected
KRACH!!!
Skontrolujeme, že sa tabuľka zaner naozaj vyprázdnila. Prípadne ju môžeme aj úplne zmazať!
Teraz sme totálne v kaši.  Šéf zúri, používatelia nadávajú, vedúca učtárne je na infarkt a riaditeľ nám píše výpoveď. Čo teraz?
No predsa pristúpime k obnove dát! Zálohy máme, úplnú (zaner.sql) aj prírastkovú (mior.001), nemáme sa čoho báť!
7. Obnovíme úplnú zálohu zo súboru zaner.sql príkazom:
mysql -u root -pheslo kniznica < zaner.sql

Teraz by sa mala vytvoriť tabuľka zaner a naplniť sa príslušnými dátami. Presvedčíme sa!
8. Obnovíme inkrementačnú zálohu zo súboru mior.001 príkazom:
mysql -u root -pheslo kniznica < mior.001

9. Skontrolujeme tabuľku, či je taká, ako bola tesne pred krachom.
Je to naozaj tak! Dostali sme sa z najhoršieho!
Používatelia sú spokojní, šéf nás uznanlivo potľapkáva po pleci a riaditeľ schvaľuje odmenu. Pani účtovníčka nám naleje koňaku, čo jej doniesla dcéra z Paríža, a dožičí aj sebe, vraj je to dobré proti infarktu. A jeden „deň – blbec“ je za nami!
Občas sa stáva, že sa dáta naozaj porušia a z nevysvetliteľných príčin nemáme ani zálohy. Čo potom?
Existuje možnosť opravy dát špeciálnym programom. Ale o tom nabudúce.


Nechajte si posielať prehľad najdôležitejších správ emailom

Mohlo by Vás zaujímať

Ako na to

Ako zbaviť fotky hmly

08.12.2016 11:59

Hmla alebo dym sú často veľmi kreatívne nástroje. No všetkého veľa škodí. Fotka potom stráca kontrast a v podstate na nej nič nevidieť. Hmlu môžete neraz následnými úpravami odstrániť alebo zredukovať ...

Ako na to

Užitočné SW nástroje

08.12.2016 11:53

AllDup v4.0.3 Určenie: program na vyhľadávanie a odstraňovanie duplicitných súborov Vlastnosti: duplicitné súbory sa vyhľadávajú len na zvolených diskových jednotkách alebo len v rámci vybraných ...

Ako na to

Fotografovanie s bleskom

08.12.2016 11:47

Ak máte moderný fotoaparát so vstavaným alebo externým bleskom, zdá sa vám téma článku triviálna. Jednoducho nastavíte vhodný režim, vyberiete najlepšiu kompozíciu záberu, exponujete a o zvyšok sa už ...

Žiadne komentáre

Vyhľadávanie

Kyocera - prve-zariadenia-formatu-a4-s-vykonom-a3

Najnovšie videá