Jak zálohovat MySQL databázi?

Jak zálohovat MySQL databázi?
« kdy: 18. 09. 2013, 16:36:00 »
Je mozne nejako zalohovat mysql databazu za behu? dakujem
« Poslední změna: 18. 09. 2013, 21:32:37 od Petr Krčmář »


pecko

  • ***
  • 105
    • Zobrazit profil
    • E-mail
Re:Ako zalohovat mysql databazu?
« Odpověď #1 kdy: 18. 09. 2013, 16:46:56 »
man mysqldump

Re:Ako zalohovat mysql databazu?
« Odpověď #2 kdy: 18. 09. 2013, 17:59:33 »
Mysqldump urobi nejaky dokument kde su prikazy na tvorbu tabuliek....alebo sa mylim?
Este som cital mysqlhotcopy...pouziva niekto?
Nie je nieco elegantnejsie ako rsyncy, bez toho aby som musel databazu vypnut?

lupex

Re:Ako zalohovat mysql databazu?
« Odpověď #3 kdy: 18. 09. 2013, 18:09:56 »
automysqlbackup

dustin

Re:Ako zalohovat mysql databazu?
« Odpověď #4 kdy: 18. 09. 2013, 21:29:20 »
Záleží, jaké máš konkrétní požadavky, jaké používáš enginy atd.

Máme velkou myisam + innoDB (desítky GB), jejíž dump trvá docela dlouho. Je potřeba zajistit konzistenci zálohy. Mohli bychom použít mysqldump s parametrem --single-transaction,ale ta se nevztahuje na myisam. Nebo klasicky zamknout tabulky, jenže takové zámky zaseknou aplikační server, když nebude moci dlouho zapisovat.

Osvědčila se nám master/slave replikace na jiný stroj, ten shodit a datový adresář zazálohovat rsyncem (cca 20 minut). Respektive shazujeme až druhý slave (tedy třetí v řadě), aby první slave byl pořád aktuální a kdykoliv jej šlo použít místo masteru. Aktualizujeme takto i DB pro vývojáře, aby měli minimálně každý den čerstvá data z produkce. Když si ji rozvrtají, během 20 minut mají čerstvou.


dustin

Re:Ako zalohovat mysql databazu?
« Odpověď #5 kdy: 18. 09. 2013, 22:28:01 »
Osvědčila se nám master/slave replikace na jiný stroj, ten shodit a datový adresář zazálohovat rsyncem (cca 20 minut).

Samozřejmě jsem myslel shodit ten mysql server, ne celý stroj :)

Re:Jak zálohovat MySQL databázi?
« Odpověď #6 kdy: 19. 09. 2013, 00:32:02 »
Pokud klient aplikacim nevadi ze budou po cas zalohovani cekat, da se udelat totok:
na jedne konzoli spustit mysql commandline utilitu, a udelat: FLUSH TABLES WITH READ LOCK;
to flushne vsechny data na disk, a hodi read lock na vsechny tabulky.
Na druhe konzoli je mozne natvrdo zkopirovat vsechny data primo jako soubory, napr. z /var/lib/mysql/* nekam.

Zaloha z replikovaneho slave serveru, jak jiz bylo zmineno, je nejlepsi.

Re:Jak zálohovat MySQL databázi?
« Odpověď #7 kdy: 19. 09. 2013, 08:05:07 »
Souhlasím s Dustinem. My sice máme jen pár GB v MyISAm, ale děláme to vpodstatě stejně. Replikujeme, a 2x denně uděláme na slavu flush, zamkneme databázi na readonly, zkopírujeme soubory, odemkneme, a další databázi.

Nějaká komerční firma dělala nástroj, který fungoval přibližně tak, že normálně za běhu zkopíroval innodb databázi, a potom ji opravil na nějaký poslední bod, kdy byla konsistentní data. Detaily neznám.

dustin

Re:Jak zálohovat MySQL databázi?
« Odpověď #8 kdy: 19. 09. 2013, 08:35:19 »
Hm, ten flush se zámkem je daleko lepší než naše shození celé DB. Díky za inspiraci :-)

j

Re:Ako zalohovat mysql databazu?
« Odpověď #9 kdy: 19. 09. 2013, 09:33:56 »
man mysqldump

Odpoved naprosto khownu ...

rado3105: Mysql zalohovat za chodu nelze, nedostanes konzistentni zalohu. Jinak viz ostatni - da se to ruzne obchazet, ale pokud chces realne mit zalohovanou databazi, kterou nemuzes vypnout, tak se budes muset ohlidnout jinde.

Jinak technicky - muzes pouzit nejaky FS ktery umi snapy, zamknout tabulky, vysypat cache a udelat snap, a odemnout je. Melo by to byt dostatecne rychly na to, aby si appky nevsimly. Ziskas tim backup binarnich souboru - nikoli dump, cimz zaroven ziskas daleko efektivnejsi moznost data obnovit. Obnovovat vetsi dump muze bejt na par hodin ...

dustin

Re:Jak zálohovat MySQL databázi?
« Odpověď #10 kdy: 19. 09. 2013, 10:17:42 »
Cestu přes snapshot fs jsem zkoušeli (LVM i btrfs), ale vždy tyto vrstvy způsobily výrazný pokles rychlosti DB, což byla pro nás konečná. Je to pár let, možná už je dnes btrfs jinde, ale tehdy to pro nás bylo fakt nepoužitelné.

Re:Jak zálohovat MySQL databázi?
« Odpověď #11 kdy: 19. 09. 2013, 10:25:38 »
Cestu přes snapshot fs jsem zkoušeli (LVM i btrfs), ale vždy tyto vrstvy způsobily výrazný pokles rychlosti DB, což byla pro nás konečná.
UFS na FreeBSD umí snapshoty nativně. Ale kvůli tomu asi OS měnit nebudete :)

dustin

Re:Jak zálohovat MySQL databázi?
« Odpověď #12 kdy: 19. 09. 2013, 10:54:19 »
A má jejich využití nějaký vliv na výkon FS? Je výkon takovéh snapshotového FS srovnatelný třeba s linuxovým XFS na srovnatelném HW? Fakt mě to zajímá, je to docela klíčové téma. Díky.

Re:Jak zálohovat MySQL databázi?
« Odpověď #13 kdy: 19. 09. 2013, 11:24:12 »
A má jejich využití nějaký vliv na výkon FS? Je výkon takovéh snapshotového FS srovnatelný třeba s linuxovým XFS na srovnatelném HW? Fakt mě to zajímá, je to docela klíčové téma. Díky.
Je to standardní FreeBSĎácký FS (FreeBSD má nativně jenom UFS a ZFS). Jaký je jeho výkon pro konkrétní účel na konkrétním HW, to by samozřejmě bylo nutné otestovat.

dustin

Re:Jak zálohovat MySQL databázi?
« Odpověď #14 kdy: 19. 09. 2013, 11:31:55 »
Díky za info.