Перетворіть виробничу базу даних у тестові дані


15

Чим ближче тест до виробництва, тим краще він може наслідувати виробничу поведінку. Я хотів би скопіювати резервні копії бази даних з виробництва в наші тестові середовища, але що мені потрібно змінити, щоб тест працював, і щоб не втручався у виробництво чи випадково надсилав електронну пошту реальним клієнтам (окрім налаштування web/%secure/base_urlз тестовою URL-адресою)?

Ще одним способом задуматися над цим питанням було б розглянути, як генерувати щось на зразок даних Magento Sample Data з моїх власних виробничих даних.

Відповіді:


8

1) Dump Dump

Виконуючи експорт, ви можете експортувати лише структуру для наступних таблиць:

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

Також core_url_rewriteможна імпортувати тільки зі структурою та запускати URL-адресу каталогів Переписує повторне виведення після імпорту, якщо вам не потрібні всі ці записи (для різних тестів).

Ви також можете прибирати занедбані візки (підказка:) sales_flat_quote, ви також можете видаляти замовлення, якщо вони вам не потрібні, і просто зберігати обмежену кількість

2) Налаштування параметрів

  • web / (незахищений | безпечний) / base_url
  • контактні електронні адреси
  • відключити електронну пошту ( system/smtp/disable), щоб ви не надсилали електронні листи помилково

3) Анонімізувати інформацію про клієнтів

  • ви можете використовувати модуль Anonymousgento для Magento
  • написати свій власний сценарій, щоб ослабити інформацію про клієнтів / замовлення на продаж / тощо

4) Налаштування модуля

  • ви можете ввімкнути режим пісочниці для модулів оплати / доставки та зробити належні налаштування
  • перевірити модулі, що використовуються для різної інтеграції (відключити або встановити їх у режим пісочниці)

Для розробників ігнорування вмісту деяких таблиць добре. Для QA / Staging ви хочете, щоб усі ці таблиці, заповнені, відображали виробництво якомога ближче.
beeplogic

@FlorinelChris: Я думав, що питання полягає у спрощенні міграції db і не робить його таким складним :) Бу будь-яким чином, хороша відповідь!
user487772

@ Тіма складна частина полягає в тому, щоб помістити все вищезазначене в сценарій ... запустити його згодом - це просте рішення.
FlorinelChis

2

Ми написали сценарій для обробки відвалів БД для розгалуження. Прочитайте цю статтю .

Основний принцип полягає в тому, що він зчитує дані local.xmlдля отримання облікових даних БД, а потім скидає дані на цій основі. Він розбиває дамп на дві частини, лише структура, а потім дані. Але ключовим є те, що він прискорює звичайний процес скидання, пропускаючи несуттєві дані , і найважливіше запобігає будь-яким блокуванням таблиць під час дампа, який інакше заблокував / повісив ваш веб-сайт у реальному часі.

Коли у вас є дамп MySQL, ви можете легко змінити URL-адресу просто за допомогою sed

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

Потім запустіть імпорт mysql у вашу нову БД.

Тож без сценарію дуже основна версія виглядала б так.

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

Зовсім немає причин видаляти файл local.xml або перезапустити інсталятор, якщо таким чином змінити URL-адреси в БД.

Весь процес розгалуження добре висвітлений у нашому посібнику з MaITO GIT . Це хороший процес для створення галузей розвитку, однак зменшує живу БД на значні запаси. Тож тести не будуть повністю такими ж, як на веб-сайті в прямому ефірі.

Отже, виконуючи дамп ванільної БД, замінюючи sed, імпорту БД достатньо для розміщення сайту. І буде відображати / відповідати веб-сайту наживо як можна ближче.

Щодо запобігання спілкуванню з клієнтами - ми ніколи не вважали це необхідним, оскільки ми завжди створюємо облікові записи для тестування, ніколи не використовуючи для тестування реальні замовлення клієнтів.


1

Один із варіантів випуску електронної пошти - це налаштувати свій веб-сайт розробника на переадресацію ВСІХ електронних листів до вас. Додає трохи розуму.

Як ви це зробите, залежить від вашого оточення - для нас додавання цього до vhost виконує цю роботу:

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

0

Нічого. Змінення захищених та незахищених URL-адрес цілком достатньо.

Можливо, ви також хочете опустити log_*дані таблиць лише для того, щоб зробити ваш дамп легшим.


1
Але припустимо, я скажу своїй тест-системі, що я відвантажила замовлення - чи не надішле це повідомлення електронному листу реальному замовнику?
kojiro

Єдині інші елементи, які потребують змін, - це інформація про реєстрацію сторонніх модулів, якщо ви використовуєте ключі для домену, а не лише ключі активації. Я також включаю адреси електронної пошти, тому транзакційний тестовий ордер надходить на тестовий рахунок замість реєстрації замовлень. Під час першого запуску необхідні безпечні та незахищені baseUrls. Якщо ви плануєте робити це часто, запакуйте все це у файл sql та імпортуйте його після імпорту магенто db.
Лабораторії Фіаско

@kojiro - ні, якщо ви створили кілька тестових облікових записів. Поговоріть з адміністратором електронної пошти своєї компанії, запропонуйте їм налаштувати кілька псевдонімів електронної пошти.
Лабораторії Фіаско

@FiascoLabs Я розгублений. У цьому сценарії я щойно імпортував виробничу базу даних Magento з реальними клієнтами. Якщо я обробляю реальне замовлення з реальним замовником, чим корисним буде псевдонім електронної пошти?
kojiro

@kojiro ви маєте рацію, після імпорту набору даних із виробництва, тоді вам потрібно очистити / оновити інформацію про клієнта / конфіденційну інформацію. Це не є гарною відповіддю, оскільки вона неправильно вирішує ситуацію.
beeplogic

0

Спробуйте це, він скануватиме повідомлення електронної пошти користувачів, щоб допомогти у вирішенні вашої проблеми, коли випадково надсилати електронних листів із тестових середовищ

UPDATE customer_entity SET email = REPLACE(email, '@', '-test@abcxyz123-')
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.