pitbull82
6.01.2012, 10:34:37
Witam
Mam problem z importem dużych baz danych MySQL (z serwera na localhost). Do importu jedna tabela w InnoDB, Baza w rozmiarze 1 GB, która ma 2,4 mln rekordów wgrywa mi się prawie 14 godzin, czyli jak na moje oko znacznie za długo. Bazę wyeksportowałem MYSQLdumperem, importuję też MYSQLdumperem. Nie robiłem co prawda żadnych testów, ale przy imporcie z linii komend, wcale nie wygląda żeby to szło szybciej.
Być może można coś w konfigu mysqla zmienić, ale nie bardzo wiem co, żeby szło szybciej.
Jeśli ktoś ma jakieś doświadczenie w tym temacie byłbym wdzięczny za wskazówkę.
Pozdrawiam
melkorm
6.01.2012, 10:38:40
pitbull82
6.01.2012, 11:33:06
Dzięki za pomoc, szukałem ale po innych zapytaniach. Polecenia source akurat tam nie znalazłem.
Zrobiłem test z pełnymi dodaniami i z rozszerzonymi (eksport przez phpmyadmina) - w przypadku pełnych dodań działa wolno, to w przypadku rozszerzonych działań prawie 350 tys. rekordów zaimportowało się w czasie poniżej 5 minut (nie sprawdzałem dokładnie czasu, ale na pewno poniżej 5 minut), więc widzę że ma to ogromny wpływ na szybkość importu.
Problem z pierwszego posta - wszystko było z pełnymi dodaniami (tak wyeksportowałem), więc być może dlatego też z konsoli trwało mi to długo tak jak w przypadku source.
Pozostaje w takim razie jeszcze jedno pytanie, skoro wiem już jak zrobić szybki import - czym wyeksportować bazę danych żeby były rozszerzone dodania a nie pełne? PhpMyAdmin w przypadku naprawdę dużej tabeli może chyba nie dać rady - czasami miałem mniejszą bazę i się zaczynało pobieranie pliku php w przeglądarce...
melkorm
6.01.2012, 11:42:21
pitbull82
6.01.2012, 11:43:24
No tylko że niestety na serwerze nie mam dostępu do linii komend tak jak na localhoscie
melkorm
6.01.2012, 11:48:37
a przez system nie da rady?

PS. I co to za serwer bez SSH i mysqldump'a :/ ? Nawet druga wirtualka w OVH to ma ....
PS2. PMA ma opcję multi-inserts przy eksporcie
pitbull82
6.01.2012, 12:02:36
No niestety większość kont hostingowych które mam nie ma dostępu przez ssh. PhpMyAdmin wiem że ma tę opcję, ale nie zawsze uda się wyeksportować dużą bazę danych phpmyadminem.
melkorm
6.01.2012, 12:15:38
Cytat
PhpMyAdmin wiem że ma tę opcję, ale nie zawsze uda się wyeksportować dużą bazę danych phpmyadminem.
To eksportuj częściami

W sensie po kilka tabel, lub zmień hosting x)
pitbull82
6.01.2012, 13:17:02
Zmiana hostingu nie wchodzi w rachubę, eksport częściowy mało wygodny. Wierzę że jest jakieś narzędzie, które zrobi eksport całości z rozszerzonymi dodaniami.
Tak swoją drogą to właśnie mam ten problem - próbowałem wyeksportować całą jedną tabelę w phpmyadminie i przy imporcie po jakimś czasie wyskakiwał błąd. Udało mi się w końcu podejrzeć zawartość zrzutu i na samym końcu w pewnym momencie pliku mam przekroczenie parametrow serwera
melkorm
6.01.2012, 13:41:42
No pewnie pamięć / procek zostało przekroczone, najprawdopodobniej to pierwsze.
Przy takim hostingu będziesz miał wielki problem bo bez konsoli, to każde narzędzie będzie uzależnione od tych samych parametrów co phpMyAdmin itp (czyli ustawionych przez serwer).
Próbowałeś przez system odpalić komendę mysqldumpa ?
by_ikar
6.01.2012, 13:47:49
A ja polecam do importu i exportu w miejscach gdzie nie można skorzystać z konsoli, do skryptu który bardzo dobrze sobie radzi z importem i exportem bardzo dużych baz danych, SypexDumper:
http://sypex.net/en/ działa całkiem przyzwoicie. A nawet w skrajnych przypadkach może nam posłużyć jako automatyczny backup bazy danych
pitbull82
6.01.2012, 14:09:20
Dzięki, wygląda bardzo obiecująco. Co prawda wszystkie dane są w jednym dodaniu, ale skrypt sobie to ładnie potem importuje.
Test zrobiony na razie tylko localhoscie dla miliona rekordów, ale eksport i import przebiegł bez problemów. Import trwał 2,5 minuty. Skrypt nawet w darmowej wersji spokojnie powinien starczyć.
Ps. Jakiś czas temu dzisiaj byłem już na stronie tego programu, ale nie było nic o rozszerzonych dodaniach, więc myślałem że nie da rady, a chyba się myliłem.
-- EDIT --
Wygląda na to, że jedyne do czego się mogę przyczepić to zliczenie rekordów przy eksporcie - pokazuje 2 608 616 a naprawdę jest 2 723 162 (przy imporcie już dobrze pokazuje). W kilkanaście minut wyeksportowałem i zaimportowałem bazę. Jeszcze wczoraj import podobnej tabeli zajął mi kilkanaście godzin, także by_ikar wielkie dzięki
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.