Jako hostingová firma se stovkami klientů se zabýváme zálohováním databází všech velikostí dnes a denně. Řešit případné průšvihy je naše práce. A daří se nám to. Mnohým z nich však jde předcházet. Podívejme se společně jak.
Jaké máte možnosti zálohování databáze, a jaké jsou jejich plusy i mínusy
Variant zálohování databází je celá řada, v principu však spadají do dvou kategorií: standardní zálohování formou dumpu nebo databázová replikace. Nadstavbou replikace je pak provoz databáze v rámci Galera clusteru. Replikační řešení je také možné doplnit o úplně nejpokročilejší variantu, a to zálohování s point-in-time-recovery, tedy s obnovou ke konkrétnímu času.
Standardní zálohování databází
Většina online projektů využívá pro svoje databáze pouze jeden server. A to buď jako server samostatný, oddělený od aplikačního, nebo mají vše na jednom serveru.
Toto je standardní řešení databázového serveru, které je i cenově velice výhodné, protože „živíte“ pouze jeden kus hardwaru či jeho část. Pokud by ale nastala nějaká nečekaná situace, ať už by se jednalo o chybu hardwaru, či cokoli jiného, tak o celou databázi přicházíte. Zároveň jakmile je databázový server nedostupný, tak vám neběží web, ani cokoli jiného, co je na vaší databázi závislé - například skladové systémy nebo účetnictví.
V momentě selhání databázového serveru přichází na řadu vaše zálohy. U tohoto řešení databáze se zálohuje stadardně tzv. databázovým dumpem, kdy se kopie celé obsahu databáze uloží do oddělené lokality. Frekvence je obvykle pouze jednou za 24 hodin, obvykle v noci. Hlavním důvodem je, že zálohování tímto způsobem nějakou dobu trvá a v noci tato zátěž databáze nezasahuje do denního provozu e-shopu či jiného projektu a nekoliduje například s návštěvnostními špičkami.
Co to znamená? Pokud dojde k poruše vašeho serveru, data můžete obnovit ze zálohy, ale tento systém má několik nevýhod. Zaprvé, obnova dat z dumpu trvá relativně dlouho, protože se celá vaše databáze musí přesunout z jednoho místa na druhé. Zadruhé, vaše data nejsou zcela aktuální – pokud k poruše došlo ve 2 odpoledne a zálohu máte ze 4 ráno, přicházíte o 10 hodin dat, která budete muset manuálně dohledávat. V neposlední řadě je třeba říct, že u databáze pouze na jednom serveru je vyšší šance selhání z důvodu hardwarové poruchy, nebo chyby způsobené lidským faktorem (např. chyba skriptu), než když zvolíte pokročilejší řešení.
Shrnutí: Standardní zálohování databází je tím nejjednodušším a nejlevnějším řešením, ale nese s sebou větší míru rizika ztráty dat a delší dobu nefunkčnosti vašeho projektu v případě problémů.
Replikace databází
O trochu sofistikovanější řešení je replikace databází. Typicky jde o použití dvou databázových serverů, kdy jeden slouží jako primární server a odbavuje požadavky, a ten druhý je záložní. Na záložním databázovém serveru jsou uložena stejná data jako na serveru primárním a všechny změny, které na primární databázi proběhnou, se asynchronně přenášejí i na tuto zálohu. Opět nelze zapomenout na další zálohu do oddělené lokality pomocí dumpu pro případ chyby na obou serverech.
Hlavní výhodou tohoto řešení je, že pokud dojde například k hardwarovému selhání primárního serveru, můžete obvykle v řádech sekund přepnout provoz na repliku – záložní databázový server. Váš e-shop, nebo IT projekt jede bez problému dál a naši administrátoři mezitím vyřeší problém na serveru jedna. Pokud selže server záložní, nestane se z pohledu provozu vůbec nic.
Jsou ale i situace, kdy se případné selhání databáze týká obou serverů – typicky jde o lidskou chybu, která není včas odhalena a navzdory asynchronnosti (tj. v čase opožděné) replikace, se tato chyba propíše i na druhý databázový server. Pokud jde o velkou chybu, která například vede ke smazání databáze, nezbývá, než ji celou obnovit z dumpu.
Tohle řešení je tedy výrazně spolehlivější než provoz databáze na jednom serveru, proti lidskému faktoru vás ale pořád nechrání.
Replikace v rámci Galera clusteru
Pokud by vám nestačila klasická replikace databází můžete využít Galera cluster, což je ještě robustnější a tedy i spolehlivější řešení. Oproti standardní replikaci databází je Galera cluster plně synchronní, takže pokud dojde k poruše kteréhokoliv z databázových serverů, z pohledu uživatele se nic neděje a není ani třeba nic přepínat. Toto řešení je také velmi dobře horizontálně škálovatelné a hodí se tak pro velké databáze, například u velkých e-shopů, protože lze snadno přidávat výkon dle potřeby. Umožňuje také plné rozdělení rolí – můžete vyhradit některý server pro zápisy, jiný pro reporty a podobně.
Pro úplnost je potřeba si říct, že tohle řešení má i svá omezení. V prvé řadě je vhodné jen pro některé databázové technologie, primárně pro MariaDB. Zároveň pro Galera cluster musíte mít uzpůsobenou aplikaci, aby vše správně fungovalo. Mezi další omezení patří např. kolizní zápisy a nutnost používání primárních klíčů.
Shrnutí: Replikace databází představuje využití 2 nebo více databázových serverů, kdy jeden z nich slouží jako primární server a další jako záloha. Toto řešení je velmi odolné vůči hardwarovým poruchám serverů., které zvládá Replikace databází funguje v podstatě bez výpadku. Nechrání však proti lidské chybě. Nejpokročilejším typem replikace je Galera cluster, který je obzvlášť vhodný pro velké e-shopy.
Jak zabezpečit databázi proti lidskému faktoru a zajistit její 100% obnovu
Pokud opravdu potřebujete, aby vaše databáze byly vždy a za všech okolností dostupné, a zároveň si nemůžete dovolit jakoukoli ztrátu dat, doporučujeme replikační řešení rozšířit o prémiové zálohování s point-in-time-recovery (PITR).
PITR je kompatibilní jak s Galerou, tak se standardní replikací. K jeho využití potřebujete další server, který ukládá data z binárních logů a zároveň se na něj průběžně během dne zálohují konzistentní snapshoty. Typicky jednou za hodinu, ale lze s námi domluvit i jinou frekvenci.
S PITR tedy nejen, že máte z předchozí noci zálohu celé databáze v podobě dumpu, který doporučujeme dělat vždy, ale i konzistentní snapshot z poslední hodiny, a navíc zálohu binárních logů. Co to pro vás znamená? V případě, že dojde ke smazání databáze, nebo její části, můžete ji velmi rychle obnovit ze snapshotu, který je maximálně hodinu starý. Chybějící hodinu dat pro vás navíc dokážeme obnovit z binárního logu přesně do okamžiku, kdy k chybě došlo. Ztráta dat je tak nulová a rychlost obnovy se pohybuje v řádu minut, což je nesrovnatelné s obnovou z dumpu.
Navzdory všem benefitům i toto řešení má svoje nevýhody. Konkrétně, potřebu pořídit si další server, který nemůžete použít na nic jiného. Tento server nemusí mít takový výkon jako váš primární databázový server, ale potřebuje relativně velké diskové úložiště. Přesná velikost samozřejmě záleží na tom, jak velkou máte databázi, a jak často potřebujete dělat snapshoty. PITR je možné využít u PostgreSQL i MariaDB.
Shrnutí: Zálohování s PITR vás ochrání před lidskou chybou, zajistí obnovení 100 % dat a násobně urychlí celý proces obnovy. Jeho využití však vyžaduje provoz dalšího serveru.
Porovnání variant zálohování: Modelový test obnovy dat
Abychom vám více přiblížili, jak dlouho by trvala obnova databáze při využití všech popsaných možností, provedli jsme test na 4 jádrovém serveru a obnovovali 20 GB velký databázový dump. Tady vidíte, jak to dopadlo:
Obnova serveru nám trvala 50 minut. A to převážně kvůli tomu, že nějakou dobu zabrala obnova dat a indexu, kterého tam bylo poměrně hodně. Délka byla v podstatě identická u standardního zálohování i u replikace. Výhodou replikace ale je, že i po dobu potřebnou k obnově může databáze fungovat ze záložního serveru (pokud tam data zůstala zachována). Galera cluster vyžaduje trochu více času, v tomto případě 75 minut, což je způsobeno jeho specifickým fungováním.
Žádná z těchto variant neumožňuje obnovu dat ze zálohy ke konkrétnímu času. To dokáže pouze zálohovací doplněk PITR.
S ním jsme schopni tuto 20 GB databázi obnovit desetkrát rychleji, tedy za pouhých 5 minut. V tom je započtený i čas potřebný pro přenos snapshotu. Data máme navíc zcela aktuální. To je oproti standardnímu zálohování nebo samotné replikaci nesporná výhoda.
Co si z toho odnést
Proč zvolit databázovou replikaci?
- Vaše databáze musí být co nejvíce dostupná
- Na databázi závisí i další subjekty (pobočky, fakturace, skladové systémy, …)
- Provozujete velmi navštěvovaný e-shop a potřebujete škálovat a rozdělovat výkon
- Provádíte různé analýzy dat, reporty
Proč si navíc vybrat i prémiové zálohování s PITR?
- Nemůžete si dovolit přijít o jakákoliv data
- Vyžadujete vysokou rychlost obnovy dat i v případě velkých databází
- Chcete se chránit proti lidskému faktoru (smazání dat, chybný skript, ...)
Chcete se dozvědět více o PITR, replikaci databází či Galera clusteru? Napište si na konzultace@vshosting.cz o nezávaznou a bezplatnou konzultaci s našimi odborníky, kteří vám poradí, jaké řešení je nejvhodnější právě pro vás.