Üretim veritabanını test verilerine dönüştürme


15

Bir test üretime ne kadar yakınsa, üretim davranışını daha iyi taklit edebilir. Veritabanı yedeklemelerini üretimden test ortamlarımıza kopyalamak istiyorum, ancak testin çalışması için neyi değiştirmem ve üretime müdahale etmekten veya yanlışlıkla gerçek müşterilere e-posta göndermekten kaçınmam gerekiyor ( web/%secure/base_urltest URL'si ile ayarlamanın yanı sıra )?

Bu soruyu düşünmenin başka bir yolu da kendi üretim verilerimden Magento Örnek Verileri gibi bir şeyin nasıl üretileceğini düşünmek olacaktır .

Yanıtlar:


8

1) DB Dökümü

Dışa aktarmayı yaptığınızda, yalnızca aşağıdaki tabloların yapısını dışa aktarabilirsiniz:

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

Ayrıca core_url_rewritetüm yapılara (çeşitli testler için) ihtiyacınız yoksa, yalnızca yapı ile içe aktarılabilir ve bir Katalog URL'si çalıştırılabilir.

Terk edilmiş arabaları da temizleyebilirsiniz (ipucu:) sales_flat_quote, ayrıca ihtiyacınız yoksa siparişleri kaldırabilir ve sınırlı sayıda tutabilirsiniz

2) Yapılandırma Ayarları

  • web / (güvensiz | güvenli) / base_url
  • iletişim e-posta adresleri
  • system/smtp/disableyanlışlıkla e-posta göndermemeniz için e- postayı devre dışı bırak ( )

3) Müşteri bilgilerini anonim hale getirin

  • Magento için Anonygento modülünü kullanabilirsiniz
  • müşteri bilgilerini / satış siparişlerini / vb. gizlemek için kendi komut dosyanızı yazın

4) Modül Ayarları

  • ödeme / gönderim modülleri için korumalı alan modunu etkinleştirebilir ve doğru ayarları yapabilirsiniz
  • çeşitli entegrasyon için kullanılan modülleri kontrol edin (devre dışı bırakın veya korumalı alan moduna ayarlayın)

Dev için bazı tabloların içeriğini yok saymak sorun değildir. KG / Evreleme için, doldurulmuş tüm tabloların üretimi olabildiğince yakın yansıtmasını istersiniz.
beeplogic

@FlorinelChris: Ben soru db göç basitleştirmek ve bu karmaşık hale değil hakkında olduğunu düşündüm :) Bu herhangi bir şekilde, iyi cevap!
user487772

@Zaman zor kısmı yukarıdakilerin hepsini bir senaryoya koymaktır ... daha sonra çalıştırmak basit bir çözümdür.
FlorinelChis

2

Dallanma için DB dökümlerini işlemek için bir senaryo yazdık. Bu makaleyi okuyun .

Temel ilke local.xmlDB kimlik bilgilerini almak için okur , sonra bu temelde verileri dökümüdür. Dökümü iki parçaya ayırır, sadece yapı ve sonra veri. Ancak anahtar, temel olmayan verileri atlayarak geleneksel döküm sürecini hızlandırması ve en önemlisi, dökümü sırasında canlı sitenizi engelleyecek / asabilecek tablo kilitlerini önleyebilmesidir.

MySQL dökümüne sahip olduğunuzda, URL'yi yalnızca sed

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

Sonra yeni DB'nize bir mysql alma çalıştırın.

Yani senaryo olmadan, çok basit bir versiyon böyle görünecektir.

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

Bu şekilde DB'deki URL'leri değiştirirseniz, local.xml dosyasını silmeniz veya yükleyiciyi yeniden çalıştırmanız için hiçbir neden yoktur.

Tüm dallanma süreci Magento GIT Kılavuzumuzda iyi bir şekilde ele alınmıştır . Bu, geliştirme dalları oluşturmak için iyi bir süreçtir, ancak canlı DB'yi önemli bir farkla küçültür. Dolayısıyla, testler canlı siteyle tamamen aynı olmayacaktır.

Yani bir vanilya DB dökümü, sed yerine, DB alma bir evreleme sitesi için yeterlidir. Ve canlı siteyi mümkün olduğunca yakından yansıtacaktır.

Müşterilerle iletişimi önlemek açısından - test için her zaman kasıtlı olarak hesaplar oluşturduğumuzdan, asla test için gerçek müşteri siparişlerini kullanmadığımızdan bunu hiç bir zorunluluk olarak bulamadık.


1

E-posta sorunu için bir seçenek, geliştirme sitenizi TÜM e-postaları size yönlendirecek şekilde yapılandırmaktır. Biraz akıl ekler.

Bunu nasıl yapacağınız ortamınıza bağlıdır - bizim için bunu hayalete eklemek işi yapar:

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

0

Hiçbir şey değil. Güvenli ve güvenli olmayan URL'leri değiştirmek oldukça yeterlidir.

Ayrıca log_*, dökümünüzü daha hafif hale getirmek için tablo verilerini atlamak isteyebilirsiniz .


1
Ama varsayalım test sistemime bir sipariş gönderdim - gerçek müşteriye bu konuda bir e-posta göndermez mi?
kojiro

Yalnızca etkinleştirme anahtarı olmak yerine etki alanı başına anahtar çalıştırıyorsanız, değiştirilmesi gereken diğer öğeler üçüncü taraf modül kayıt bilgileridir. Ayrıca, test siparişi işleminin sipariş masası yerine bir test hesabına gitmesi için e-posta adresleri de ekliyorum. İlk başladığınızda, güvenli ve güvenli olmayan baseUrls gerekli olan her şeydir. Bunu sık sık yapmayı planlıyorsanız, hepsini bir sql dosyasına paketleyin ve magento db içe aktarmanızdan sonra içe aktarın.
Fiasco Labs

@kojiro - Bazı test hesapları oluşturduysanız değil. Şirket e-posta yöneticinizle konuşun, birkaç e-posta takma adı oluşturmalarını sağlayın.
Fiasco Labs

@FiascoLabs Kafam karıştı. Bu senaryoda, içinde gerçek müşterilerle bir üretim Magento veritabanı aldım. Gerçek bir müşteriyle gerçek bir siparişi işleme koyarsam, e-posta takma adları ne işe yarar?
kojiro

@kojiro haklısınız, üretimden bir veri kümesini içe aktardıktan sonra müşteri / hassas bilgileri temizlemeniz / güncellemeniz gerekir. Bu, durumu doğru bir şekilde ele almadığı için iyi bir cevap değildir.
beeplogic

0

Bunu deneyin, canlı müşterileri test ortamından yanlışlıkla e-postayla göndermede sorununuza yardımcı olmak için kullanıcı e-postalarını karıştırır.

UPDATE customer_entity SET email = REPLACE(email, '@', '-test@abcxyz123-')
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.