Konwertuj produkcyjną bazę danych na dane testowe


15

Im bliżej testu jest produkcja, tym lepiej może ona naśladować zachowanie produkcyjne. Chciałbym skopiować kopie zapasowe bazy danych z produkcji do naszych środowisk testowych, ale co muszę zmienić, aby test działał i aby nie zakłócać produkcji ani nie wysyłać przypadkowo wiadomości e-mail do prawdziwych klientów (oprócz ustawienia web/%secure/base_urladresu URL testu)?

Innym sposobem na zastanowienie się nad tym pytaniem byłoby rozważenie, jak wygenerować coś w rodzaju danych próbnych Magento z własnych danych produkcyjnych.

Odpowiedzi:


8

1) Zrzut DB

Podczas eksportu możesz wyeksportować tylko strukturę dla następujących tabel:

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

Również core_url_rewritemogą być importowane tylko ze strukturą i uruchomić Katalog URL przepisuje reindex po imporcie, chyba że trzeba te wszystkie rekordy (dla różnych testów).

Możesz także wyczyścić porzucone wózki (wskazówka:) sales_flat_quote, możesz również usuwać zamówienia, jeśli ich nie potrzebujesz i zachować tylko ograniczoną liczbę

2) Ustawienia konfiguracji

  • web / (niezabezpieczony | bezpieczny) / base_url
  • kontaktowe adresy e-mail
  • wyłącz email ( system/smtp/disable), abyś nie wysyłał e-maili przez pomyłkę

3) Anonimizuj informacje o kliencie

  • możesz użyć modułu Anonygento dla Magento
  • napisz własny skrypt, aby zaciemnić informacje o klientach / zamówieniach sprzedaży / itp

4) Ustawienia modułu

  • możesz włączyć tryb piaskownicy dla modułów płatności / wysyłki i wprowadzić odpowiednie ustawienia
  • sprawdź moduły używane do różnych integracji (wyłącz lub ustaw je w tryb piaskownicy)

W przypadku deweloperów ignorowanie zawartości niektórych tabel jest w porządku. W przypadku kontroli jakości / etapowania wszystkie tabele powinny być wypełnione tak, aby odzwierciedlały produkcję jak najbliżej.
beeplogic

@FlorinelChris: Myślałem, że pytanie dotyczy uproszczenia migracji bazy danych i nie uczynienia jej tak skomplikowanym :) Bu pod jakimkolwiek względem, dobra odpowiedź!
user487772,

@Tim trudnym zadaniem jest umieszczenie wszystkich powyższych elementów w skrypcie ... uruchomienie go później jest prostym rozwiązaniem.
FlorinelChis

2

Napisaliśmy skrypt do obsługi zrzutów DB dla rozgałęzień. Przeczytaj ten artykuł .

Podstawowa zasada polega na tym, że czyta dane w local.xmlcelu pobrania referencji bazy danych, a następnie zrzuca dane na tej podstawie. Dzieli zrzut na dwie części, tylko strukturę, a następnie dane. Ale kluczem jest to, że przyspiesza konwencjonalny proces zrzutu poprzez pomijanie nieistotnych danych , a najbardziej krytycznie zapobiega blokowaniu się tabel podczas zrzutu, które w przeciwnym razie zablokowałyby / zawiesiłyby twoją witrynę.

Gdy masz zrzut MySQL, możesz bardzo łatwo zmienić adres URL, używając tylko sed

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

Następnie uruchom import mysql do nowej bazy danych.

Bez skryptu wyglądałaby bardzo podstawowa wersja.

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

Nie ma żadnego powodu, aby usuwać plik local.xml lub ponownie uruchomić instalator, jeśli zmienisz w ten sposób adresy URL w bazie danych.

Cały proces rozgałęziania jest dobrze omówiony w naszym Magento GIT Guide . Jest to dobry proces do tworzenia gałęzi programistycznych, ale znacznie zmniejsza rzeczywistą bazę danych. Dlatego testy nie będą zupełnie takie same jak na stronie na żywo.

Dlatego wykonanie zrzutu waniliowego DB, zamiany seda, importu DB jest wystarczające dla witryny pomostowej. I będzie odzwierciedlać / dopasowywać witrynę na żywo tak dokładnie, jak to możliwe.

Jeśli chodzi o zapobieganie komunikacji z klientami - nigdy nie uważaliśmy tego za konieczne, ponieważ zawsze tworzymy konta celowo w celu testowania, nigdy nie wykorzystując prawdziwych zamówień klientów do testowania.


1

Jedną z opcji problemu z pocztą e-mail jest skonfigurowanie witryny programistycznej do przekierowywania WSZYSTKICH wiadomości e-mail do Ciebie. Dodaje trochę spokoju.

Jak to zrobisz, zależy od twojego środowiska - dla nas dodanie tego do vhosta wykonuje zadanie:

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

0

Nic. Wystarczy zmienić bezpieczne i niezabezpieczone adresy URL.

Możesz także pominąć log_*dane tabel, aby zrzut był lżejszy.


1
Ale przypuśćmy, że powiem mojemu systemowi testowemu, że wysłałem zamówienie - czy nie wyśle ​​e-maila do prawdziwego klienta?
kojiro

Jedynymi innymi elementami, które wymagają zmiany, są informacje rejestracyjne modułu strony trzeciej, jeśli korzystasz z kluczy przypisanych do domeny, a nie tylko kluczy aktywacyjnych. Podaję również adresy e-mail, więc transakcja zamówienia testowego trafia na konto testowe zamiast do działu zamówień. Podczas pierwszego uruchomienia potrzebne są bezpieczne i niezabezpieczone baseUrls. Jeśli planujesz robić to często, spakuj wszystko do pliku SQL i zaimportuj po importowaniu bazy danych magento.
Fiasco Labs

@kojiro - Nie, jeśli skonfigurujesz kilka kont testowych. Porozmawiaj z administratorem poczty e-mail w swojej firmie, poproś o skonfigurowanie kilku aliasów e-mail.
Fiasco Labs

@FiascoLabs Jestem zdezorientowany. W tym scenariuszu właśnie zaimportowałem produkcyjną bazę danych Magento z prawdziwymi klientami. Jeśli przetwarzam prawdziwe zamówienie z prawdziwym klientem, co dobrego zrobią aliasy e-mail?
kojiro

@kojiro masz rację, po zaimportowaniu zestawu danych z produkcji musisz wyczyścić / zaktualizować informacje o klientach / poufne informacje. To nie jest dobra odpowiedź, ponieważ nie rozwiązuje poprawnie sytuacji.
beeplogic

0

Wypróbuj to, będzie szyfrować wiadomości e-mail użytkowników, aby pomóc w rozwiązaniu problemu z przypadkowym wysłaniem wiadomości e-mail do klientów z testowanego środowiska

UPDATE customer_entity SET email = REPLACE(email, '@', '-test@abcxyz123-')
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.