← Nástroje mimo GitHub

NKS SQL Backup

Webová aplikace, která plánuje a hlídá zálohy databází MySQL a MariaDB z více serverů a ukládá je šifrovaně na disk, SFTP nebo S3.

Zálohy databází bývají na každém serveru jinak. Tady skript v cronu, který před dvěma lety někdo napsal, tamhle ruční mysqldump před větší úpravou, jinde nic. Že záloha neproběhla, se obvykle zjistí až ve chvíli, kdy je potřeba. NKS SQL Backup je samostatná aplikace s webovým rozhraním, která zálohy databází MySQL a MariaDB ze všech serverů plánuje, spouští, ukládá na víc míst a hlídá, jestli se povedly.

Místo skriptů roztroušených po serverech

Skript v cronu zálohuje jen server, na kterém běží, a jeho výsledek nikdo nevidí. Zálohy z různých strojů leží každá jinde, s jinou kompresí a jiným pravidlem pro mazání starých kopií. Když skript tiše přestane fungovat, třeba po změně hesla k databázi, nikoho to neupozorní.

NKS SQL Backup má všechno na jednom místě. V přehledu je vidět, které úlohy proběhly, které selhaly a kolik místa zálohy zabírají. Servery, databáze, plány i cíle se nastavují ve webovém rozhraní, na zálohovaných serverech nemusí běžet žádná další služba.

Co aplikace umí

  • Víc serverů a databází. Každá úloha má vlastní plán ve formátu cron. Plán jde vybrat z předvoleb (denně, každých šest hodin, týdně, měsíčně) a rozhraní hned ukáže, kdy proběhnou další spuštění.
  • Dvojí připojení. K databázi se aplikace připojí přímo po síti, nebo přes SSH. V druhém případě běží záloha přímo na cílovém serveru, komprimuje se tam a po síti putuje už zmenšená. U spojení přes SSH a SFTP se ověřuje připnutý otisk klíče serveru.
  • Zkouška spojení a nalezení databází. U nového serveru jedno tlačítko ověří připojení a druhé vypíše databáze, které na něm jsou, takže se nemusí opisovat.
  • Komprese a šifrování. Výchozí komprese je zstd, na výběr je gzip, zip nebo žádná. Zálohu jde zašifrovat nástrojem age pomocí hesla, takže ji bez něj nikdo nepřečte, ani když se dostane ven z úložiště.
  • Víc cílů. Záloha se uloží na lokální disk nebo připojené síťové úložiště a odtud se zkopíruje na server přes SFTP nebo do úložiště kompatibilního s S3. Selhání hlavního cíle znamená selhání úlohy, selhání dalších cílů se ohlásí jako varování.
  • Mazání starých kopií. Každá úloha má vlastní pravidlo: ponechat posledních N záloh a smazat starší než zvolený počet dní.
  • Historie a záznamy. U každého běhu je výsledek, velikost a záznam průběhu. Zálohu jde stáhnout přímo z rozhraní a úlohu pustit hned tlačítkem „Spustit“, bez čekání na plán.
  • Upozornění. Po úspěšném nebo neúspěšném běhu umí aplikace poslat webhook. Nastavení má tlačítko na zkušební odeslání, aby bylo jisté, že zpráva dojde.

Záloha, které se dá věřit

Zálohy se zpracovávají proudem: výpis databáze jde rovnou do komprese a šifrování, bez nekomprimované kopie na disku. Soubor dostane konečné jméno až ve chvíli, kdy je celý zapsaný. Přerušená záloha se proto nikdy nevydává za hotovou.

Plánovač hlídá souběh. Úloha, která ještě běží, se podruhé nespustí a počet souběžných záloh má strop, aby noční okno nepřetížilo databázové servery. Když se aplikace restartuje uprostřed zálohy, rozběhnutý běh se po startu uzavře jako nedokončený a nezůstane viset ve stavu „běží“. Pokud by přestal fungovat vnitřní plánovač, kontejner se ohlásí jako nezdravý a hlídací skript na hostiteli ho do pár minut restartuje.

Přehled místo hledání v logu

Úvodní stránka ukazuje poslední běhy a u každého cíle počet souborů, zabrané a volné místo a celkovou velikost záloh. Stránky se obnovují samy, takže je hned vidět, která záloha právě běží a jak dopadla. Kdo kdy co změnil, zapisuje auditní záznam.

Přístup a citlivé údaje

Do rozhraní se přihlašuje přes jednotné přihlášení (OpenID Connect) a pustí jen uživatele z určené skupiny. Hesla k databázím a k cílovým úložištím jsou v konfiguraci aplikace zašifrovaná. Pro zálohování stačí databázový účet bez práva měnit data. Při přímém připojení se na zálohovaný server nic neinstaluje, při záloze přes SSH na něm musí být nástroje mysqldump a zstd.

Nasazení

Aplikace se dodává jako kontejner Docker a celá je v jednom programu v Go, včetně plánovače a webového rozhraní. Konfiguraci drží v souborové databázi SQLite. Kromě webového rozhraní má příkazy pro skriptované zakládání serverů, databází a úloh, takže jde nastavit desítky databází jedním skriptem.

Pro koho to je

  • Pro firmy a správce, kteří mají databáze MySQL nebo MariaDB rozeseté po několika serverech a chtějí zálohy na jednom místě.
  • Pro provozovatele webů s víc databázemi na jednom serveru, kde se každá zálohuje v jinou hodinu, aby se zálohy nepraly o výkon.
  • Pro ty, kdo potřebují kopii záloh mimo vlastní budovu, na serveru přes SFTP nebo v úložišti S3.

Stav projektu

NKS SQL Backup je v provozu a každou noc zálohuje databáze projektů studia. Obnovu ze zálohy zatím rozhraní neobsahuje: zálohu se stáhne a nahraje do databáze běžnými nástroji. Rozhraní je v angličtině a podporuje MySQL a MariaDB.

Zájem o nasazení

Chcete mít zálohy databází pod kontrolou? Napište přes poptávkový formulář nebo na dev@nks-hub.cz.

← Zpět na přehled