Kopfnuss: MySQL Datenbank Abgleich
Mike
- datenbank
0 Sascha Knappe0 Mike0 norbert =:-)0 Mike
0 Sascha Knappe
Hallo miteinander,
habe eine kleine Kopfnuss für euch :o) :
Ich habe 2 Datenbanken auf 2 unterschiedlichen Servern. Ich möchte gerne einen Datenbank Abgleich machen, damit die beiden Datenbanken die selben Daten besitzen.
Genauer:
Auf beiden Datenbanken ist ein Table. Ich möchte keinen Dump ziehen und den auf die andere Datenbank spielen, da dies zu stark Resourcen auslastend wäre, wenn ich das täglich machen würde. Daher möchte ich nur die Daten überspielen, die sich geändert haben. Ich legte nun also auf Datenbank A eine zusätzliche Spalte vom Typ Timestamp an. Anhand dem wollte ich überprüfen, ob er sich geändert hat und wenn "ja", dann mittels SELECT von Datenbank A und INSERT auf Datenbank B übertragen. Das Problem ist nun: Was mache ich, wenn jemand eine Zeile aus Datenbank A entfernt. Somit kann die Zeit nicht mehr verglichen werden und in Datenbank B werden die Daten nicht gelöscht.
Ideen zur Lösung?
Danke Mike
Hallo Mike,
dann lass doch einfach kein Löschen zu. Nimm eine weitere Spalte und lege dort ein "Löschkennzeichen" ab.
Das verwendest du für deine Abfragen.
Es wird also nichts in der tabelle gelöscht, sondern nur als gelöscht markiert.
Schönen Gruß aus München
die knappschaft
Hi,
das ist doch etwas unsauber, finds du nicht?
Mike
Hallo Mike!
Das ist eine Frage der Anwendung - in Qualitätssicherungssystemen darf zB definitiv KEIN Datensatz physisch gelöscht sondern nur als solcher markiert werden.
Zu Deinem Abgleichproblem: Ich kann mir nicht vorstellen, dass es Schwierig ist, anhand eines Timestamps updates zu fahren. Danach einfach neue Datensätze anlegen und nicht mehr auffindbare löschen. Dazu sind lediglich drei SQL-Statements nötig. Dies gilt natürlich nur, wenn der Abgleich in eine Richtung stattfinden soll.
mfg
norbert =:-)
Hallo Norbert,
kannst du mir die 3 MySQL Statements, die du verwenden würdest evtl. hier reinschreiben?
Danke Mike
Hallo Mike,
was findest du daran unsauber?
In dem Unternehmen, in dem ich arbeite, werden z.B. grundsätzlich keine Datensätze gelöscht, sondern nur so gekennzeichnet, mal so als Beispiel.
Aber du wirst wohl kaum eine sauberere Lösung für dein Problem finden, denke ich.
Schönen Gruß aus München
die knappschaft