Frage

Für eine lange Zeit jetzt haben wir unsere Daten innerhalb des Projekts Repository gespeichert. Wir haben gerade alles unter Daten / SQL gehalten, und jede Tabelle hatte seine eigenen create_tablename.sql und data_tablename.sql Dateien.

Wir haben nun nur unser zweites Projekt auf Scalr eingesetzt und wir haben erkannt, es ist ein bisschen chaotisch.

Die Art, wie wir einsetzen:

Wir haben eine „packageup“ Sammlung von Skripten, die auseinander reißen das Projekt in drei Archive (Daten, Code, statische Dateien), die wir dann in drei separaten Eimer auf S3 gespeichert werden.

Jedes Mal, wenn eine Rolle startet, lädt er eine der Dateien (auf der Rolle abhängig: Daten, nfs oder Web) und dann ein „unpackage“ Skript setzt alles auf für jede Rolle, lädt die Daten in mysql, setzt auf die nfs, etc.

Wir machen es so, weil wir Server-Images nicht speichern wollen, müssen wir immer von Vanille-Instanzen starten, auf dem wir alles von Grund auf mit verschiedenen in-Haus gebaut Skripte installieren. Startzeit ist kein Problem (wir haben ein fertiges Bauernhof in 9 Minuten verwenden).

Das Problem ist, dass es ein Schmerz ist versucht, die richtige Version der Datenbank zu finden, wenn wir die Einrichtung eine neue Entwicklung bauen versuchen (zu jedem Zeitpunkt, wir haben etwa 4 Entwickler für ein Projekt bauen). Auch git beginnt zu ersticken, wenn wir in der Produktion gehen, da die SQL-Dateien in Höhe von rund 500 mb enden.

Die Frage ist:

Wie alle anderen Verwaltung von Datenbanken? Ich habe nach etwas suchen, das es leicht zu nehmen Daten aus der Produktion in dev macht, und auch die Migration von Daten von Entwicklern in der Produktion, aber nicht eher zufällig auf etwas.

War es hilfreich?

Lösung

Sie sollten ernsthaft einen Blick auf dbdeploy (dbdeploy.com) nehmen. Es wird in viele Sprachen portiert, die wichtigsten sind Java und PHP zu sein. Es ist integriert in Build-Tools wie Ant und Phing und ermöglicht den einfachen Austausch von so genannten Delta-Dateien.

Eine Delta-Datei besteht immer aus einem deploy Schnitt, kann aber auch einen Undo-Abschnitt enthalten. Wenn Sie Ihre Delta-Datei und ein anderer Entwickler überprüft es heraus begehen, kann er nur laufen dbdeploy und alle neuen Änderungen werden in seiner Datenbank automatisch übernommen.

Ich verwende dbdeploy für mein Open-Source-Blog, so dass Sie einen Blick auf, wie Delta-Dateien organisiert sind, annehmen können: http://site.svn.dasprids.de/trunk/sql/deltas/

Andere Tipps

Wie ich Ihre wichtigste Frage verstehen ist expirience von anderen Menschen bei der Migration von SQL-Daten von Entwicklern in der Produktion.

Ich verwende Microsoft SQL Server anstelle von My SQL, so bin ich nicht sicher, dass meine expirience Sie direkt verwenden können. Dennoch ist diese Art und Weise funktioniert sehr gut.

Ich verwende Visual Studio 2010 Ultimate Edition Daten in zwei Datenbanken zu vergleichen. Die gleiche Funktion gibt es auch in Vinsual Studio Team Edition 2008 (oder Datenbank-Ausgabe). Sie können lesen http://msdn.microsoft.com/en-us/library /dd193261.aspx zu verstehen, wie es funktioniert. Sie können zwei Datenbanken (dev und prod) vergleichen und SQL-Skript erzeugen, um die Daten zu ändern. Sie können leicht einige Tabellen oder einige Spalten aus dem Vergleich ausschließen. Sie können auch die Ergebnisse prüfen und einige Einträge von Generation des Skripts auszuschließen. So eine einfache und flexible können Skripte erzeugen, die für die Implementierung der Änderungen in der Datenbank verwendet wird tun können. Sie können separetely die Daten aus zwei Datenbanken aus dem sructure (Schema compareing) vergleichen. So können Sie mit den Daten aus prod Daten in dev aktualisieren oder Skripte erzeugen, die modify prod Datenbank zur letzten Version der Entwickler-Datenbank. Ich empfehle Ihnen, auf diese Funktion zu sehen und einige Produkte von http://www.red-gate.com/ (wie http://www.red-gate.com/products /SQL_Compare/index.htm ).

Schauen Sie sich Capistrano . Es ist ein Werkzeug, um die Ruby-Community Anwendungen für den Einsatz auf verschiedene Umgebungen und ich es wirklich nützlich finden.

Auch wenn Ihre Bereitstellung beginnt ein Werkzeug zu ersticken versuchen Twitter Murder genannt gebaut.

Persönlich würde ich bei Toad aussehen

http://www.toadworld.com/

Weniger als 10k;) ... analysieren Datenbankstrukturen, produzieren Skripte, sie zu ändern und werden auch Daten migrieren

.

Ein Teil der Lösung ist die Version von jedem Ihrer Code-Module und ihren entsprechenden Datenressourcen in einem einzigen Standort zu erfassen, und vergleichen sie die Konsistenz zu gewährleisten. Zum Beispiel kann eine Erhöhung in der Versionsnummer Ihres, sagen wir, wird customer_comments Modul eine entsprechende SQL-Delta-Datei benötigen die entsprechenden DB-Tabellen auf die gleiche Versionsnummer für die Daten zu aktualisieren.

Ein Beispiel einen Blick auf Magento core_resource Ansatz wie @AlanStorm dokumentiert.

Cheers, JD

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top