Amikor saját gépedről szeretnéd visszatölteni az előzőleg lementett SQL fájlodat, adódhatnak kisebb problémák az 1MB (esetleg 2MB) feletti méret esetében. A legtöbb szolgáltató esetében van egy bizonyos fájlméret korlátozás, mikor nem tudsz XY méretnél nagyobb fájlt feltölteni, illetve a PHP-nak is van egy max. futási ideje.
A „Biztonsági mentés phpMyAdmin-nal” c. tutorial kapcsán már szóba került, hogy nagyobb SQL fájlokat fel is lehet darabolni kisebb egységekre (rfsplitter, Make Chunks), ez a script tulajdonképpen egy újabb megoldással szolgál.
A scriptről
honlapja: http://www.ozerov.de/bigdump.php
Big Dump ver. 0.19b (beta) (6,0 KB ZIP-Archive)
letöltés: http://www.ozerov.de/bigdump.zip
Amire szükséged lesz
- a fenti linkről letöltött bigdump.php scriptre
- az adatbázisodra (*.sql), melyet remélhetőleg phpMyAdmin-nal mentettél el (akár tömörítve is, GZip formátumban). Tömörítetlen mentés esetében a fájlod neve pl. dump.sql lesz, GZip-es tömörítés esetében viszont dump.gz.gzip, melyet csak a PHP csak a 4.3.0-tól támogat.
megjegyzés: a tényleg nagy fájlok esetében nem biztos, hogy szerencsés lesz a gzip tömörítést választani, mert a scriptnek minden egyes session start esetében ki kell bontani a fájlt, ami akár hibát is okozhat. - hozzáférés (cím/név/jelszó) a My SQL? adatbázishoz
- hozzáférés a szerverhez FTP-n keresztül, hogy feltöltsd az sql fájlodat. Ez az szerver természetesen ugyanaz, mint amelyiken az SQL is van, és kapcsolatban is kell lennie (tehát az SQL elérhető a szerveren lévő fájlok számára, pl. localhost címen).
- valamilyen szövegszerkesztő/texteditor program, mellyel módosíthatod a bigdump.php script tartalmát
- FTP kliens programra, mellyel feltöltheted az sql mentésedet a szerverre
Beállítások
A scriptet megnyitva a texteditor programban az alábbi részt kell megkeresned (69.-82. sor). A sorok végén a magyar szöveget már én írtam be, az alapján kell majd neked is kitöltened a megfelelő adatokkal.
// Database configuration $db_server = "localhost"; // az SQL szerver elérési útvonala, általában localhost. $db_name = ""; // az SQL adatbázis neve $db_username = ""; // az SQL hozzáférés név+jelszavából a név $db_password = ""; // az SQL hozzáférés név+jelszavából a jelszó |
// Other Settings $filename = ""; // ide beírhatod az FTP-n feltöltött SQL fájlod nevét (nem kötelező, de ajánlott) $linespersession = 3000; // az egy 1 import session alatt feldolgozott sorok száma, nem módosítsd $delaypersession = 0; // minden egyes session után be lehet iktatni egy kis várakozást, de alapesetben ez az érték 0 (nem szoktam módosítani). Felhasználói részről engedélyezni kell a javascriptek futását. Célja, hogy a szerver terhelését csökkentsd. |
Használat
- Ha kitöltötted/konfiguráltad a bigdump.php scriptet megfelelő módon, töltsd fel FTP-n az SQL fájloddal együtt egy közös könyvtárba
- Ha az SQL mentésed nem tartalmazza a “DROP TABLE”, akkor figyelj arra is hogy előtte phpmyadmin-on keresztül takarítsd ki az ott lévő – felülírásra szánt – tartalmat.
- A böngőszőprogramodba nyisd meg a feltöltött bigdump.php fájlt, pl. http://www.domainneved.hu/konyvtar/bigdump.php
- Ha a scriptbe beírtad az importálandó SQL fájl nevét, akkor egyből rá lehet kattintani az ott lévő szövegre («Start Import from …»)
- Innentől kezdve a bigdump.php folyamatosan dolgozik addig, amíg csak kész nem lesz. Ha a böngősződben engedélyezted a javascriptek futtatását, magától újra fog indulni minden session elején, és feltölti 3000 soronként az SQL fájlodat.
- Amint kész vagy és minden felért (észre fogod venni, mert zöld színű szöveggel kiírja a lapra), töröld le FTP-n keresztül a bigdump.php fájlodat, illetve ha már nincs rá szükséged, akkor az SQL fájlodat is.
Figyelem: a Big Dump nem fog megfelelően lefutni, ha az SQL fájlban túl nagy táblák szerepelnek kiterjesztett beszúrásként (extended insert). Ennek oka, hogy az “extended”-ben az egész tábla egy “insert”-ben van, így így a Big Dump sem tudja részekre szétvágni.
Hogy ezt elkerüld, a phpMyAdmin-ban az exportálás során kapcsold ki az “extended inserts” opciót.
Gyakran Ismétlődő Kérdések
Kérdés: ezt a hibát kapom: „My SQL?: Table ‘some_tbl_name’ already exists”. Miért?
Válasz: mert az SQL fájlod nem tartalmaz DROP kéréseket (query), így a már fent lévő tartalmat nem tudja felülírni az újjal az import alatt. Hatsd végre a Használat / 2. lépést.
Kérdés: Ezt az üzenetet kaptam: “Fatal error: Allowed memory size of xxx bytes exhausted” vagy ezt „My SQL? server has gone away”.
Válasz: az SQL fájlod valószínűleg “extended inserts”-t (kiterjesztett beillesztés) tartalmaz. Exportáláskor a phpMyAdmin-ban kapcsold ki ezt a funkciót.
Kérdés: Miért okoz a bigdump.php furcsa SQL hibákat, ha a Windows PC-n futtatom localhost-on keresztül?
Válasz: ez szvsz. egy hiba a PHP 4.3.x-ben, mely a bigdump hibás működését eredményezi Windows környezetben abban az esetben, ha az SQL fájlod DOS-os sortöréseket tartalmaz. Próbáld meg, hogy egy texteditorral konvertáld UNIX-os formátumra, valószínűleg működni fog.
Kérdés: Használhatok olyan SQL mentéseket is, melyet nem phpMyAdmin-nal készítettem?
Válasz: Elvileg bármilyen SQL fájlt használhatsz, de csak saját felelősségedre. Ajánlom a phpMyAdmin-t inkább… :)
Kérdés: Miért kell kitölteni a bigdump.php fájlban az adatokat feltöltés előtt, miért nem lehet ezeket megadni a böngészőn keresztül?
Válasz: Mivel biztonság szempontjából nem tartom megfelelő megoldásnak, hogy az adatokat pl. le kellene menteni pl. cookie-kba, hogy a session-k közötti váltáskor nem kérdezze meg újra és újra.
Hú, köszönöm ez nagyon jól jött :)