Portál AbcLinuxu, 6. května 2025 06:18

Dotaz: Optimální zálohovací postup

10.1.2012 15:40 john.nejohn
Optimální zálohovací postup
Přečteno: 734×
Odpovědět | Admin
Ahoj. Po delší době pokusů jsem dospěl k určité metodě zálohování dat. Mám backup server, který cronem spouští zálohovací skripty, které spouští rdiff-backup, který se připojí přes ssh na zálohovaný stroj. Na tomto stroji je u veřejného klíče backup serveru v authorized_keys uveden jako command můj skript, který vytvoří dump databáze a výsledek této operace pošle na stderr (to proto, že se to objeví ve výstupu rdiff-backupu na backup serveru), potom se spustí rdiff-backup server v readonly režimu pro / a provede se záloha. Výhoda tohoto řešení je, že při napadení zálohovaného serveru se útočník nedostane i k zálohám, dále při přerušení zálohy se z toho rdiff-backup automaticky zotaví vymazáním poslední transakce a také to, že rdiff-backup zálohuje všechny (i rozšířené) atributy souborů. S tímto jsem poměrně spokojený, ale pořád přemýšlím, jak zvýšit konzistenci záloh, proto bych chtěl vyslídit jak to řeší ostatní :-)? Přemýšlel jsem nad LVM a snapshoty, ale došel jsem k tomu, že tím konzistenci rozhodně nezvýším, protože sice udělám snímek oddílu v nějaký čas, ale to neřeší nekonzistenci dat (aplikace upravuje soubory A B a C a já udělám snímek uprostřed zápisu souboru B).
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Heron avatar 10.1.2012 16:23 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
Odpovědět | | Sbalit | Link | Blokovat | Admin
Přemýšlel jsem nad LVM a snapshoty, ale došel jsem k tomu, že tím konzistenci rozhodně nezvýším, protože sice udělám snímek oddílu v nějaký čas, ale to neřeší nekonzistenci dat (aplikace upravuje soubory A B a C a já udělám snímek uprostřed zápisu souboru B).

Konzistenci tím rozhodně zvýšíte. Teď v podstatě zálohujete živý, měnící se systém souborů a navíc v jiný čas zálohujete DB a FS. Pokud uděláte LVM snaphot, což je atomická operace, tak (za předpokladu, že máte data i DB na jednom LV), máte zalohu dat i DB (nikoliv jako sql dump, ale přímo běžící službu) konzistentní.

aplikace upravuje soubory A B a C a já udělám snímek uprostřed zápisu souboru B

Nevím, zda máte na mysli nějakou konkrétní aplikaci, ale tohle se u slušně vychované app nestává. Navíc s tímto se budete v daleko větším měřítku potýkat i u toho rdiff-backupu.

Heron
10.1.2012 16:44 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
Vážně se může spolehnout na konzistenci DB? Nemám zkušenosti, ale nepřijde mi to samozřejmé, nemá běžící DB třeba nějaké neflushnuté cache?
10.1.2012 17:14 had
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
čau. přesně tak. i velká komerční řešení mají na db vlastní nástroje, se kterými můžeš dělat snapshoty/zálohovat. jinak s velkou pravděpodobností bude db nekonzistentí, i když většinou opravitelná, ale to není backup, ale loterie.

osobně využívám zálohování u firem pomocí obého (tak jak šla historie :)
Heron avatar 10.1.2012 18:19 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Optimální zálohovací postup

Ano můžeš. DB splňující požadavky ACID se musejí vyrovnat i s nekorektním ukončením. Dělají se testy (jeden například zde), kdy se po příkazu commit stroj odpojí od napájení (zde tedy byl proveden reset) a očekává se, že data budou v pořádku. A také jsou (ocituji z odkazovaného článku: "TPC-A/B test předepisuje ACID testy, které musí každá implementace splnit. Tyto testy ověřují konzistenci databáze, správnou funkčnost databázového engine a správnou implementaci testu. Všechny současné databáze podporující transakce jimi projdou bez problémů. S vyjímkou MySQL/MYISAM jsem nenašel databázi která by v testech selhala.").

10.1.2012 19:16 john.nejohn
Rozbalit Rozbalit vše Re: Optimální zálohovací postup

S vyjímkou MySQL/MYISAM jsem nenašel databázi která by v testech selhala.").

No právě. Jeden ze zálohovaných serverů je web server s redakčním systémem pracujícím s mysql/myisam. Na tom serveru teda nemám ani LVM. Jinak všude kde to LVM mám se vážně vyplatí snapshotovat? Co třeba situace, kdy nějaký daný proces zapisuje do souboru a má ho uzamčený? Předpokládám, že lvm snapshot si zámek zachová a rdiff-backup takový soubor ani nezazálohuje (resp. snad podle manuálu to několikrát to zkusí, ale neboť je to snapshot, tak se mu to nepovede). Podle mě má snapshot výhodu hlavně co se týče logování (nestane se, že aplikace něco provede a nebude to v logu a obráceně). Jinak mi to přijde tak půl na půl to pro a proti snímkování.
Heron avatar 10.1.2012 21:17 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
LVM snapshot si zámek souboru nepodrží. Snapshot LV je vlastně atomická "kopie" blokového zařízení, na kterém je systém souborů. Tedy je třeba vytvořit snapshot daného LV a potom připojit souborový systém, který je na něm, případně lze zazálohovat celý obraz.
10.1.2012 22:27 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
Ne, ale často lze udělat stop db, vytvořit snapshot, pusit db - Je to samozřejmě s výpadkem, ale sekundovým a někd eje to nepřípustné (nebo si na to hrají :-) ).
Zálohuji tak i optimisticky virtuální strojesysrq s, pause, snapshot, unpause, zkopírovaní celého souboru/disku - pro případ totálního destrukce znovu-spustím stroj lépe, než kdyby byl navtrdo vypnut (a až pak si můžu hrát s aktuálními zálohami dat).
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
10.1.2012 22:52 2X4B-523P | skóre: 38 | blog: Zelezo_vs_Debian
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
optimisticky virtuální stroj snad nepotřebuje zálohu :-D
10.1.2012 22:58 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
Nesmíme to přehánět :-) (chtěl jsem jen naznačit, že to není 100%, bo to bych ho musel vypnout)
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
10.1.2012 23:51 john.nejohn
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
Ne, ale často lze udělat stop db, vytvořit snapshot, pusit db - Je to samozřejmě s výpadkem, ale sekundovým a někd eje to nepřípustné (nebo si na to hrají :-) ).
Někdy i několikaminutovým výpadkem v závislosti na velikosti, konfiguraci a vytížení db.
11.1.2012 08:43 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
Přesně tak, máme docela rozměrnou mysql, která se vypíná i několik minut, než to všechno flushne.
11.1.2012 09:09 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
Ok: s/často/sem-tam/ :-)
DB by se měla zálohovat nástroji k tomu určenými, důležitým sdělením bylo to „Ne“.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
11.1.2012 13:20 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
Nicméně slušná databáze by měla mít možnost udělat její snapshot, který dále pošle do nějakého zálohovacího procesu, za běhu, bez přerušení pouze se snížením výkonu a bez toho, že je třeba databázi zastavit a pak dělat zálohu filesystému.
11.1.2012 13:57 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
Měla, ale v reálu se používají i takové, které nemají. A zálohování musí fungovat i pro tyto.

I když třeba u mysql + innodb stačí udělat mysqldump v transakci. Samozřejmě ten výkon bude po dobu dumpování tristní.
11.1.2012 14:06 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
Ano, a pak jediný skutečně spolehlivý konzistentní postup je zastavit databázi a udělat zálohu na úrovni filesystému neměnného souboru.
11.1.2012 14:30 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
Jo, když se to lze dovolit. V našem případě veliké mysql (innodb 100GB) jsme skončili u zálohování replikačního sekundáru na jiném stroji, kterého můžeme na chvíli shodit a zálohovat přes mysqldump -tab, který jsme vyhodnotili jako daleko nejrychlejší a lze snadno bzipovat. Samozřejmě to pak není konzistentní se zálohovanými soubory na filesystému hlavního serveru, ale to v našem případě nevadí. Replikaci permanentně monitorujeme, zda nevypadla.
12.1.2012 08:10 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
Jo, když se to lze dovolit.
Buď to zálohovanie potrebujete, alebo nie. Ak ho potrebujete, patrne má byť spoľahlivé. Buď si potom downtime počas backupu môžete dovoliť, alebo nie. Ak si ho dovoliť môžete, vypnete databázu, urobíte snapshot fs, nahodíte databázu, ide sa ďalej, backup robíte zo snapshotu. Ak si ani taký downtime dovoliť nemôžete, používate on-line zálohovacie nástroje príslušnej databázy. A tak ďalej, vyberáte postupy a nástroje, ktoré zodpovedajú potrebám.

A budem hnidopich: vyzerá, že ste celkom nároční používatelia databázy. Možno by bolo vhodné namiesto MySQL začať používať skutočnú databázu.
12.1.2012 11:13 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
Možno by bolo vhodné namiesto MySQL začať používať skutočnú databázu.
Nemyslím si, že bychom nyní něco získali přechodem na jinou db. Trend je jiný - v db nechávat jen core data (referenční integrita, transakce, atd.) a zbytek (např. fulltext, stovky miliónů/časem miliardy záznamů o přístupech pro další analýzu) přesunout do jiných méně rigidních a škálovatelnějších technologií (compass, mongodb, atd.). Není důvod vše držet v jedné molochovské DB. Až ten přesun postupně dokončíme (část už je, ale zbývá ještě spoustu funkcionalit zabírajících desítky GB v mysql), core databáze se smrskne a do budoucna bude pořešeno. Až na ni nebudeme klást tak vysoké rychlostní nároky, když budou data decentralizovaná, můžeme použít klidně jinou. Ale jestli k tomu dojde, to nevím, zatím nevidím takové přínosy, aby se to vyplatilo.
11.1.2012 14:38 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
Sekundovým? Si asi nikdy nezkoušel spouštět velkou databázi, viď? :)
11.1.2012 15:10 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
Co vím, tak zkoušel jsem několika-malo-desítek-gigovou, takže nevím jestli je velká.
Ne všechny DB jsou velké.
Časový problém bude spíše s aktuálním využíváním DBE v době přerušení a jeho vypnutím…
Maličké cca mezi 1-2GiB a nejsou aktivně využívané:
time rcpostgresql stop
Shutting down PostgreSQLserver stopped
                                                                     done
real    0m1.635s
user    0m0.056s
sys     0m0.028s

time rcpostgresql start
Starting PostgreSQL                                                  done

real    0m2.249s
user    0m0.056s
sys     0m0.048s

time rcmysql stop
Shutting down service MySQL                                          done

real    0m1.382s
user    0m0.024s
sys     0m0.028s
 time rcmysql start
Starting service MySQL                                               done

real    0m0.791s
user    0m0.012s
sys     0m0.020s
Takový výpadek v noci, úplně klidně oželím, kdybych chtěl, zvlášť když vím že mezi 0:00-5:00 na to nikdo nehrábna a nepotřebuje to.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
12.1.2012 13:30 Ivan
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
Ono nejde o velikost v GB, ale o aktivitu. Pokud mate v DB stovky(tisice) paralenich transakci, tak bud musite pockat az vsechny dobehnou anebo holt musite najaky transakce odrolovat. Pokud DB navrdo sestrelite, tak pri nabehu musite cekat na media recovery.

PS: to opravdu zadna opensource DB nepodporuje inkrementalni online backup? Co porad vsichni maji s tema LVM snapshotama?
12.1.2012 14:25 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
Co porad vsichni maji s tema LVM snapshotama?
To, že tím řešíte spoustu věcí, DB z toho může být jen malá část… a ta spousta věcí může trvat čtyři hodiny, ale vy máte po celou dobu aktuální stav z jednoho okamžiku.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
Heron avatar 12.1.2012 14:28 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: Optimální zálohovací postup
PS: to opravdu zadna opensource DB nepodporuje inkrementalni online backup? Co porad vsichni maji s tema LVM snapshotama?

Podporuje. MySQL umožnuje zálohovat pomocí binárních logů, u Postgresu jsou to potom WAL logy.

Mě osobně však snapshot disku přijde jako nejrychlejší varianta co do obnovení po katastrofě -- prostě se nakopírují soubory a server jede jako v době zálohy.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.