Zálohování a migrace databáze

Praktické situace

  • Zálohování – činnost, kterou vytváříme datové kopie. Typy a vlastnosti záloh naleznete zde: https://cs.wikipedia.org/wiki/Z%C3%A1lohov%C3%A1n%C3%AD_dat
  • Důvody vytváření záloh
    • Migrace – chceme přenést data mezi počítači nebo servery např. z důvodu stěhování služby.
    • Archivace a dlouhodobé uskladnění – některé systémy umožňují ta data, která nejsou permanentně vyžadována aplikací, odložit do depozitu (provést jejich komprimaci) a snížit robustnost databáze – záleží jaká je organizační struktura dat (partitioning, vhodné využívání dat aplikací – izolovanost dat dle určitého atributu) – např. klasifikační data systému Bakalář ze straších období lze izolovat od dat aktuálního období apod.
    • Plnění bezpečnostních zásad – závisí podle nastavené bezpečnostní politiky a ochrany dat.
    • Upgrade SW a jakákoliv jiná změna konfigurace – vždy před provedením zásadních systémových změn, které by mohly vyvolat např. nekompatibilitu a tím výpadky služeb, je třeba provádět zálohy.

Export dat

  • 3 způsoby, jak provést migraci dat – způsob je závislý např. na datové velikosti a jaký máme přístup k serveru (vzdálená plocha, příkazový řádek služby Secure Shell, PhpMyAdmin apod.)
    • Kopírování datových souborů, se kterými běžně pracují databázové systémy
    • Použití Export/Importu databázového správce (např. PhpMyAdmin)
    • Komplikovanější způsoby bez výpadků (využití replikace pokud to podporuje databázový systém)
  • Kopírování datových souborů – nejjednodušší způsob
    • je možný, pokud cílový systém disponuje stejnými přístupovými právy, stejná verze SW, stejná konfigurace souboru my.cnf a je nutné, aby služba databáze neběžela (ani na pozadí)!!
    • schéma databáze – soubory databáze – jsou ukládány dle nastavení my.cnf (datadir) defaultně ve složce /var/lib/mysql. Každá databáze má v této složce vytvořenu podsložku a v ní soubory tabulek (frm – definice tabulky, MYD – data tabulky, MYI – klíče tabulky).
  • Použití exportu/importu pomocí PhpMyAdminu – vhodné pouze do určité velikosti dat, jinak je třeba využít asistence podpory hostingu. Hlavním omezením může být max. doba běhu PHP skriptu nebo jistá omezení pro budoucí import! Při exportu databázový systém vždy provádí zamčení daného objektu, proto není třeba zastavovat databázovou službu.
    • export je proveden na vybraném objektu (lze provádět na 3 úrovních, avšak podle oprávnění) – 1) export všech databází (pouze u rootu) – funkce mysqldump, 2) export pouze jedné vybrané databáze a 3) export konkrétní vybrané tabulky
    • režim exportu – rychlý / vlastní – ve vlastním lze nastavit např. komprimaci, způsob fragmentace, znakovou sadu, parametry klíčů, typ kompatibility, obsah exportu (strukturu či pouze data), podmínky vytváření objektů (závisí na již existujících objektech), maximální velikost dotazu dle počtu záznamů.
    • formát exportu
  • Využití replikace – vhodné pro větší datový objem bez přerušení výkonu služby na zdrojovém serveru.
    • Replikace je založena na principu synchronizace master – slave. Potřebujeme tedy k tomuto kroku dva plnohodnotné databázové servery, avšak jeden bude nadále používán ke všem dotazům (master) a na druhý server (slave) jsou data zrcadlena. Obvykle je tohoto využito pro vhodné rozložení zatížení provozu (slave je využíván pouze pro čtecí akce).
    • V určitém momentu se provede pozastavení replikace a slave server (datové soubory) lze zkopírovat podobně, jako v prvním způsobu.
    • Původní replikaci lze znovu obnovit a systém běží dále po zaktualizování původního slave.
    • Kopii slave přenastavíme na cílovém serveru na master.

Formáty vhodné pro přenos dat

  • SQL – nejběžnější
  • CSV (CSV pro MS Excel)
  • ODS (formát pro Open Office)
  • XML
  • PHP array
  • JSON
  • PDF
  • a jiné platformní formáty (MediaWiki, LaTEX …)

Import dat

  • Pomocí volby správce (např. PhpMyAdmin) import
  • Provede se upload datového archivu (lze i v zip formátu)
  • Omezení
    • již existující objekty mohou zabránit vytvoření nového objektu se stejným názvem
    • max. doba vykonávání PHP skriptu (php.ini)
    • max. poslaná velikost dat při uploadu (metoda POST, …), proto je zapotřebí při exportu zvolit vhodnou fragmentaci
  • Při importu lze také nastavit podobné parametry jako při exportu (např. jaká je cílová znaková sada apod.).

Přizpůsobení dat cílového systému

  • Přizpůsobení dat na cílovém databázovém systému je závislé na způsobu jejich využívání … např. která aplikace data používá. Často je zapotřebí přenastavit jednotlivé hodnoty záznamů v tabulkách. Typickým příkladem je migrace WordPressu:
    • přesun souborů redakčního systému přes FTP
    • export a import databáze
    • změna starých URL na nové ve všech záznamech
    • Export a import JSON dat Customizeru (nastavení vzhledu ve WordPressu).
  • změna starých URL
    • Nejrychlejší způsob je přepsání dotčených tabulek pomocí např. PSPadu nástrojem najít a nahradit v samotném SQL souboru exportu.
    • Provedení aktualizačních SQL dotazů na cílovém serveru po importu.