Zwei Datenbanken miteinander vergleichen

magda89

Neuer Benutzer
Beiträge
4
Hallo zusammen,

ich habe eine Frage. Ich habe eine sehr große Datenbank (300MB) und muss alle zwei Wochen neue Daten einspielen. Das Einspielen mache ich nicht auf der Produktions-Datenbank, sondern auf einer Entwicklungsumgebung, in die ich vor dem Update immer ein Backup der Produktionsdatenbank einspiele.

Mein Vorgehen wäre jetzt, dass ich nach dem Update die komplette Datenbank von der Entwicklungsumgebung exportiere und komplett in die Produktionsumgebung einspiele. Das klappt auch ganz gut, aber ich bin mir unsicher, ob das die richtige herangehensweise ist, weil das doch immer sehr große Datenmengen sind.

Wie würdet ihr das machen? Gibt es vll eine Möglichkeit, nur den Diff von der geupdateten DB auf die Produktions-DB zu spielen?

Danke für eure Hilfe!
 
Werbung:
Der Diff der geupdateten Datenbank ist in Deinen Händen, und zwar exakt die Daten, die Du da eingespielt hast.

Und nein, 300MB st nicht viel. Wirklich nicht.
 
dass ich nach dem Update die komplette Datenbank von der Entwicklungsumgebung exportiere und komplett in die Produktionsumgebung einspiele
Ich weiß nicht, was auf der Produktionsdatenbank geschieht, aber in der Zeit zwischen ihrem Export, dem Einspielen in der EntwicklerDB, dem Update und dem Export und erneuten Einspielen in Produktion, könnte sich das Original geändert haben.
Das wäre nicht gut, ein Problem, außer die Prod DB ist in der Zeit gesperrt.
Das wäre nicht gut, falls sie in der Zeit gebraucht wird.

Ich würde das filigraner machen. Viele Änderungen sind vielleicht einfach Inserts, die nicht weh tuen. Andererseits kann ein solcher Vergleich / Merge auch beliebig kompliziert sein, nicht wegen der Menge, sondern wegen Vergleichbarkeitsfragen. Das hängt stark von der Art des Updates ab.
 
wir haben übrigens für sowas ein Tool, nennt sich LiveCompare. Aus der Dok:

===

Introduction​

LiveCompare is designed to compare any number of databases to verify they are identical. The tool compares any number databases and generates a comparison report, a list of differences and handy DML scripts so the user can optionally apply the DML and fix the inconsistencies in any of the databases.

By default, the comparison set will include all tables in the database. LiveCompare allows checking of multiple tables concurrently (multiple worker processes) and is highly configurable to allow checking just a few tables or just a section of rows within a table.
===

Allerdings ist das für eine andere Datenbank...

ansonsten siehe @dabadepdu , da sind viele gute Gedanken drin.
 
NA, versteh ich zwar gar nicht, da sich ja die Daten auf der Prod DB ja in der Zeit ändern wo sie auf der Dev DB liegen und bis sie wieder eingespielt werden. Aber das ist ein andres Thema.

1) Für solche Fälle könnte man auch eine Master / Master Replikation (nur Prod DB) machen. Dann läge quasi immer eine Kopie der Prod DB auf dem Deb DB Server. dort kann man dann das Prod Schema nach Dev Schema kopieren, ändern und wenn
alles OK ist wieder in das lokale Prod Schema kopieren. Den Rest übernimmt die Replikation.

2) Dazu gibt es fertige Tools, die selbstständig nur die Differenz kopieren inkl. neue Felder etc.
Schau dir mal die Percona Tools an (kostenlos). Insbesondere pt-table-sync
Dort gibt es aber noch viel mehr an guten tools

Gruß

Bernd
 
Werbung:
versteh ich zwar gar nicht, da sich ja die Daten auf der Prod DB ja in der Zeit ändern wo sie auf der Dev DB liegen und bis sie wieder eingespielt werden.

das ist nicht ganz klar, das Ursprungsposting kann man so oder so deuten. Dann stellt sich aber auch die Frage, was mit gelöschten/geänderten Daten passieren soll, die in der Dev-DB liegen. Möglicherweise will man aber auch nur z.B. wöchentlich neue Produkte in Dev einpflegen und nächste Woche dann in Prod. Dann ist das nur der Produktkatalog, nicht aber andere Dinge.

Wie gesagt, unklar formuliert.
 
Zurück
Oben