Importera stora databaser med BigDump

Jag håller som bäst på med att få igång min site Rollspel.nu på ett vanligt webbkonto. Det jobbiga är att jag endast har tillgång till vanlig FTP till kontot, samt phpMyAdmin. Jag kan inte koppla upp mig mot databasen externt med till exempel MySQL Control Center eller logga in med ssh och köra MySQL lokalt för att importera databaser.

Ett stort problem som uppstår är då att importera en databas där dumpfilen ligger på 700 MB. I den installation av phpMyAdmin som körs ligger begränsningen på uppladdade filer på ca 25 MB. Utöver det kan det finnas begränsningar på antalet queries som får köras, men det vet man bara vad det ligger på om man kan läsa inställningsfilen. Dessutom finns det en hel del problem med timeouts för både webbläsare som för PHP-script när man ska tanka upp så stora filer. Inte heller verkar det finnas nån funktion för att importera via fil lokalt på disken i MySQL heller.

Det här måste ju vara ett ganska vanligt problem, tänkte jag. Någon mer än jag måste ju försökt att importera stora databaser till begränsade webbkonton. Så efter lite sökande hittade jag scriptet BigDump som gjorde precis vad jag ville.

BigDump är ett litet script på bara en fil som man lägger upp på sitt konto tilsammans med en SQL-dumpfil och kör via webbläsaren för att importera till en databas. Scriptet kräver några enkla inställningar, vilket bara är databasuppgifterna, namnet på den fil som ska importeras samt eventuellt vilken teckenuppsättning som ska användas. Efter att dessa enkla inställningar gjorts är det bara att tanka upp till webbkontot och köra igång via webbläsaren.

När så scriptet kör igång så läser den in SQL-filen rad för rad och kör SQL-frågorna en och en. För att scriptet ska komma runt problem med timeouts så kör den endast ett förinställt antal frågor åt gången. Sen laddas sidan om och scriptet fortsätter där det avslutade senast. Det går även att ställa in hur länge scriptet ska vänta innan det laddar om, så att man kan ge databasservern en liten paus. Det kan vara bra om man ligger på ett webbhotell eller om databasservern inte kör på en dedikerad server.

För att det ska fungera bra så måste SQL-filen använda ”complete inserts”, så att varje rad i databasen får en egen insert-fråga. Om man tar backup från phpMyAdmin, som scriptet är gjort för att användas med, så är detta automatiskt. Kör man mysqldump måste man dock komma ihåg att ange flaggan ”-c” för att det ska fungera. Det går naturligtvis även att använda andra sätt att skapa SQL-filen, så länge det följer samma format.

Scriptet BigDump har sparat mig en massa tid, och det fungerar väldigt smidigt. Jag kommer ganska säkert att donera några kronor till utvecklaren för det, då han verkligen är värd det.

Andra bloggar om: , , , , , ,


Om detta inlägg