Konvertieren Sie eine Produktionsdatenbank in Testdaten


15

Je näher ein Test an der Produktion liegt, desto besser kann er das Produktionsverhalten nachbilden. Ich möchte die Datenbank-Backups aus der Produktion in unsere Testumgebungen kopieren, aber was muss ich ändern, damit der Test funktioniert und um die Produktion nicht zu beeinträchtigen oder versehentlich echte Kunden per E-Mail zu benachrichtigen (abgesehen von der Einstellung web/%secure/base_urlder Test-URL)?

Eine andere Möglichkeit, über diese Frage nachzudenken, besteht darin, sich zu überlegen, wie man aus meinen eigenen Produktionsdaten so etwas wie Magento-Beispieldaten generiert .

Antworten:


8

1) DB Dump

Wenn Sie den Export ausführen, können Sie nur die Struktur für die folgenden Tabellen exportieren:

core_cache
core_cache_option
core_cache_tag
log_customer
log_quote
log_summary
log_summary_type
log_url
log_url_info
log_visitor
log_visitor_info
log_visitor_online
enterprise_logging_event
enterprise_logging_event_changes
index_event
index_process_event
report_event
report_viewed_product_index
dataflow_batch_export
dataflow_batch_import

Auch core_url_rewritekann nur mit der Struktur importiert werden und einen Katalog URL Rewrites indizierte nach dem Import laufen, es sei denn , Sie all diese Aufzeichnungen müssen (für verschiedene Tests).

Sie können auch verlassene Karren säubern (Tipp:) sales_flat_quote. Sie können auch Bestellungen entfernen, wenn Sie sie nicht benötigen, und nur eine begrenzte Anzahl behalten

2) Konfigurationseinstellungen

  • web / (unsicher | sicher) / base_url
  • Kontakt-E-Mail-Adressen
  • Deaktivieren Sie email ( system/smtp/disable), damit Sie nicht versehentlich E-Mails senden

3) Kundeninformationen anonymisieren

  • Sie können das Anonygento- Modul für Magento verwenden
  • Schreiben Sie Ihr eigenes Skript, um Kundeninformationen / Kundenaufträge / etc. zu verschleiern

4) Moduleinstellungen

  • Sie können den Sandbox-Modus für Zahlungs- / Versandmodule aktivieren und die richtigen Einstellungen vornehmen
  • Prüfung der für verschiedene Integrationszwecke verwendeten Module (entweder deaktivieren oder auf Sandbox-Modus setzen)

Für Entwickler ist es in Ordnung, den Inhalt einiger Tabellen zu ignorieren. Für QA / Staging möchten Sie, dass all diese Tabellen die Produktion so genau wie möglich widerspiegeln.
Beeplogic

@FlorinelChris: Ich dachte, die Frage ginge darum, die DB-Migration zu vereinfachen und sie nicht so komplex zu machen :) Bu in irgendeiner Weise, gute Antwort!
user487772

@Tim der schwierige Teil ist, alle oben genannten Dinge in ein Skript zu schreiben. Danach ist es die einfache Lösung, es auszuführen.
FlorinelChis

2

Wir haben ein Skript geschrieben, um DB-Dumps für die Verzweigung zu behandeln. Lesen Sie diesen Artikel .

Das Grundprinzip besteht darin, dass es die local.xmlzum Abrufen der DB-Anmeldeinformationen erforderlichen Daten liest und dann die Daten auf dieser Basis ausgibt. Es teilt den Dump in zwei Teile, die Struktur und dann die Daten. Der Schlüssel ist jedoch, dass der herkömmliche Speicherauszugsprozess beschleunigt wird, indem nicht erforderliche Daten übersprungen werden. Außerdem werden Tabellensperren während des Speicherauszugs, die ansonsten Ihre Live-Site blockieren oder hängen lassen würden, am kritischsten verhindert.

Wenn Sie den MySQL-Speicherauszug haben, können Sie die URL ganz einfach mit ändern sed

sed -i 's/www.mydomain.com/staging.mydomain.com/g' ./var/db.sql

Führen Sie dann einen MySQL-Import in Ihre neue Datenbank aus.

Ohne das Skript würde eine sehr einfache Version so aussehen.

mysqldump -hHostname -uUsername LiveDbname -p > db.sql
sed -i 's/www.mydomain.com/staging.mydomain.com/g' db.sql
mysql -hHostname -uUsername DevDbname -p < db.sql

Es gibt keinen Grund, die Datei local.xml zu löschen oder das Installationsprogramm erneut auszuführen, wenn Sie die URLs in der Datenbank auf diese Weise ändern.

Der gesamte Verzweigungsprozess wird in unserem Magento GIT-Handbuch ausführlich beschrieben . Dies ist ein guter Prozess zum Erstellen von Entwicklungszweigen, der die Live-Datenbank jedoch erheblich verkleinert. Tests werden also nicht ganz so sein wie auf der Live-Site.

Die Durchführung eines Vanille-DB-Dumps, sed replace und DB-Imports ist für eine Staging-Site ausreichend. Und wird die Live-Site so genau wie möglich wiedergeben.

In Bezug auf die Verhinderung der Kommunikation mit Kunden - wir haben es nie für notwendig gehalten, da wir immer bewusst Konten zum Testen erstellen und niemals echte Kundenaufträge zum Testen verwenden.


1

Eine Option für das E-Mail-Problem besteht darin, Ihre Entwicklungssite so zu konfigurieren, dass ALLE E-Mails an Sie umgeleitet werden. Fügt ein Stück Geist hinzu.

Wie Sie das tun, hängt von Ihrer Umgebung ab - für uns erledigt das Hinzufügen zum vhost die Aufgabe:

php_admin_value sendmail_path "/usr/sbin/sendmail -i -- xyphoid@example.com,coworker@example.com"

0

Nichts. Das Ändern sicherer und unsicherer URLs ist völlig ausreichend.

Sie können auch log_*Tabellendaten weglassen , um den Speicherauszug zu vereinfachen.


1
Angenommen, ich teile meinem Testsystem mit, dass ich eine Bestellung versandt habe. Wäre dies nicht eine E-Mail an den tatsächlichen Kunden?
Kojiro

Die einzigen anderen Elemente, die geändert werden müssen, sind die Registrierungsinformationen für Module von Drittanbietern, wenn Sie Schlüssel pro Domain ausführen, anstatt nur Aktivierungsschlüssel zu sein. Ich füge auch E-Mail-Adressen hinzu, damit Testbestellungen nicht am Bestellschalter, sondern auf ein Testkonto gesendet werden. Beim ersten Start sind lediglich sichere und unsichere baseUrls erforderlich. Wenn Sie dies häufig vorhaben, packen Sie alles in eine SQL-Datei und importieren Sie es nach dem Import Ihrer Magento-Datenbank.
Fiasco Labs

@kojiro - Nicht, wenn Sie einige Testkonten eingerichtet haben. Sprechen Sie mit Ihrem Unternehmens-E-Mail-Administrator, und lassen Sie ihn ein paar E-Mail-Aliase einrichten.
Fiasco Labs

@ Fiaskolabs Ich bin verwirrt. In diesem Szenario habe ich gerade eine Magento-Produktionsdatenbank mit echten Kunden importiert. Was nützen E-Mail-Aliase, wenn ich eine echte Bestellung mit einem echten Kunden bearbeite?
Kojiro

@kojiro Sie haben Recht, nachdem Sie einen Datensatz aus der Produktion importiert haben, müssen Sie Kunden- / vertrauliche Informationen bereinigen / aktualisieren. Dies ist keine gute Antwort, da sie die Situation nicht richtig anspricht.
Beeplogic

0

Wenn Sie dies versuchen, werden Benutzer-E-Mails verschlüsselt, um Ihr Problem zu lösen und versehentlich Live-Kunden aus der Testumgebung per E-Mail zu benachrichtigen

UPDATE customer_entity SET email = REPLACE(email, '@', '-test@abcxyz123-')
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.