phpbar.de logo

Mailinglisten-Archive

[php] Tabellen aus MySQL-DB lokal mit PHP synchronisieren

[php] Tabellen aus MySQL-DB lokal mit PHP synchronisieren

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Mit Feb 15 12:29:07 CET 2006


Hallo Peter,

Am Mittwoch, 15. Februar 2006 12:17 schrieb Peter Bieling:
> Lutz Zetzsche wrote:
> > und was spricht gegen eine crongesteuerte Shellscript-Lösung? Konkret:
> >
> > 1. Cronjob auf Rechner A stößt Shellscript an, welches MySQL-Dump
> > erstellt, lokal ablegt und dann per SSH mit scp oder rsnyc auf Rechner B
> > transferiert.
>
> Hm, ich weiß nicht, ob man da einen MySQL-Dump braucht. Im Grunde
> brauche ich ja immer nur die Datensätze, die nach dem letzten Download
> neu hinzugekommen sind. Die alten Bestellungen bleiben nämlich so lange
> bestehen, bis sie archiviert werden. Man würde dann also immer die alten
> Daten mit herumschleppen. ;-(

nein. Du mußt halt den Dump-Befehl mit der entsprechenden where-Klausel 
versehen, so daß nur die neuen Daten aus der Datenbank gezogen werden. :-)


> Was hältst Du von dieser Variante: PHP-Script sieht per Cronjob oder
> nach manuellem Anstoß regelmäßig nach, ob neue Daten da sind und
> erstellt eine csv-Datei, die dann auf dem Server abgelegt wird.

Ich würde es mit dem Dump-Befehl machen. Auf Linux-Ebene geht das Ganze 
wesentlich schneller, als mit PHP. Probier es mal aus. Bei großen Datenmengen 
ist der Unterschied besonders auffällig.


> Wird die Datei heruntergeladen, wird irgendwo die letzten Auftragsnummer
> hinterlegt, bis zu der synchronisiert wurde.

Ja, die mußt Du Dir irgendwo merken. :-)


> Dann geht es so weiter:
> > 2. Cronjob auf Rechner B stößt Shellscript an, welches nach MySQL-Dump
> > guckt und diesen importiert.
>
> Bei näherer Betrachtung braucht der Abgleich eigentlich erst dann
> stattfinden, wenn jemand die Daten bearbeiten will.
> Ich frage mich daher, ob man nicht doch lieber alles "manuell" auslösen
> sollte.

Das hat den Nachteil, daß derjenige, der die Daten bearbeitet, auch daran 
denken muß.


> > Das ist die grobe Lösung. Natürlich müßte genau festgelegt werden, welche
> > Daten ausgelesen werden und wie sie importiert werden.
>
> Ja eben. Daher dachte ich - nach dem Gebot der Datensparsamkeit ;-) -
> dass man lieber nur das herunterlädt, was man braucht. Das sind dann die
> Datensätze, die man problemlos wegschreiben kann.

Wie gesagt: Das geht mit dem Dump (SELECT * FROM Auftragsdaten WHERE 
Auftragsnummer > ... INTO OUTFILE '/tmp/neuen_auftragsdaten.txt';).

Guck Dir aber auch mal den Vorschlag von Stefan, mit Replikation zu arbeiten.


Viele Grüße
Lutz

php::bar PHP Wiki   -   Listenarchive