Údržba databáze

Představte si databázi jako srdce informačního systému. Její instalace a naplnění daty jsou pouze prvním krokem; aby však toto srdce spolehlivě tepalo i pod rostoucí zátěží a v neustále se měnícím digitálním prostředí, vyžaduje systematickou a odbornou péči. Údržba databáze (DB Maintenance) není jednorázový úkol, nýbrž kontinuální proces, jehož cílem je zajistit tři základní pilíře: integritu dat, vysokou dostupnost a optimální výkon.

V rámci správy databázového systému se údržba zaměřuje na předcházení kritickým stavům dříve, než nastanou. Kvalitní strategie údržby tvoří štít proti ztrátě dat při haváriích, chrání systém před bezpečnostními hrozbami a zajišťuje, že odezva aplikace zůstane blesková i při zpracování obrovských objemů informací. Následující kapitola podrobně rozebírá klíčové aspekty této správy – od technických operací, jako je zálohování a správa diskového prostoru, až po analytické činnosti, kam řadíme monitorování výkonu a optimalizaci dotazů.

Hlavní pilíře efektivní údržby

Pro dosažení stabilního a bezpečného databázového prostředí se budeme věnovat těmto klíčovým oblastem:

Zálohování databázového systému

Pravidelné zálohování dat je klíčové pro úspěšnou údržbu databázového systému. Je důležité vytvářet pravidelné zálohy dat, abyste se v případě havárie nebo jiného výpadku mohli vrátit k předchozímu stavu.

Typy záloh

Při plánování zálohování v databázovém systému je nutné najít rovnováhu mezi časem potřebným pro zálohu, nároky na diskový prostor a rychlostí následné obnovy.

Klíčové zásady pro zálohování

Pravidelnost a testování

Mnoho administrátorů se dopouští chyby, že sledují pouze to, zda „skript doběhl v pořádku“. Skutečným měřítkem úspěchu je ale schopnost data obnovit.

Zlaté pravidlo: Záloha, která nebyla nikdy cvičně obnovena, jako by neexistovala.

Aktualizace databázového systému

Je důležité aktualizovat databázový software na nejnovější verzi, aby byly zajištěny nejlepší výkonnost a bezpečnost. Většina aktualizací obsahuje opravy chyb a bezpečnostní aktualizace, které jsou důležité pro bezpečnost vašich dat.

Každá aktualizace musí být dobře naplánovaná – aktualizace znamená minimálně restart databáze, tj. musí se provádět tak, aby výpadek minimalizoval vliv na aplikace (uživatele), které databázi používají.

Před aktualizací se vždy provádí kompletní záloha.

Po aktualizaci nezapomenout aktualizovat dokumentaci.

Kontrola kompatibility

Průběh aktualizace databázového systému

Správa uživatelů a oprávnění

Správa uživatelských účtů a přístupových práv je důležitá pro zajištění bezpečnosti dat. Je důležité kontrolovat a spravovat přístupová práva uživatelů a minimalizovat rizika zneužití a neoprávněného přístupu k datům.

Účet v databázi by neměl existovat „navždy“. Největším bezpečnostním rizikem jsou tzv. zombie účty – účty bývalých zaměstnanců nebo lidí, kteří změnili pracovní pozici, ale jejich přístup zůstal aktivní.

Princip nejmenších funkčních oprávnění (Least Privilege)

Tento princip říká, že uživatel by měl mít minimální možnou úroveň oprávnění, která mu ještě umožní vykonávat jeho práci.

Auditování

Auditování je „černá skříňka“ vaší databáze. Slouží k forenzní analýze po incidentu, ale také k dodržování legislativních požadavků (např. GDPR).

Audit přihlašování (Access Logs)

Sledujeme samotný vstup do systému. Pokud vidíme 50 neúspěšných pokusů o přihlášení z neznámé IP adresy během minuty, víme, že čelíme útoku typu Brute Force.

Záznam obsahuje: Čas, uživatelské jméno, zdrojovou IP adresu, výsledek (úspěch/neúspěch) a délku relace.

Audit operací (DML/DDL Audit)

U citlivých dat (např. platy zaměstnanců, osobní údaje) nestačí vědět, že se někdo přihlásil. Musíme vědět, co přesně dělal.

Sledování pomalých dotazů a jejich optimalizace

Je důležité optimalizovat dotazy na databázi pro dosažení nejlepší výkonnosti a rychlosti. Tímto způsobem můžete minimalizovat čas na vyhledání a načtení dat.

Pomalé dotazy mohou zpomalit výkon celého systému a způsobovat zpoždění ve vyhodnocování všech dotazů.

Zodpovědností databázového specialisty je sledovat nejpomalejší dotazy a předávat informace na aplikační nebo databázové vývojáře pro optimalizaci.

Úspěšnou optimalizací se může oddálit potřeba zvyšování výkonu databáze (šetří se tak prostředky).

Způsob logování na MariaDB

Nastavení si zobrazíme následujícím způsobem:

SHOW GLOBAL VARIABLES LIKE "%slow_query%";
+---------------------+-----------------+
| Variable_name       | Value           |
+---------------------+-----------------+
| slow_query_log      | ON              |
| slow_query_log_file | aleman-slow.log |
+---------------------+-----------------+
2 rows in set (0.006 sec)

Logování nastavíme pomocí příkazu:

SET GLOBAL slow_query_log=1;

Soubor je defaultně uložen ve složce /var/lib/mysql/

Monitorování výkonu

Sledování výkonu databáze v reálném čase může pomoci odhalit případné problémy nebo úzká místa výkonu a umožnit včasnou reakci na tyto situace.

Clusterizace databáze

Clusterizace posouvá správu databáze z úrovně „jednoho serveru“ do světa vysoké dostupnosti (High Availability) a horizontálního škálování. Zatímco běžná údržba (zálohy, aktualizace) chrání data, clusterizace chrání provoz systému před výpadkem a přetížením.

Replikace je proces automatického kopírování dat z jednoho databázového uzlu (node) na druhý. Podle toho, jak k zápisu a čtení přistupujeme, rozlišujeme dva hlavní modely:

Replikace Master-Slave (Primary-Replica)

V tomto modelu existuje jasná dělba rolí. Master (primární uzel) je jediným místem, kam aplikace zapisuje data. Slaves (repliky) pak tyto změny přebírají.

Multi-Master replikace

Všechny uzly v clusteru jsou si rovny a na každý z nich lze zapisovat. To vyžaduje komplexní mechanismus pro řešení konfliktů.

Synchronizace: bezpečnost vs. rychlost

Při replikaci dat mezi uzly musíme vyřešit zásadní otázku: Kdy považujeme transakci za dokončenou?

TypPrincipVýhodyNevýhody
SynchronníTransakce je potvrzena, až když ji zapíšou všechny uzly.100% konzistence, nulová ztráta dat při výpadku.Latence (čeká se na nejpomalejší uzel), riziko zastavení při výpadku sítě.
AsynchronníMaster potvrdí zápis ihned a replikám ho pošle „na pozadí“.Maximální rychlost a propustnost.Riziko ztráty posledních transakcí, pokud Master havaruje dříve, než data odešle.

Sharding (horizontální škálování)

Pokud už data narostou do takových rozměrů, že je jeden server nezvládne efektivně indexovat (ani v clusteru), nastupuje Sharding.

Místo jedné obří tabulky data „rozsekáme“ na menší logické kusy (shardy) a ty rozmístíme na různé fyzické stroje. Například:

Pozor na složitost: Sharding je „architektonické peklo“. Jakmile potřebujete spojit data (JOIN) ze dvou různých shardů, výkon rapidně klesá a logika aplikace se extrémně komplikuje. Sharding by měl být až poslední možností, když běžná clusterizace nestačí.

Load Balancing

Aby uživatel nemusel řešit, na který server se zrovna připojit, staví se před cluster Load Balancer (např. HAProxy nebo MariaDB MaxScale).

Tato vrstva funguje jako inteligentní směrovač:

  1. zápisy posílá na Mastera.
  2. čtení rozděluje mezi dostupné Slavy podle jejich aktuálního vytížení.
  3. Health Check: Pokud některý uzel v clusteru „umře“, Load Balancer ho okamžitě vyřadí z provozu, dokud nebude opět v pořádku.

Správa diskového prostoru

Je důležité sledovat diskový prostor, který databáze používá, aby se zabránilo situacím, kdy diskový prostor dosáhne svého limitu a databáze bude přestávat pracovat. Je důležité pravidelně provádět údržbu databáze, například odstraňovat nepotřebné tabulky nebo indexy, aby se minimalizovalo množství dat, které databáze používá. Také může být užitečné používat nástroje pro správu diskového prostoru, jako jsou například nástroje pro monitorování disku a jeho využití.

Neřešte stav, řešte trend.

Sledovat, že máte „teď hned“ 50 GB volného místa, nestačí. Klíčem k profesionální správě je plánování kapacity diskového prostoru.

Sledování vývoje v čase: Pomocí monitorovacích nástrojů (např. Zabbix, Grafana, Prometheus) sledujeme křivku zaplnění. Pokud víme, že databáze roste o 2 GB týdně, dokážeme přesně předpovědět, kdy narazíme na limit, a s předstihem objednat nový hardware.

Pravidlo 20 %: Proč neplnit disk na 100 %?

Řešení nedostatku místa

Když se disk začne plnit, máme tři hlavní cesty, jak situaci řešit: