So führen Sie zwei Datenbanken für Magento zusammen

7

Situation

Um dies als erstes herauszuholen: Ich bin kein Magento-Entwickler. Ich weiß nicht viel darüber. Ich berate mich nur, wenn es um Server- und Projektmanagementprobleme geht. Ich werde mir gelegentlich die Hände schmutzig machen, wenn es Probleme gibt, aber ich weiß nichts über die "Magento-Methode", Dinge zu tun.

Wir haben eine Magento-Site (1.9.3.4), an der wir aktiv entwickeln. Wir haben einen Produktionsserver und einen Entwicklungsserver.

Problem

Magento (wie WordPress) ist sehr datenbankabhängig. Wir können Code ohne Probleme versionieren und übertragen. Wir benötigen jedoch eine einfache und zuverlässige Methode zum Zusammenführen der Datenbanken.

In der Produktion möchten wir Produkte, Bestellungen, Bewertungen, Site-Konfigurationen (wie URL) usw. beibehalten. und bei der Entwicklung möchten wir CMS, Plugin-Konfigurationen (besonders problematisch, wenn wir ein neues Plugin installieren) usw. beibehalten.

Derzeit sichere ich beide Datenbanken manuell, schneide die nicht gewünschte Tabelle aus jeder aus und kombiniere sie. Ich schiebe dann die resultierende Frankensteinsche Datenbank in die Produktion. Dies ist so fehleranfällig, wie Sie sich vorstellen können.

Es muss einen besseren Weg geben, dies zu tun.

Andere Wege

Ich habe mit der Idee einer gemeinsam genutzten Datenbank gespielt, aber das ist nicht ideal, da nicht genehmigte Änderungen an Produkten und Seiten sich auf den Produktionsstandort auswirken würden.

Ich habe auch mit der Idee gespielt, die Datenbank-Dumps in Git zu leiten, aber das erfordert immer noch, dass ich weiß, welche Tabellen von der jeweiligen Datenbank aufbewahrt werden sollen.

Aktualisieren

Wenn ich jetzt darüber nachdenke, wäre der bessere Weg hier, einen zweiten "Staging" -Speicher in der Produktionsumgebung zu haben, anstatt einen separaten Entwicklungsserver? Vorsichtsmaßnahmen?

Bryant Jackson
quelle

Antworten:

1

Die richtige Umgebung für Sicherheit und Betrieb wäre:

  • Zwei verschiedene Server : Vermeidet potenzielle Sicherheitsprobleme, die in einer Entwicklerumgebung auftreten und die Produktionsumgebung schädigen können.
  • Zwei verschiedene Datenbanken auf verschiedenen Servern : aus dem gleichen Grund wie zuvor. Wie man arbeitet? Erste Änderungen werden in der Entwicklungsumgebung vorgenommen. Wenn sie korrekt sind und alles gut funktioniert, werden sie auf dem Produktionsserver vorgenommen.
  • Dateien : Verwenden Sie ein gut konfiguriertes Repository-System wie git mit .gitignore und trennen Sie Entwicklung und Produktion in verschiedenen Zweigen.

Vielleicht hilft Ihnen diese Antwort nicht weiter, aber was Sie vorschlagen, ist weder sicher noch eine gute Praxis, in einem Projekt zu arbeiten.

Ich hoffe Dir zu helfen.

Rafael Calero
quelle
Zur Verdeutlichung empfehlen Sie, die Änderungen am Admin-Bereich in der Produktion manuell vorzunehmen, nachdem wir sie bei der Entwicklung überprüft haben. im Wesentlichen die Arbeit zweimal machen? Vielleicht zur Klarstellung, arbeiten wir vielleicht 2-4 Wochen an einer neuen Entwicklung. Ich bin mir nicht sicher, ob es eine praktikable Möglichkeit gibt, jede vorgenommene Änderung zu verfolgen .
Bryant Jackson
@BryantJackson Ja, welche Informationen benötigen Sie für die Migration?
Rafael Calero
0

Interessante Frage verwirrt mich zwar ein wenig, aber hier ist meine Einstellung dazu, die stark auf Meinungen basiert.

In Wirklichkeit sollten Ihre Produkt- und Entwicklungsdatenbank (meistens) übereinstimmen.

Derzeit arbeite ich so, dass die Datenbank vom Produkt in eine Staging- / lokale Umgebung ohne Kundendaten, ohne Bestellungen, Kundenkonten, Angebote usw. heruntergezogen wird.

Ich mache dann meine Entwicklung und wenn es irgendetwas gibt, das sich in Bezug auf die Datenbank ändern muss, wenn ich zur Produktion gehe, dann werden diese in einem Upgrade-Skript ausgeführt. Diese werden automatisch entweder bei der Bereitstellung mit etwas wie magerun oder beim Anmelden beim Administrator ausgeführt.

Für Dinge vom Typ Store-Konfiguration habe ich normalerweise ein Client_CoreModul und Skripts zum Aktualisieren von Systemkonfigurationsdaten, die nach der Bereitstellung ausgeführt werden und die Änderungen sofort sichtbar sind.

Da die gesamte Arbeit, die ich mache, zuerst in die Staging-Umgebung gehen muss, bedeutet dies im Grunde, dass nach der Bereitstellung in der Produktion die beiden Umgebungen wieder übereinstimmen, bis die nächste Version erstellt wird.

Der einzige Nachteil dieses Prozesses ist, dass wir eine Version mit 3/4 neuen Funktionen erstellen und diese in der Staging-Umgebung bereitstellen, und der Client dann entscheidet, dass er keine dieser Funktionen möchte Setzen Sie die Version zurück, damit der Code zurückgesetzt wird, und synchronisieren Sie die Datenbank erneut.

Grundsätzlich sage ich, dass wir fast nie manuelle Änderungen vornehmen, auch nicht an Dingen wie CMS-Blöcken / Seiten. Die einzige Einschränkung besteht darin, dass der Client möglicherweise Änderungen vornimmt. Bevor wir also Bereitstellungen / Datenbank-Resync durchführen, stellen wir sicher, dass beim Staging nichts vorhanden ist, das der Client beibehalten möchte.



Ich hoffe, dies gibt Ihnen einige Gedanken / Einsichten, um Ihnen zu helfen, da ich sagte, es ist nur mein Arbeitsprozess und meine Meinung.

DanCarlyon
quelle