देव / मंचन और उत्पादन के बीच डेटाबेस तुल्यकालन


36

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

कहो कि मेरे पास एक लाइव वर्डप्रेस वेबसाइट है। मैंने अपने देव वातावरण पर इसकी नकल करते हुए, हर चीज़ का एक डंप लिया। मैंने बदलाव करना शुरू कर दिया। 1 सप्ताह बाद मैं अपने अपडेट को तैनात करने के लिए तैयार हूं। इस बीच, उत्पादन साइट पर डेटाबेस बदल गया है (नई पोस्ट, नई टिप्पणियाँ, आदि)। मैं रोलआउट के दौरान उत्पादन और विकास के बीच परिवर्तनों को कैसे सिंक्रनाइज़ करता हूं और क्या इस प्रक्रिया को स्वचालित करना संभव है (कुछ हद तक कम से कम)?



इस प्लगइन को आजमाएं। wordpress.org/extend/plugins/duplicator
Gopal Bhattacharjee

जवाबों:


10

एक बेहतर तरीका हो सकता है कि मैं गायब हूं लेकिन मैं आपको 2 विकल्प देने जा रहा हूं:

1. अपने नए पोस्ट और टिप्पणियों को निर्यात करने के लिए एक्सएमएल एक्सपोर्ट का उपयोग करें। फिर नए डेटाबेस और टिप्पणियों को देव डेटाबेस में आयात करने के लिए वर्डप्रेस आयातक का उपयोग करें

देव में आयात करना सबसे अच्छा है फिर डेटाबेस को उत्पादन में स्थानांतरित करें क्योंकि जब आप आयात करेंगे तो उत्पादन से सभी नई मीडिया फ़ाइलों को डाउनलोड करेंगे।

इस बीच उत्पादन बदल गया है (नई पोस्ट, नई टिप्पणियाँ, आदि)

यह किसी भी परिवर्तित सामग्री में लाने की आपकी समस्या को हल करेगा।

2. देव से नई तालिकाओं को जोड़ने के लिए INSERT IGNORE INTO MySql कमांड का उपयोग करें । या उसी तालिका में डुप्लिकेट पंक्तियों को अधिलेखित करने के लिए REPLACE कमांड।

MySql का उपयोग करने से पहले दोनों डेटाबेस का बैकअप बना लें और gz डेटाबेस को प्रोडक्शन सर्वर पर ले जाएँ और डंप को अपलोड करें (यदि उत्पादन के समान हो तो देव का नाम बदलें)।

INSERT IGNORE INTO `_wp_production_db`.`wp_cool_plugin_options`
SELECT *
FROM `_wp_dev_db`.`wp_cool_plugin_options`

मैं MySql कमांड के साथ सहज नहीं हूं इसलिए मैं विकल्प 1 के साथ जाऊंगा।


XML निर्यात स्टालों पर अपने ब्लॉग +10.000 पोस्ट्स जैसे कि मैं इसका उपयोग नहीं कर सकता जैसे पदों की राशि के साथ कहीं नोटिस।
एडेलवाटर

@ पानी, हाँ यह सर्वर सेटिंग्स पर निर्भर करता है max_execution_time (आमतौर पर 30 सेकंड) के लिए, बहुत बड़े निर्यात के लिए इस मूल्य को उच्च सेट करना होगा (1-2 मिनट या अधिक)
mike23

2

यदि यह ठीक उसी प्रकार के डेटा (कुछ नए ब्लॉग पोस्ट, नई टिप्पणियाँ) का अधिक है, तो मुझे यकीन नहीं है कि आपको इसे वास्तव में सिंक करने की आवश्यकता क्यों है। यह ऐसा नहीं है कि यह साइट के कोड के काम करने के तरीके को बदल देगा क्योंकि यह उसी के समान है। मैं आमतौर पर इसके बारे में चिंता नहीं करता जब तक कि यह एक नए प्रकार का डेटा न हो।

मैं हमेशा यह सुनिश्चित करता हूं कि मेरे पास साइट के लिए डेटा का एक अच्छा नमूना है न कि हर पोस्ट, पेज, लाइव साइट से टिप्पणी।


2
अच्छी बात! हालाँकि अगर उत्पादन में विशुद्ध रूप से सामग्री क्षेत्र (पोस्ट, टिप्पणी) और देव में कुछ बदलाव होते हैं, तो सेटिंग्स और सेटअप में परिवर्तन होता है (उदाहरण के लिए 5 प्लगइन्स जोड़े गए और उनकी सेटिंग्स को बदल दिया गया) आप वास्तव में दो बार काम करने के बिना उन सेटिंग्स में बदलाव कैसे करेंगे? देव और उत्पादन पर एक समय)?
एलेक्स

यह असली सवाल यह नहीं है और मेरे पास इसके लिए कोई जवाब नहीं है।
करिश्माईचेल

-1। कभी-कभी हमें उन्हें सिंक में रखने की आवश्यकता होती है। idडेटाबेस से पोस्ट / पृष्ठों के लिए विशेष रूप से।
फ्रांसिस्को कॉर्लेस मोरेल्स

2

जैसे ही आप समानांतर में परिवर्तन करने के विषय को स्पर्श करते हैं, आप कॉन्फ़िगरेशन प्रबंधन के क्षेत्र को छू लेते हैं। बहुत सारे पैटर्न के साथ, स्वयं के समुदाय (http://www.cmcrossroads.com/) और उपकरण संस्करण प्रबंधन के लिए इतना नहीं है (जैसा कि svn / git) लेकिन क्लीयरकेस जैसे कॉन्फ़िगरेशन प्रबंधन (पैटर्न) के समर्थन के लिए। (पूरी तरह से अलग क्षेत्रों)।

इस मामले में यह अभी भी एक साधारण स्थिति है और आप इसे कुछ सीमाओं और कुछ मैनुअल काम और कुछ सूचियों के साथ काम करने के लिए पाएंगे।

जिस परिदृश्य पर मैं इसे आदर्श समाधान के बारे में अधिक विवरणात्मक बनाने की सोच रहा हूं: दुनिया के सभी कोनों में एक ही कोडबेस, एक से अधिक परीक्षण वातावरण, कई स्वीकृति वातावरण, कई उत्पादन स्वीकृति वातावरण पर काम करने वाले कई डेवलपर्स।

यदि आप इसे थोड़ा और अधिक पेशेवर करना चाहते हैं:

a) आपके द्वारा सामना किए जाने वाले सभी कॉन्फ़िगरेशन आइटमों की एक सूची लिखें, यह वर्डप्रेस कोड ही हो सकता है, एक्सटर्नल, कंटेंट, मेटाडाटा से प्लगइन्स और यह तय करें कि इनमें से आप किस तरह के "प्रबंधन" के तहत लाना चाहते हैं, जो कि मायने रखते हैं।

बी) वर्कफ़्लोज़ का वर्णन करें जो हो सकता है जैसे कि एक फिक्स के साथ क्या होता है, कुछ नए होने के साथ क्या होता है, किस स्थिति में आप अपनी तरफ से सामग्री बदलते हैं, उसको क्या कहते हैं, और यह कौन करता है, इसका मालिक कौन है जैसे कोई नई पोस्ट या नया प्लगइन।

ग) समानांतर काम करने के लिए पहले यह बताएं कि आप किस सीआई का प्रबंधन करना चाहते हैं, यह तय करें कि क्या प्रवाह हमेशा विकास से उत्पादन तक है या यदि यह वास्तव में दो तरीकों से करना है।

d) प्रत्येक CI प्रकार के लिए (ए) के तहत एक संकल्प लिखें। ईजी फॉर ए आल दैट टेक्स्ट (या एक्सपोर्टेड टेक्स्ट जैसे php फाइल्स लेकिन XML फाइल में ALSO प्लेन टेक्स्ट) विलय संभव है। यह वास्तव में कोई समस्या नहीं है लेकिन आपको एक अच्छे मर्ज टूल की आवश्यकता है। उदाहरण के साथ क्लियरकेस के साथ आपको निम्नलिखित स्थितियों में 3 तरह से विलय करना होगा: 1) तुच्छ विलय: यह स्वचालित रूप से 2 करेगा) गैर तुच्छ स्वचालित: यह स्वचालित रूप से ऐसा करेगा लेकिन आपको इसकी जांच करने की आवश्यकता है 3) गैर तुच्छ गैर स्वचालित: यह एक संघर्ष है जैसे 1 लाइन पर कई बदलाव किए गए हैं। नॉन ट्रिवियल्स न्यूनतम हिस्सा है जिसे आपको मैन्युअल रूप से देखभाल करने की आवश्यकता होती है, एक अच्छा मर्जिंग टूल आपको इसमें ले जाएगा जैसे कि क्लीयरकेस में एक (जो शब्द विलय भी करता है और जहां आप विशिष्ट फ़ाइल के लिए अन्य वाणिज्यिक या गैर वाणिज्यिक विलय में लिंक कर सकते हैं प्रकार)। फर्टमोर यदि आपने (ए) फाइलों के तहत पहचान की है, जिन्हें केवल कॉपी किया जाना चाहिए, तो उनका व्यवहार विलय नहीं होगा, लेकिन एक तरह से मर्ज किए बिना दूसरे संस्करण को ओवरराइट करने के लिए एक तरह से कॉपी किया जा सकता है (उदाहरण के लिए प्लगइन्स जिन्हें आपने संशोधित नहीं किया है)। विभिन्न व्यवहारों के साथ इनमें से कई प्रकार संभव हैं। लेकिन CI के बीच संबंधों को लिखें,

फिर नॉन टेक्स्ट बेस्ड मर्ज के लिए आपको यह तय करने की आवश्यकता है कि उन्हें कैसे हैंडल करना है जैसे कि 2 जगहों पर बदले गए चित्र। आप यहां यह तय कर सकते हैं कि उत्पादन में हमेशा वरीयता होती है (कम से कम मैं यही सोचता हूं), जो इसे सरल बनाता है।

तो ... इस समस्या को हल करने के लिए आपको एक संस्करण प्रबंधन उपकरण की आवश्यकता होती है जो विभिन्न धाराओं का समर्थन करता है। प्रत्येक धारा एक भाग का प्रतिनिधित्व करती है। (यह आपकी आवश्यकताओं के आधार पर बेहद जटिल हो सकता है लेकिन इस मामले में मुझे लगता है कि यह बहुत सरल है)।

यदि आप अब इन धाराओं को वर्डप्रेस इंस्टॉलेशन के तहत प्रबंधित कर सकते हैं और उन्हें डेटाबेस की सामग्री आदि के साथ भी सिंक कर सकते हैं ... तो आप सीएम / वर्जनिंग टूल में मर्ज कर सकते हैं और फिर इसे अन्य वातावरण में वापस निर्यात कर सकते हैं।

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

तकनीकी रूप से लगभग हमेशा सब कुछ संभव होता है http://www.cmcrossroads.com/forums परिदृश्य के लिए दर्जनों या सैकड़ों बार अधिक जटिल होते हैं, हालांकि हमेशा एक ही दृष्टिकोण का उपयोग करके और एक ही सीएम पैटर्न का उपयोग करके।

संक्षेप में: इसके तहत एक संस्करण प्रबंधन परत डालें, मर्ज को स्वचालित करें और संघर्षों को संभालें, फिर लक्ष्य वातावरण में आयात करें। एक स्ट्रीम रणनीति समझें जो यहां फिट हो और इसे लिखें। नन्हा weeny सा CM प्रबंधन करें। यह पेशेवर समाधान होगा अन्यथा कुछ डीबी कॉपी हैक, स्क्रिप्ट आदि स्थापित करें ...


2

मैंने अभी-अभी एक पोस्ट बनाया है कि मैं किस तरह से उत्पादन डेटा को हमारे स्टेजिंग में सिंक्रोनाइज़ करता हूँ, इसके बारे में मेरे ब्लॉग पोस्ट को देखें: http://blog.wp.weightpoint.se/2012/01/04/synchronizing-wordpress-multisite-dultabase -से-उत्पादन करने वाली मचान-पर्यावरण /

यदि आप कोड और अन्य सामान को भी सिंक्रोनाइज़ करना चाहते हैं, तो मैं संबंधित इग्नोर फाइल के साथ git या मर्चेंटरी रिपॉजिटरी बनाने की सलाह दूंगा।

यदि आप स्टेजिंग से उत्पादों को अंतर अपडेट करना चाहते हैं, तो मुझे लगता है कि माइग्रेशन स्क्रिप्ट बनाना सबसे सुरक्षित और सबसे अच्छा तरीका है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.