Mailinglisten-Archive |
Hallo Michael, > -----Original Message----- > From: Michael Müller [Fa. ceyko] [mailto:newsletter at ceyko.de] > habe ein kleines Problem, wie würdet ihr das lösen: > > Habe auf einem Server A eine Datenbank mit 4 Tabellen. > Außerdem einen Server B mit einer Datenbank mit einer Tabelle. > > Nun möchte ich mit einem Script, das täglich ausgeführt wird Daten von > der Datenbank auf Server A (alle 4 Tabellen) auf die Tabelle auf Server > B schaufeln. Die Datenmenge wäre etwas groß, somit möchte ich nur die > geänderten Daten übernehmen. Ich habe nun also einen Timestamp angelegt > und überprüfe damit ob er sich geändert hat. Nun ist das ändern kein > Problem, was mache ich jedoch wenn ein Datensatz auf Server A gelöscht > oder hinzugefügt wurde? Lösung A: Replikation. Lösung B: Wenn Du auf Server A noch etwas Rechenzeit übrig hast, dann kannst Du mit "Schatten"-DBs arbeiten. D.h. Du erstellst auf Server A eine Kopie der DB (bzw. der 4 Tabellen), die den Zustand der Tabellen auf Server B wiederspiegeln soll. Nach erfolgten Änderungen in den Tabellen kann man dann direkte Abgleiche mit der Schatten-DB fahren und gelöschte/neue ggf. auch geänderte (am besten anhand des Timestamps) Sätze identifizieren und entsprechende SQL-Statements draus basteln. Neue und gelöschte Sätze kann man durch eine Verknüpfung beider Tabellen per Left-Outer Join ermitteln. (Bedingung jeweils: primkey der 2. Tabelle ist NULL) Dann werden die Änderungen (SQL-Statements) sowohl in der Schatten-DB angebracht als auch an Server B übermittelt. Je nach Tabellengröße kann dieser Abgleich Server A natürlich "etwas belasten". Grüße, Michael Donning -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive