Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak wyeksportowac naprawde duza baze ?
Forum PHP.pl > Forum > Bazy danych > MySQL
kiler129
A wiec mam pytanie - czy macie jakies sprawdzone sposoby?
Jest nie tyle baza co kilkaset baz danych, musze to przeniesc na inny serwer.
W sumie zajmuje to ok. 6GB.
dr_bonzo
mysqldump: http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html ?
kiler129
Tak ale kaprys taki ze prawdopodobnie to mi sie nie zmiesci na serwerze, sprawdzilem teraz i okazuje sie ze bazy maja grubo ponad 10GB.
Czy jest jakis skrypt perla/basha/php/c/cokolwiek ktory potrafi zgrac 1 baze, wyslac na ftp, usunac temp, zgrac kolejna i wyslac na ftp i tak w kolo az skonczy ?
John
Być może moje rozwiązanie, jest nieco mało optymalne, ale jak dla mnie podziałało.
Napisać robota, który będzie pobierał po 100,000 rekordów zrzucał je do plików tekstowych ( tj, ok 1mb ),
potem wgrywać np. 100 plików i drugi robot będzie wrzucał te rekordy do bazy. Mankamentem mojego rozwiązania, którego nie potrafię obejść jest quota dla zapytań ( na moim serwerze wynosi to 200 000 na godzinę ) tzn, że wgrywanie takiej ilości rekordów może potrwać naprawę długo.
webdice
Zainteresuj się parametrem host.
dr_bonzo
1. Co do skryptu: raczej nie istnieje.

2. mozesz sprobowac mysql_dump -h inny_serwer bazka > mysql -h localhost nowa_bazka co przesle od razu cala bazke bez trzymania 10G na dysku, ALE, jak padnie ci lacze to zaczynasz wszystko od zera
NoiseMc
Albo skompresuj w locie:
Kod
mysqldump -uUSER -p=PASS baza | bzip2 -c > plik.sql.bz2
kiler129
Cytat(NoiseMc @ 5.05.2008, 08:01:09 ) *
Albo skompresuj w locie:
Kod
mysqldump -uUSER -p=PASS baza | bzip2 -c > plik.sql.bz2



A nie czasem:

Kod
mysqldump -u USER -p HASLO -h HOST BAZA | bzip2 -c > plik.sql.bz2



edit:
Mniejsza z tym dziala moje, twoje pewnie tez. Jak to zautomatyzowac? Nie mam zamiaru wydawac dla kazdej abzy recznie polecenia tongue.gif
Czy ktos moze napisac mi skrypt bash ktory sam po kolei kazda baze zdumpuje ?
dr_bonzo
W php se napisz skrypt ktory pobierze liste baz i wypisze skrypt bashowy, (prosta petelka) ktory dumpa zrobi. Bedzie chyba szybciej (do napisania)
kiler129
Cytat(dr_bonzo @ 6.05.2008, 21:58:41 ) *
W php se napisz skrypt ktory pobierze liste baz i wypisze skrypt bashowy, (prosta petelka) ktory dumpa zrobi. Bedzie chyba szybciej (do napisania)


Ok php to nie problem, mam taki skrypt ale wiesz ja i bash to 2 inne swiaty biggrin.gif
Mozesz mi napisac jak to ma wygladac, tj jak ma wygladac tai skrypt basha ?
dr_bonzo
Ziom:

  1. <?php
  2. file_put_contents( 'plik.sh', "mysqldump -u USER -p HASLO -h HOST " . $baza . " | bzip2 -c > " . $baza . ".sql.bz2" );
  3. ?>

o to mi chodzilo.

edit: to oczywiscie niepelny przyklad, dorob sobie pobieranie nazw baz, i dopisywanie do pliku.
w bashu jest wiecej z tym roboty, na etapie przetworzenia listy baz (musialbym byc biegly w awk, while'ach itp - dlatego szybciej w php to napisac) i wrzucenia ich w petle.
kiler129
Cytat(dr_bonzo @ 6.05.2008, 22:23:47 ) *
Ziom:

  1. <?php
  2. file_put_contents( 'plik.sh', "mysqldump -u USER -p HASLO -h HOST " . $baza . " | bzip2 -c > " . $baza . ".sql.bz2" );
  3. ?>

o to mi chodzilo.

edit: to oczywiscie niepelny przyklad, dorob sobie pobieranie nazw baz, i dopisywanie do pliku.
w bashu jest wiecej z tym roboty, na etapie przetworzenia listy baz (musialbym byc biegly w awk, while'ach itp - dlatego szybciej w php to napisac) i wrzucenia ich w petle.


Ale to chyba niezbyt dziala worriedsmiley.gif
mysql dump zada hasla w tyrbie interaktywnym wiec dawanie hasla po -p to idiotyzm ihmo.


edit2:
Jako tako sobie poradzilem, zrobilem usera z prawmai root bez hasla na czas dumpowania ale jeszc jedna sprawa.
Czy da sie dopisac tak aby po kazdej bazie zanim zdumpuyje kolejna wyslal dump na ftp i skasowal plik?
Bylo by to o wiele wygodniejsze.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.