Image
18.5.2016 0 Comments

Databázy III / 5.časť

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

Minule sme si vysvetlili základy zálohovania a obnovy dát. Túto činnosť budeme spravidla vykonávať pri krachu databázy v tom význame, že došlo k strate alebo značnému porušeniu dát.
Poškodenie databázy však nemusí vždy vyžadovať jej obnovu z vytvorených záloh. Pokiaľ došlo k poškodeniu dát výpadkom elektrického prúdu alebo „zaseknutím“ servera, je možné najprv použiť na obnovu dát určité nástroje, ktorými systém MySQL disponuje. Tentoraz sa pozrieme na tieto prostriedky.
DÁTOVÁ ŠTRUKTÚRA MYSQL. Ešte prv, než začneme používať opravné prostriedky MySQL, si musíme povedať niečo o štruktúre dát.

MySQL používa niekoľko formátov tabuliek. Tie sa delia na netransakčno-bezpečné (not transaction-safe tables = NTST) a transakčno-bezpečné (transaction-safe tables = TST). Medzi NTST patria tieto formáty:

  • ISAM
  • MyISAM
  • HEAP
  • MERGE

a medzi TST patria:

  • InnoDB
  • BDB

Nebudeme teraz vysvetľovať, ktorý formát na čo slúži, jeho výhody a nevýhody uvedieme inokedy. Nám stačí vedieť, že MySQL používala do verzie 3.22 formát ISAM a od vezrie 3.23 formát MyISAM.
My sa budeme zaoberať formátom MyISAM, pretože ten sa používa ako štandard pri každej novej inštalácii MySQL.
Poznámka: Keby sme z určitých dôvodov potrebovali zmeniť formát už používaných tabuliek, stačí použiť mocný príkaz ALTER TABLE. Jednotlivé formáty sú „nepozerateľné“ v ľubovoľných editoroch, preto ich nebudeme zbytočne otvárať.
V nami používanom operačnom systéme nájdeme adresár, ktorého názov zodpovedá menu databázy, ktorú máme v MySQL definovanú. Nech je to v našom prípade databáza KNIZNICA. Ak sa dobre pozrieme na výpis obsahu tohto adresára, vidíme tieto súbory:

  • kniha.frm
  • kniha. MYD
  • kniha.MYI
  • zaner.frm
  • zaner.MYD
  • zaner.MYI

Je zrejmé, že súbory s názvom kniha budú prislúchať tabuľke KNIHA a tie ostatné tabuľke ZANER. Význam jednotlivých súborov konkretizujú prípony.
Prípona .frm je formátovací súbor, ktorý opisuje dátovú štruktúru príslušnej tabuľky.
Prípona .MYD obsahuje jednotlivé dáta, teda obsah záznamov tabuľky.
Prípona .MYI obsahuje informácie o indexoch a kľúčoch a iných vnútorných krížových odkazoch, prislúchajúcich k danej tabuľke.
(Súbory formátu ISAM majú prípony .frm, .isd a .ism.)
Práve posledné dva súbory treba pri poškodení opravovať.
Na opravu môžeme použiť niekoľko prostriedkov:

  • CHECK TABLE
  • REPAIR TABLE
  • OPTIMIZE TABLE
  • myisamchk

Naposledy uvádzaný je najuniverzálnejší prostriedok, ktorého parametrizáciou nahradíme účinok tých predchádzajúcich. Preto sa mu budeme teraz venovať. Len na doplnenie: pre tabuľky typu ISAM sa používa program isamchk, ktorého parametre a účinky sú totožné s myisamchk.
POUŽITIE PRÍKAZU MYISAMCHK. Pred použitím príkazu musíme byť v príslušnom adresári, teda adresár KNIZNICA musí byť naším pracovným adresárom. V opačnom prípade musíme uviesť úplnú cestu k vybranej tabuľke.

Všeobecný zápis príkazu je:
myisamchk [parametre] meno_tabuľky

Výber najčastejšie používaných parametrov je v tabuľke 1.

Parameter

Zápis

Význam

-a

--analyze

Analyzuje distribúciu kľúčov, je vhodný na urýchlenie niektorých spojení tabuliek

-d

--description

Vypíše užitočné informácie o tabuľke

-e

--extend-check

Dôkladne preverí vybraný súbor; používa sa, keď všetko zlyhá

-f

--force

Prepisuje dočasné súbory

-i

--information

Vypíše štatistické údaje o danej tabuľke

-k počet

--keys-used počet

Používa sa s prepínačom –r; prikazuje programu, aby pred vykonaním opravy deaktivoval kľúče, ktorých je nad stanovený počet; teda ak k=0, odstráni (deaktivuje) všetky kľúče

-q

--quick

Používa sa s prepínačom –r; vykoná rýchlu opravu iba indexových súborov

-r

--recover

Spustí opravu; opraví väčšinu problémov okrem konfliktov jedinečných kľúčov

-o

--safe_recover

Používa staršiu metódu obnovy, ktorá je pomalšia; dokáže však opraviť aj to, čo nevie parameter -r

-s

--silent

Vypíše iba zistené chyby

-v

--verbose

Režim s podrobným výpisom

-V

--version

Vypíše číslo verzie programu a ukončí sa

Asi najzákladnejším parametrom je parameter d.
Použijeme:
      myisamchk -d kniha

Výpis uvedeného príkazu je na výpise č. 2.

MyISAM file:         kniha
Record format:       Packed
Character set:       latin1 (8)
Data records:                   10  Deleted blocks:     0
Recordlength:                  136

table description:
Key Start Len Index   Type
1   2     4   unique  long   
             

Tento výpis okrem iného oznamuje, že tabuľka kniha obsahuje 10 záznamov. Pre nás je v tejto chvíli zaujímavá hodnota pri Delete blocks. Tá hovorí, koľko zmazaných blokov tabuľka obsahuje. Čím je číslo vyššie, tým viac plytváme miestom. Prečo?
Ak totiž zmažeme niekoľko záznamov z tabuľky, v skutočnosti neuvoľnia svoje miesto novým. Toto miesto zostáva obsadené a tým sa zväčšuje aj veľkosť súboru. Pokiaľ ide o nízku hodnotu Delete blocks, môžeme zostať pokojní. Ak však hodnota dosiahne určitú výšku, musíme nevyužité miesto uvoľniť.
Preto použijeme príkaz:
myisamchk -r kniha
a dostaneme výsledok podobný výpisu č. 3.

- recovering (with sort) MyISAM-table 'kniha'
Data records: 10
- Fixing index 1

Uvedený príkaz prehľadá tabuľku KNIHA a na základe zistených informácií ju vytvorí znova, no tentoraz bez nevyužitého miesta. Tým sa zmenší aj veľkosť súboru kniha.MYD.
Príkaz myisamchk -d by sme mali spúšťať pravidelne, zvlášť v prípadoch, ak používame veľmi „pulzujúcu“ databázu, teda ak sa v nej často používa príkaz DELETE. Práve po ňom zostávajú v súboroch prázdne miesta. Len tak môžeme bdieť nad obsadeným miestom na pevnom disku.

Zapamätajme si!
Ak sa pri vykonávaní príkazu myisamchk pokúsi niektorý z klientov pripojiť k databáze, nadobudne program myisamchk mylný dojem, že tabuľky sú poškodené, aj keď to tak v skutočnosti nie je.
Preto pred spustením príkazu myisamchk ukončíme démona (službu) mysqld. (Ak sme si úplne istí, že počas obnovy nebude nikto pristupovať k tabuľkám, stačí, že pred spustením zmieneného príkazu spustíme príkaz mysqladmin flush-tables.)

POSTUP PRI OPRAVE POŠKODENÝCH TABULIEK. Počas vývoja MySQL sa ustálil určitý postup, ktorý napomáha opravu poškodených záznamov. Postupuje sa pri tom od najjednoduchšieho k zložitejšiemu.
Ešte pred samotnou opravou sa odporúča vykonať zálohu databázy (pomocou mysqldump, ak to, pravda, ide!). Keďže z dôvodu poškodenia sa „vydumpovanie“ databázy nemusí podariť, vykonáme zálohovanie fyzických súborov, teda v našom prípade kniha.frm, kniha.MYDkniha.MYI. To preto, že nie vždy je zaručené, že ten-ktorý postup (t. j. parameter) vedie ku kladnému výsledku opravy.
RÝCHLE OPRAVY. Rýchle opravy vykonávame príkazom:
myisamchk -rq názov_tabuľky

Teda príkaz:
myisamchk -rq kniha

a jeho výpis č. 4:

  • check key delete-chain
  • check record delete-chain
  • recovering (with sort) MyISAM-table 'kniha'
  • Data records: 10
  • Fixing index 1

overí stav tabuľky a v prípade potreby ju opraví. Tento typ opravy sa označuje ako rýchly preto, lebo sa opravia iba indexové súbory.
BEŽNÉ OPRAVY. Väčšinu bežných problémov okrem konfliktu jedinečných kľúčov opraví príkaz myisamchk -r.
ROZSIAHLEJŠIE OPRAVY. Na rozsiahlejšie opravy použijeme príkaz myisamchk - e. Ten overí stav súborov .MYI.MYD a starostlivo hľadá zdroje možného poškodenia súboru. Opraví väčšinu problémov, ale ak sa stretne so závažnou chybou, preruší opravy a ukončí sa.
Príkaz myisamchk -ev sa od predchádzajúceho líši nielen podrobnejším výpisom, ale po nájdení závažnej chyby pokračuje v odstraňovaní problému. Ak je to nevyhnutné, zmaže konfliktné dáta. Preto pred použitím týchto parametrov vykonáme bezpodmienečne zálohu súborov.

Poznámka: Používajme príkaz s parametrami v poradí uvedenom tu. Postupným prehlbovaním testov môžeme zistiť skutočný rozsah poškodenia.
OPRAVY POŠKODENÝCH KĽÚČOV.
Napriek tomu, že sú kľúče (indexy) zvyčajne určené na zvýšenie výkonu databázy, môže sa stať, že tento výkon, naopak, znižujú. To platí hlavne pri príkazoch INSERT alebo UPDATE. Ak spustíme program myisamchk na tabuľku s poškodenými kľúčmi, program môže predpokladať, že sú poškodené aj dáta, a môže ich vymazať.
Ak sa domnievame, že sú poškodené kľúče, dočasne ich odstránime, obnovíme tabuľku a na záver kľúče dosadíme späť.

Príkaz
myisamchk -rqk 0  (nula nie písmeno O)

vynuluje kľúče a skontroluje, prípadne zreparuje tabuľku.
Ak budeme s výsledkom opravy spokojní, obnovíme kľúče príkazom myisamchk -rq.
PREMIESTNENIE DATABÁZY. Pre premiestnenie databázy môžeme mať veľa dobrých dôvodov. Môžeme napríklad inovovať hardvér alebo aj softvér alebo chceme jednoducho preniesť databázu na iný počítač. Môžeme mať dokonca kópiu svojej databázy, uloženú na bezpečnom mieste, ktorú potom kopírujeme na WWW server.
Premiestneniu databázy sa hovorí replikácia (replication). Väčšina dobrých veľkých databáz s replikáciou počíta a má ju v sebe integrovanú.

My sa teraz pozrieme, ako by sme to vyriešili v MySQL.
Nech už je dôvod replikácie akýkoľvek, v podstate sa tento proces delí na tri základné kroky:

  • uloženie (archivácia)
  • premiestnenie
  • obnova

My už vieme vykonať archiváciu databáz pomocou príkazu mysqldump. Je však možný ešte jeden spôsob, a to priamo archivovať súbory na disku.
Prenos alebo premiestnenie archivovaných dát alebo súborov záleží na použitom médiu, či už ide o páskové zariadenia, cédečká, alebo využitie počítačovej siete.
Obnova dát je závislá od spôsobu archivácie a prenosu.
Musíme si uvedomiť, že využitie fyzických súborov s príponami .frm, .MYD a .MYI môže viesť k nekonzistencii dát, a preto sa využíva iba výnimočne.
Z celkového opisu vieme, že to asi nie je tá pravá replikácia. Chcelo by to trochu automatizácie a hlavne zrýchlenie celej činnosti tak, aby replikovaný server bol „on-line“.
Preto MySQL zaviedla „one way“ replikáciu od verzie 3.23.15, kde jeden server je master a druhý slave.
A  vo verzii MySQL 4.0 je to dokonca ešte zdokonalené.

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

Tipy a triky: Ako na snímku obrazovky na akomkoľvek počítači s Windows?

02.12.2016 00:13

Ak snímky obrazovky robíte často apotrebujete napríklad funkcie na posun stránok alebo snímanie zobrazenia pri vyššom rozlíšení displeja, zrejme používate nejakú špecializovanú aplikáciu. Väčšina použ ...

Ako na to 1

Tipy a triky: Ako aplikácii prednastaviť spúšťanie s administrátorskými právami?

30.11.2016 00:10

Väčšina aspoň trochu skúsenejších používateľov vie, že aj keď máte na operačnom systéme Windows vytvorený administrátorský účet, aplikácie pre bezpečnosť nefungujú vždy splnými administrátorskými práv ...

Ako na to 2

Tipy a triky: Ako vypnúť uzamykaciu obrazovku vo Windows 10?

29.11.2016 00:10

Rozčuľuje vás, že pred každým prihlásením doúčtu vášho počítača musíte prejsť uzamykacou obrazovkou? Windows 10 na tejto obrazovke ukazuje čas,dátum anejakú zaujímavú fotografiu zrôznych kútov sveta. ...

Žiadne komentáre

Vyhľadávanie

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

Najnovšie videá