HH: Synchronisation der Struktur mehrerer DB-Instanzen

Hallo zusammen,

ich möchte mehrere Kopien einer (MySQL-)Datenbank hinsichtlich derer Strukturen synchron halten. Ein simples Backup-/Restore-Tool scheidet aus dem Grund aus, weil die Daten dabei (zumindest bei den mir bekannten Tools) ebenfalls synchronisiert werden, was ich aber nicht möchte.

Konkret liegt eine Kopie der Datenbank in der Test-Umgebung, eine in der Produktiv-Umgebung sowie eine pro Entwickler vor. Nun soll es z.B. möglich sein, Änderungen an der DB-Struktur von einer Entwickler-Instanz zunächst in die Test-Instanz und anschließend die Produktiv-DB zu überführen. Dabei sollen, sofern das im konkreten Einzelfall möglich ist, vorhandene Datensätze nicht berührt werden. Die Test-DB enthält beispielsweise Daten für zahlreiche Test-Cases, die im Produktiv-System nichts zu suchen haben.

Kann mir jemand einen Tipp geben, mit welchem Tool/Vorgehen man das Problem vernünftig lösen kann?

Besten Dank im Voraus!

  1. Hi!

    ich möchte mehrere Kopien einer (MySQL-)Datenbank hinsichtlich derer Strukturen synchron halten.

    Als ersten Gedanken hatte ich, ein System aufzusetzen, in dem nur die Struktur gepflegt wird, und das als Replication-Master aufzusetzen. Dabei hoffe ich, dass vorhandene Daten auf den Slaves (Test-, Produktiv- und sonstigen Instanten) erhalten bleiben, hab das aber nicht probiert.

    Diese Lösung will man aber eigentlich nicht haben, weil eine Fehlkonfiguration sogleich auch ins Produktivsystem übernommen wird. Deshalb sehe ich nur als Kompromiss zwischen Komfort und Datenintegrität, dass du vom Entwicklersystem bei Konfigurationsänderungen entsprechende ALTER-TABLE-Statements erstellst, oder was auch immer die strukturellen Änderungen sind. Die Testinstanz wäre das Versuchskaninchen, ob das Script fehlerfrei arbeitet. (Backups hast du ja auch vom Testsystem, oder?) Damit hast du auch gleich eine Dokumentation der Änderungen zwischen den Versionen.

    Lo!

    1. n'abend,

      [...] Deshalb sehe ich nur als Kompromiss zwischen Komfort und Datenintegrität, dass du vom Entwicklersystem bei Konfigurationsänderungen entsprechende ALTER-TABLE-Statements erstellst, oder was auch immer die strukturellen Änderungen sind. Die Testinstanz wäre das Versuchskaninchen, ob das Script fehlerfrei arbeitet. (Backups hast du ja auch vom Testsystem, oder?) Damit hast du auch gleich eine Dokumentation der Änderungen zwischen den Versionen.

      ich führe zu diesem Zweck ein Script mit mir rum, in das ich alle lokal (Entwicklungsmaschine) gemachten Strukturänderungen einfüge. Mittels Keys, den Statements und Timestamps, welche in der Tabelle "updates" gespeichert werden, kann ich nachvollziehen welche ALTER/CREATE/DROP Anweisungen auf dem jeweiligen System bereits durchgeführt werden - erhalte also die Möglichkeit das inkrementell laufen zu lassen.

      Auf die Art synchronisiere ich hier 2 Dev-Rechner, 2 Test-Instancen und die Produktivumgebungen. Und zwar DB-Änderung <-> Code Änderung in der selben SVN Revision... etwas dahingefrickelteres ist mir damals leider nicht eingefallen.. tut aber seinen Job :)

      weiterhin schönen abend...

      --
      #selfhtml hat ein Forum?
      sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|