एक उत्पादन डेटाबेस को परीक्षण डेटा में परिवर्तित करें


15

उत्पादन के करीब एक परीक्षण है, बेहतर यह उत्पादन व्यवहार का अनुकरण कर सकता है। मैं डेटाबेस बैकअप को हमारे परीक्षण वातावरण में उत्पादन से कॉपी करना चाहूंगा, लेकिन मुझे क्या बदलने की आवश्यकता है ताकि परीक्षण काम करता है, और उत्पादन में हस्तक्षेप करने या गलती से वास्तविक ग्राहकों को ईमेल करने के अलावा ( web/%secure/base_urlपरीक्षण url के साथ सेटिंग के अलावा )?

इस प्रश्न के बारे में सोचने का एक और तरीका यह होगा कि मैं अपने स्वयं के उत्पादन डेटा से Magento नमूना डेटा जैसी कोई चीज़ कैसे उत्पन्न करूं।

जवाबों:


8

1) डीबी डंप

जब आप निर्यात करते हैं, तो आप निम्न तालिकाओं के लिए केवल संरचना निर्यात कर सकते हैं:

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) विन्यास सेटिंग्स

  • वेब / (असुरक्षित | सुरक्षित) / base_url
  • ईमेल पते से संपर्क करें
  • ईमेल अक्षम करें ( system/smtp/disable) ताकि आप गलती से ईमेल न भेजें

3) ग्राहक की जानकारी का अनाउंसमेंट करें

  • आप Magento के लिए Anonygento मॉड्यूल का उपयोग कर सकते हैं
  • ग्राहक की जानकारी / बिक्री आदेश / आदि को बाधित करने के लिए अपनी खुद की स्क्रिप्ट लिखें

4) मॉड्यूल सेटिंग्स

  • आप भुगतान / शिपिंग मॉड्यूल के लिए सैंडबॉक्स मोड को सक्षम कर सकते हैं और उचित सेटिंग्स बना सकते हैं
  • विभिन्न एकीकरण के लिए उपयोग किए जाने वाले चेक मॉड्यूल (या तो उन्हें सैंडबॉक्स मोड में अक्षम या सेट करें)

देव के लिए, कुछ तालिकाओं के लिए सामग्री को अनदेखा करना ठीक है। क्यूए / स्टेजिंग के लिए आप चाहते हैं कि उन सभी तालिकाओं को जितना संभव हो उतना उत्पादन को प्रतिबिंबित किया जाए।
beeplogic

@FlorinelChris: मैंने सोचा था कि सवाल db माइग्रेशन को सरल बनाने और इसे जटिल बनाने के बारे में नहीं था :) किसी भी तरह से, अच्छा जवाब!
user487772

@ कठिन हिस्सा उपरोक्त सभी को एक स्क्रिप्ट में रखना है ... इसे बाद में चलाना सरल उपाय है।
फ्लोरिनसेलइस

2

हमने ब्रांचिंग के लिए DB डिप्स को संभालने के लिए एक स्क्रिप्ट लिखी। इस लेख को पढ़ें ।

मूल प्रिंसिपल यह है कि यह local.xmlDB क्रेडेंशियल्स लाने के लिए पढ़ता है , फिर उस आधार पर डेटा को डंप करता है। यह डंप को दो भागों में विभाजित करता है, केवल संरचना और फिर डेटा। लेकिन कुंजी यह है कि यह गैर-जरूरी डेटा को छोड़ कर पारंपरिक डंप प्रक्रिया को गति देता है , और सबसे गंभीर रूप से डंप के दौरान किसी भी टेबल के ताले को रोकता है जो अन्यथा आपकी लाइव साइट को अवरुद्ध / लटका देगा।

जब आपको MySQL डंप मिल गया है, तो आप केवल उपयोग करके URL को बहुत आसानी से बदल सकते हैं sed

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

फिर अपने नए DB में एक 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

यदि आप इस प्रकार डीबी में यूआरएल बदलते हैं, तो स्थानीय.एक्सएमएल फ़ाइल को हटाने या इंस्टॉलर को फिर से चलाने के लिए बिल्कुल भी कोई कारण नहीं है।

ब्रांचिंग की पूरी प्रक्रिया हमारे Magento GIT Guide में अच्छी तरह से शामिल है । यह विकास शाखाएँ बनाने के लिए एक अच्छी प्रक्रिया है, लेकिन एक महत्वपूर्ण अंतर से लाइव DB को सिकोड़ती है। इसलिए परीक्षण पूरी तरह से लाइव साइट पर समान नहीं होंगे।

तो एक वेनिला डीबी डंप, सीड रिप्लेसमेंट का प्रदर्शन करते हुए, डीबी आयात एक स्टेजिंग साइट के लिए पर्याप्त है। और जितना संभव हो सके लाइव साइट को मिरर / मैच करेगा।

ग्राहकों के साथ संचार को रोकने के संदर्भ में - हमने इसे कभी भी एक आवश्यकता नहीं माना है, क्योंकि हम हमेशा परीक्षण के लिए जानबूझकर खाते बनाते हैं, कभी भी परीक्षण के लिए वास्तविक ग्राहक आदेशों का उपयोग नहीं करते हैं।


1

ईमेल समस्या का एक विकल्प यह है कि आप सभी ईमेलों को पुनर्निर्देशित करने के लिए अपनी विकास साइट को कॉन्फ़िगर करें। मन के टुकड़े को जोड़ता है।

आप ऐसा कैसे करते हैं, यह आपके पर्यावरण पर निर्भर करता है - हमारे लिए इसे vhost में जोड़ने का काम करता है:

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

0

कुछ भी तो नहीं। सुरक्षित और असुरक्षित URL बदलना काफी पर्याप्त है।

आप log_*केवल अपने डंप को हल्का बनाने के लिए टेबल डेटा को छोड़ना पसंद कर सकते हैं ।


1
लेकिन मान लीजिए कि मैं अपनी परीक्षा प्रणाली बताता हूं कि मैंने एक आदेश भेज दिया है - क्या वह इसके बारे में वास्तविक ग्राहक को ईमेल नहीं भेजेगा ?
कोजिरो

केवल अन्य आइटम जिन्हें बदलने की आवश्यकता है, वे हैं तृतीय पक्ष मॉड्यूल पंजीकरण जानकारी यदि आप उन कुंजियों को चला रहे हैं जो केवल सक्रियण कुंजियों के बजाय प्रति डोमेन हैं। मैं ईमेल पतों को भी शामिल करता हूं इसलिए ऑर्डर डेस्क के बजाय टेस्ट ऑर्डर ट्रांजेक्शनल एक टेस्ट अकाउंट में जाता है। जब आप पहली बार शुरू करते हैं, तो सुरक्षित और असुरक्षित आधार सभी आवश्यक होते हैं। यदि आप अक्सर ऐसा करने की योजना बनाते हैं, तो इसे सभी को एक sql फ़ाइल में पैकेज करें और इसे अपने magento db आयात के बाद आयात करें।
Fiasco लैब्स

@ कोकोजी - यदि आप कुछ परीक्षण खाते सेट नहीं करते हैं। अपनी कंपनी के ईमेल व्यवस्थापक से बात करें, क्या उन्होंने एक युगल ईमेल उपनाम स्थापित किया है।
Fiasco लैब्स

@FiascoLabs मैं भ्रमित हूं। इस परिदृश्य में मैंने सिर्फ वास्तविक ग्राहकों के साथ एक उत्पादन Magento डेटाबेस आयात किया है। अगर मैं एक वास्तविक ग्राहक के साथ एक वास्तविक ऑर्डर की प्रक्रिया करता हूं, तो ईमेल उपनाम क्या करने जा रहे हैं?
कोजीरो

@kojiro आप सही हैं, उत्पादन से सेट डेटा आयात करने के बाद आपको ग्राहक / संवेदनशील जानकारी को साफ़ / अपडेट करना होगा। यह एक अच्छा जवाब नहीं है क्योंकि यह स्थिति को सही ढंग से संबोधित नहीं करता है।
बीफ़लॉजिकल

0

इसे आज़माएं, यह उपयोगकर्ता के ईमेल को स्क्रैम्बल करने में मदद करेगा ताकि परीक्षण वातावरण से लाइव ग्राहकों को ईमेल करने में आपकी समस्या का समाधान हो सके

UPDATE customer_entity SET email = REPLACE(email, '@', '-test@abcxyz123-')
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.