Convierta una base de datos de producción en datos de prueba


15

Cuanto más cerca esté una prueba de la producción, mejor puede emular el comportamiento de producción. Me gustaría copiar las copias de seguridad de la base de datos de la producción en nuestros entornos de prueba, pero ¿qué necesito cambiar para que la prueba funcione y evitar interferir con la producción o enviar por correo electrónico accidentalmente a clientes reales (además de configurar web/%secure/base_urlcon la URL de prueba)?

Otra forma de pensar sobre esta pregunta sería considerar cómo generar algo como Magento Sample Data a partir de mis propios datos de producción.

Respuestas:


8

1) Volcado de DB

Cuando realiza la exportación, solo puede exportar la estructura de las siguientes tablas:

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

También core_url_rewritese puede importar solo con la estructura y ejecutar una URL de catálogo Reescribe reindexar después de la importación, a menos que necesite todos esos registros (para varias pruebas).

También puede limpiar los carros abandonados (pista:) sales_flat_quote, también puede eliminar pedidos si no los necesita y mantener un número limitado

2) Configuraciones de configuración

  • web / (no seguro | seguro) / base_url
  • direcciones de correo electrónico de contacto
  • deshabilite el correo electrónico ( system/smtp/disable) para que no envíe correos electrónicos por error

3) Anonimizar la información del cliente

  • puedes usar el módulo Anonygento para Magento
  • escriba su propio guión para ofuscar la información del cliente / pedidos de venta / etc.

4) Configuración del módulo

  • puede habilitar el modo sandbox para los módulos de pago / envío y realizar la configuración adecuada
  • compruebe los módulos utilizados para diversas integraciones (ya sea deshabilitarlos o configurarlos en modo sandbox)

Para desarrolladores, ignorar el contenido de algunas tablas está bien. Para QA / Staging, querrá que todas esas tablas se llenen para reflejar la producción lo más cerca posible.
beeplogic

@FlorinelChris: Pensé que la pregunta era sobre simplificar la migración de db y no hacerla tan compleja :) Bu de ninguna manera, ¡buena respuesta!
user487772

@Tim la parte difícil es poner todo lo anterior en un script ... ejecutarlo después es la solución simple.
FlorinelChis

2

Escribimos un script para manejar los volcados de DB para ramificar. Lee este artículo .

El principio básico es que lee local.xmlpara obtener las credenciales de la base de datos, luego volca los datos sobre esa base. Divide el volcado en dos partes, solo la estructura y luego los datos. Pero la clave es que acelera el proceso de volcado convencional al omitir datos no esenciales y evita de manera crítica cualquier bloqueo de tabla durante el volcado que de otro modo bloquearía / colgaría su sitio en vivo.

Cuando tenga el volcado de MySQL, puede cambiar la URL muy fácilmente simplemente usando sed

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

Luego ejecute una importación mysql en su nueva base de datos.

Entonces, sin el script, una versión muy básica se vería así.

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

No hay ninguna razón para tener que eliminar el archivo local.xml o volver a ejecutar el instalador si cambia las URL en la base de datos de esta manera.

Todo el proceso de ramificación está bien cubierto en nuestra Guía Magento GIT . Este es un buen proceso para crear ramas de desarrollo, pero reduce el DB en vivo por un margen significativo. Por lo tanto, las pruebas no serán completamente las mismas que en el sitio en vivo.

Por lo tanto, realizar un volcado de DB de vainilla, reemplazar sed, importar DB es suficiente para un sitio de preparación. Y reflejará / coincidirá el sitio en vivo lo más cerca posible.

En términos de evitar las comunicaciones con los clientes, nunca lo hemos considerado una necesidad, ya que siempre creamos cuentas deliberadamente para las pruebas, nunca utilizamos pedidos reales de los clientes para las pruebas.


1

Una opción para el problema del correo electrónico es configurar su sitio de desarrollo para redirigir TODOS los correos electrónicos hacia usted. Añade un poco de tranquilidad.

La forma en que lo haga depende de su entorno; para nosotros, agregar esto al servidor virtual hace el trabajo:

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

0

Nada. Cambiar las URL seguras y no seguras es suficiente.

También puede omitir log_*datos de tablas solo para hacer que su volcado sea más ligero.


1
Pero supongamos que le digo a mi sistema de prueba que envié un pedido, ¿no enviaría un correo electrónico al cliente real al respecto?
kojiro

Los únicos otros elementos que deben cambiarse son la información de registro del módulo de terceros si está ejecutando claves que son por dominio en lugar de ser solo claves de activación. También incluyo direcciones de correo electrónico para que el pedido de prueba transaccional vaya a una cuenta de prueba en lugar del mostrador de pedidos. Cuando comienzas por primera vez, todo lo que necesitas son basesUrls seguras y no seguras. Si planea hacer esto a menudo, empaquételo todo en un archivo sql e impórtelo después de su importación magento db.
Fiasco Labs

@kojiro: no si configura algunas cuentas de prueba. Hable con el administrador de correo electrónico de su empresa, pídales que configuren un par de alias de correo electrónico.
Fiasco Labs

@FiascoLabs Estoy confundido. En este escenario, acabo de importar una base de datos de producción de Magento con clientes reales. Si proceso un pedido real con un cliente real, ¿de qué sirven los alias de correo electrónico?
kojiro

@kojiro estás en lo correcto, después de importar un conjunto de datos de producción, entonces necesitas eliminar / actualizar la información confidencial / del cliente. Esta no es una buena respuesta, ya que no aborda la situación correctamente.
beeplogic

0

Pruebe esto, codificará los correos electrónicos de los usuarios para ayudarlo con su problema al enviar accidentalmente clientes en vivo desde el entorno de prueba

UPDATE customer_entity SET email = REPLACE(email, '@', '-test@abcxyz123-')
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.