Portál AbcLinuxu, 8. května 2025 14:09

Dotaz: Záloha konkrétní databáze v MySQL

13.12.2012 11:02 Robert | skóre: 16 | blog: zabak
Záloha konkrétní databáze v MySQL
Přečteno: 551×
Odpovědět | Admin
Zdravím, nějak se mi nezdá požadavek jednoho z administratorů naší aplikace. Na databázovém serveru máme 4 databáze, každá z aplikací má svou databázi (tedy i svého uživatele pro přístup). Teď mě oslovil jeden ze správců webové aplikace, že potřebuje root heslo k zálohování své databáze. Tvrdí, že jinak nejde zálohovat. Je tedy nutné aby měl root heslo pro zálohu jedné z databází? Může zálohovat pomocí uživatele, který je vytvořen pro přístup jejich aplikace k databázi? Šlo by pro zálohu použít mysqldump s účtem webové aplikace? Děkuji za radu.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.12.2012 12:02 NN
Rozbalit Rozbalit vše Re: Záloha konkrétní databáze v MySQL
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ucet root nutny neni. Uzivatel potrebuje pro zalohovani pomoci mysqldump minimalne opravneni SELECT na konkretni databazi. Toto opravneni je mozne pridat pomoci prikazu GRANT.
14.12.2012 21:24 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Záloha konkrétní databáze v MySQL
No minimálně uživatel potřebuje SELECT a LOCK TABLE a pokud existují pohledy tak i SHOW VIEW.
LOCK TABLE to obvykle potřebuje protože -opt obsahuje --lock-tables a to je zapnuto by default.
SELECT a SHOW VIEW uživatel už asi má (bo jak by jinak s DB pracoval, že(?)), ale LOCK TABLE nemusí mít a potom mu to nelze a z neznalosti plače ;-).

Pomocí --skip-opt lze vypnout defaultní -opt a tedy i --lock-tables, ale taky se vypne, všechno toto (respektive nezapne, takže je to třeba vyjmenovat pokud je to žádáno):
--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset.
PS: Ono to --lock-tables má svůj význam, oprávnění bych uživateli přidal, nebo vytvořil „bezpečného zálohovacího“ uživatele jen z těmi výše uvedenými oprávněními…

Připomenu jen (autorovi dotazu), že mysqldump lze použít vzdáleně, tedy není teda nutné přihlášení na danný stroj, tedy třeba takto (switche které opravdu chci, rád vyjmenovávám, tak sioi to už přeberte :) )
mysqldump --skip-dump-date --host=IPaddres_or_name --user=user --password=strasneheslo --add-drop-database \
--add-drop-table --add-locks --comments --create-options --disable-keys --hex-blob --lock-tables --routines --max_allowed_packet=4M
A vůbec, tady to všechno je :-).

PS: S --skip-dump-date vytvoří binárně identický dump nezměněné DB, výhodné u málo INSERT/UPDATE používaných (velkých) databází, které se třeba zálohují 1× denně - stačí pak uchovat jen změněné dumpy, aniž by byla třeba nějaká „vyšší“ informace o „nezměně db“ (škoda, že to tak nemá i PostgreSQL).
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
rADOn avatar 14.12.2012 15:11 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: Záloha konkrétní databáze v MySQL
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nastroje na hotbackup muzou vyzadovat cteci prava na databazove soubory (nemusi to byt nutne root). Pouzivaji se pokud je databaze natolik velka a aktivni ze ji nelze rozume zazalohovat mysqldumpem.
"2^24 comments ought to be enough for anyone" -- CmdrTaco

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.