Converti un database di produzione in dati di test


15

Quanto più un test è vicino alla produzione, tanto meglio può emulare il comportamento della produzione. Vorrei copiare i backup del database dalla produzione nei nostri ambienti di test, ma cosa devo cambiare in modo che il test funzioni, e per evitare di interferire con la produzione o di inviare per e-mail i clienti reali (oltre all'impostazione web/%secure/base_urldell'URL di test)?

Un altro modo di pensare a questa domanda sarebbe quello di considerare come generare qualcosa come Magento Sample Data dai miei dati di produzione.

Risposte:


8

1) DB Dump

Quando si esegue l'esportazione, è possibile esportare solo la struttura per le seguenti tabelle:

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

Inoltre core_url_rewritepuò essere importato solo con la struttura ed eseguire un URL del catalogo Riscrive reindicizzazione dopo l'importazione, a meno che non siano necessari tutti quei record (per vari test).

Puoi anche pulire i carrelli abbandonati (suggerimento:) sales_flat_quote, puoi anche rimuovere gli ordini se non ne hai bisogno e mantenere un numero limitato

2) Impostazioni di configurazione

  • web / (non protetta | sicuro) / base_url
  • contattare gli indirizzi e-mail
  • disabilitare l'e-mail ( system/smtp/disable) in modo da non inviare e-mail per errore

3) Anonimizzare le informazioni sui clienti

  • puoi usare il modulo Anonygento per Magento
  • scrivere il proprio script per offuscare le informazioni sui clienti / ordini di vendita / ecc

4) Impostazioni del modulo

  • è possibile abilitare la modalità sandbox per i moduli di pagamento / spedizione ed effettuare le impostazioni appropriate
  • controllare i moduli utilizzati per varie integrazioni (disabilitarli o impostarli in modalità sandbox)

Per gli sviluppatori, ignorare il contenuto di alcune tabelle è OK. Per QA / Staging vorrai che tutte quelle tabelle siano popolate per riflettere la produzione il più vicino possibile.
beeplogic,

@FlorinelChris: pensavo che la domanda riguardasse la semplificazione della migrazione db e non la rendesse così complessa :) Bu in ogni caso, buona risposta!
user487772,

@Tim la parte difficile è mettere tutto quanto sopra in uno script ... eseguirlo in seguito è la soluzione semplice.
FlorinelChis,

2

Abbiamo scritto uno script per gestire i dump di DB per il branching. Leggi questo articolo .

Il principio base è che legge il local.xmlper recuperare le credenziali del DB, quindi scarica i dati su quella base. Suddivide il dump in due parti, solo la struttura e quindi i dati. Ma la chiave è che accelera il processo di dump convenzionale saltando i dati non essenziali , e soprattutto impedisce in modo critico qualsiasi blocco delle tabelle durante il dump che altrimenti bloccherebbe / bloccherebbe il tuo sito live.

Quando hai il dump di MySQL, puoi cambiare l'URL molto facilmente semplicemente usando sed

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

Quindi esegui un'importazione mysql nel tuo nuovo DB.

Quindi senza lo script, una versione molto semplice sarebbe simile a questa.

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

Non vi è alcun motivo per cui è necessario eliminare il file local.xml o rieseguire il programma di installazione se si modificano gli URL nel DB in questo modo.

L'intero processo di ramificazione è ben coperto nella nostra Guida GIT di Magento . Questo è un buon processo per la creazione di rami di sviluppo, ma riduce il DB attivo di un margine significativo. Quindi i test non saranno completamente gli stessi del sito live.

Quindi, eseguendo un dump DB vanilla, sed sostituzione, l'importazione DB è sufficiente per un sito di staging. E rispecchierà / abbinerà il sito live il più vicino possibile.

In termini di prevenzione delle comunicazioni con i clienti, non l'abbiamo mai trovato una necessità, poiché creiamo sempre account deliberatamente per i test, senza mai utilizzare gli ordini dei clienti reali per i test.


1

Un'opzione per il problema della posta elettronica è configurare il sito di sviluppo per reindirizzare TUTTE le e-mail. Aggiunge un po 'di pensiero.

Come lo fai dipende dal tuo ambiente - per noi l'aggiunta di questo al vhost fa il lavoro:

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

0

Niente. La modifica di URL sicuri e non sicuri è abbastanza.

Potresti anche omettere i log_*dati delle tabelle solo per rendere più leggero il tuo dump.


1
Supponiamo che dico al mio sistema di test che ho spedito un ordine: non invierebbe un'email al cliente reale a riguardo?
Kojiro,

Le uniche altre voci che devono essere modificate sono le informazioni di registrazione del modulo di terze parti se si eseguono chiavi per dominio anziché solo chiavi di attivazione. Includo anche indirizzi e-mail in modo che l'ordine di prova transazionale vada a un account di prova anziché al banco ordini. Al primo avvio, BaseUrls sicuri e non sicuri sono tutto ciò che è necessario. Se hai intenzione di farlo spesso, impacchettalo in un file sql e importalo dopo l'importazione db magento.
Fiasco Labs,

@kojiro - Non se hai impostato alcuni account di prova. Parla con l'amministratore della tua azienda e-mail, fagli impostare un paio di alias e-mail.
Fiasco Labs,

@FiascoLabs Sono confuso. In questo scenario ho appena importato un database Magento di produzione con clienti reali al suo interno. Se elaboro un ordine reale con un cliente reale, a che cosa servono gli alias email?
Kojiro,

@kojiro hai ragione, dopo aver importato un set di dati dalla produzione, è necessario cancellare / aggiornare le informazioni sui clienti / sensibili. Questa non è una buona risposta in quanto non affronta la situazione correttamente.
beeplogic,

0

Prova questo, rimescolerà le e-mail degli utenti per aiutarti a risolvere il problema nell'invio accidentale di e-mail ai clienti live dall'ambiente di test

UPDATE customer_entity SET email = REPLACE(email, '@', '-test@abcxyz123-')
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.