mysql backup jól'

Bizonyára akik több oldalt kiszolgáló szervert üzemeltetnek használnak valamilyen jobb/rosszabb megoldást adatbázis napi/heti biztonsági mentésére.

Nos, az én hegesztésem alább található.
Amiben érdekesebb, hogy a mysqldump nem egy file-ba kakilja bele az adatbázis szerver összes adatbázisát, hanem külön szedi őket és külön tárolja sql file-okba - így valamelyik oldalnál egy DB fail utáni helyreállítás talán kevesebb huzavonával fog zajlani.


mkdir $(date +%Y_%m_%d)
for line in $(mysql -u backup -AN -e "show databases");
do
mysqldump -u backup $line > $(date +%Y_%m_%d)/$line.sql ;
done

Hozzászólások

Éééééééés már meg is van a recept az inkonzisztens backupra.

A cím ezek után már lehetne is mysql backup NEM jól'

es az adatok mitol lesznek konzisztensek? a relaciok tartalma valtozhat mentes kozben, es biztosan nem kovetelmeny az adatbazisok kozotti konzisztencia ? pl.: db1 mentese (T1 idopont) utan torolnek belole valamit, amire hivatkozna a db3, de azt meg nem mentetted mert epp a db2 mentese fut (T2 idopont)

ugye az volt a kiindulo problema, hogy azert nem (eleg) jo a sima mysqldump, mert ha kozben modosul egy tabla, akkor nem konzisztens a mentesed. De ha elotte egy lock-kal megakadalyozod a tovabbi modositast, akkor ez a veszely nem fenyeget. Vagy nagyon beneztem volna a dolgot?

--
"A politikat, gazdasagot es a tobbi felsorolt faszsagot leszarom, amig engem nem erint (nem erint)" (bviktor)

es mi lesz a tarolt eljarasokkal ill. fuggvenyekkel? azokat hogy fogod visszaallitani? az alapertelmezett mysqldump opcioba ugyanis nem kerulnek be. es mar is visszajutottunk a " adatbazisok kozotti konzisztencia ?" kerdeskorhoz.

" · --routines, -R

Include stored routines (procedures and functions) for the dumped databases in the output. Use of this option requires the SELECT privilege for the mysql.proc table. The output generated
by using --routines contains CREATE PROCEDURE and CREATE FUNCTION statements to re-create the routines. However, these statements do not include attributes such as the routine creation and
modification timestamps. This means that when the routines are reloaded, they will be created with the timestamps equal to the reload time.

If you require routines to be re-created with their original timestamp attributes, do not use --routines. Instead, dump and reload the contents of the mysql.proc table directly, using a
MySQL account that has appropriate privileges for the mysql database.

Prior to MySQL 5.5.21, this option had no effect when used together with the --xml option. (Bug #11760384, Bug #52792)
"

A DB-k közötti konzisztenciát így valóban nem lehet megvalósítani. Ha ilyen kell, akkor marad a "szokásos" flush tables with read lock, snapshot, unlock tables, snapshot-ot ment, snapshot eldob, örül módszer. Igaz, ehhez snapshot-képes tároló (lvm, zfs, stb.), és azon elegendő szabad hely kell a DB alá.

mysqldump-hoz én még hozzátennék egy "--opt" kapcsolót MyISAM esetén (just in case, mivel alapértelmezés szerint ON), valamint "--single-transaction"-t InnoDB-hez. Nagyon egyszerű db-k esetén a fent említett példa is működhet viszonylag gond nélkül.
--
Coding for fun. ;)

Valamint, ha fontos a mentesek tallozhatosaga (mert peldaul elofordulhat, hogy csak bizonyos adatsorokat kell helyreallitani), akkor a --no-extended-insert kapcsolo erdekesl lehet meg, igy soronkent menti le. Nagyobb lesz a mentes, valamint lasssabban tolt be, de cserebe a fajl kezelhetobb szerkezetu lesz.
--
Ki oda vágyik, hol száll a galamb, elszalasztja a kincset itt alant:


()=() 
('Y') Blog | @hron84
C . C Üzemeltető macik
()_()

Egy tobbtiz gigas dumpnal en sem csinalnam. De volt olyan 1-2 gigas dump, ahol tobbszor kellett ilyet csinalni, es mocskosul untam helyreallitani temp helyre - ujradumpolni - helyreallitani a szukseges adatokat.
--
Ki oda vágyik, hol száll a galamb, elszalasztja a kincset itt alant:


()=() 
('Y') Blog | @hron84
C . C Üzemeltető macik
()_()

"mysql backup jól'"

-> frissíts bármi másra.

----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™