Archief - PHP: (MySQL) webbased-DB import

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

blackrabbit

Legacy Member
Hi,

ik wil het volgende bereiken maar blijf er problemen mee hebben:
- exporteren van DB vanop een server A
- importeren van DB naar een server B

Het exporteren van de DB naar een dumpfile en deze verplaatsen naar serverB is geen probleem.

De dumpfile (die basicly bestaat uit SQL statements, gegenereerd door mysqldump) importeren in MySQL van ServerB wil maar niet lukken..

Geprobeerd:
- mysqlimport: lukt niet, want werkt per table
- dumpfile inlezen in PHPscript: lukt niet want huidige DB is 600MB groot en zal nog groter worden

Nu zat ik er aan te denken om de file stukje per stukje in te lezen.. Maar dan moet er wel op gelet worden dat een SQLstatement niet in 2 wordt 'gesneden'...

Nu is mijn vraag: hoe kan ik de import het best verwezelijken, rekening houdend met de grootte van de databases..

Alvast bedankt!

Epyon

Legacy Member
Hier zullen ze er wel iets meer van afweten dan op het autoforum ;) .

Fr3aK

Legacy Member
Export:
Code:
mysqldump -u <username> -p<password> database_name > backup.sql
Import:
Code:
mysql -u <username> -p<password> database_name < backup.sql

Tyfius

Legacy Member
Een oplossing zou zijn van de .sql file op te splitsen per regel, ik heb op men stage dat per 10.000 regels kunnen doen, en die dan inladen.

Fr3aK

Legacy Member
Maar via de commandline zou je toch geen problemen mogen hebben met het importeren van een 600MB grote db?

Tyfius

Legacy Member
Maar dat is niet webbased, en de ts vroeg daar toch achter als ik goed heb gelezen.

blackrabbit

Legacy Member
Tyfius zei:
Een oplossing zou zijn van de .sql file op te splitsen per regel, ik heb op men stage dat per 10.000 regels kunnen doen, en die dan inladen.
EN hoe heb je die dan opgesplitst?


@commandline comments:
via shell_exec() kan ik eventueel ook wel werken (zo maak ik de dumpfile trouwens ook: is de snelste en meest correcte manier die ik kon vinden). Edoch, wanneer ik bovenstaande mysql-command gebruik (deze: )
Code:
mysql -u <username> -p<password> database_name < backup.sql
dan geeft hij als antwoord dat er geen DB geselecteerd is..


Nu, eventueel kan ik dat wel opvangen in mijn script natuurlijk.. Maar bestaat er een makkelijke manier?



Alvast bedankt voor de hulp!

Tyfius

Legacy Member
Eerst had ik gewoon een de file ingelezen en in kleinere files weggeschreven. Maar na een tijdje was dit niet meer te doen. Ik heb vervolgens rechtstreeks op de 1ste database selects gedaan van de eerste 10.000 records, weggeschreven in een file en zo verder gewerkt. Op die manier kon ik bijhouden welk record als laatste werd gebackupped, en kon ik mijn verdere backups telkens van die counterstand laten vertrekken.

blackrabbit

Legacy Member
Pffff
Hoelang duurde een backup dan?

Het is chez moi belangrijk dat de source server (serverA dus) zo snel mogelijk terug wordt vrijgegeven. Tijdens de backup wordt deze namelijk volledig gelocked..

Het gaat hier trouwens bij sommige tabbelen over miljoenen records (die dagelijks nog steeds sterk toenemen).



Wel even vermelden voor de duidelijkheid: hetgeen ik wil bekomen is geen backup systeempje dat dagelijks moet runnen. (dit om mensen niet in de verkeerde richting te laten denken).

Fr3aK

Legacy Member
blackrabbit zei:
EN hoe heb je die dan opgesplitst?


@commandline comments:
via shell_exec() kan ik eventueel ook wel werken (zo maak ik de dumpfile trouwens ook: is de snelste en meest correcte manier die ik kon vinden). Edoch, wanneer ik bovenstaande mysql-command gebruik (deze: )
Code:
mysql -u <username> -p<password> database_name < backup.sql
dan geeft hij als antwoord dat er geen DB geselecteerd is..


Nu, eventueel kan ik dat wel opvangen in mijn script natuurlijk.. Maar bestaat er een makkelijke manier?



Alvast bedankt voor de hulp!
Zorg ervoor dat die DB al aangemaakt is voor ge alles erin zet...

Maak dus uw db aan met als naam bvb "test" en voer dan het volgende uit:
Code:
mysql -u <username> -p<password> test < backup.sql

blackrabbit

Legacy Member
Zoals ik al zei: oplossen met script dus :)


Geen probleem, komt allemaal in orde.
Bedankt voor de info!

Fr3aK

Legacy Member
Ik snap u niet hoor, waarom zo moeilijk doen terwijl je die backup via de commandline kan inladen?

Als ge nen error krijgt zoekte toch gewoon uit waarom ge die krijgt, daar leerde tenminste uit ipv de omslachtige methode te gebruiken...

EDIT: Ook al is het webbased, upload gewoon die dumpfile naar je hosting en import dan zo.

blackrabbit

Legacy Member
Het heeft wellicht wel een reden waarom ik het zó wil oplossen, neen? =)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan