2009-11-23 15 views
30

आश्चर्य है कि एक MySQL डेटाबेस का संस्करण नियंत्रण होना संभव है।MySQL संस्करण नियंत्रण - सबवर्सन

मुझे पता है इससे पहले कि हालांकि नवीनतम लगभग एक साल पहले है इस प्रश्न पूछा गया है, और दर चीज़ें बदल ... पर

समस्या हर डेवलपर अपाचे/MySQL/अपने दम पर पीएचपी है कि आ रहा है कंप्यूटर जिन्हें वे कभी-कभी डेटाबेस संपादित करते हैं। इसके बजाय उन्हें असुविधाजनक अगर उन्हें अन्य सभी डेवलपर्स को ईमेल भेजना है और फिर मैन्युअल रूप से परीक्षण सर्वर डेटाबेस को संपादित करना है।

आप इस समस्या से कैसे निपटते हैं?

धन्यवाद

+0

आपके पास डीबीवी भी है: http://stackoverflow.com/a/13837473/6309 – VonC

उत्तर

15

यह अपने आप में एक MySQL से संबंधित समस्या का समाधान नहीं है, लेकिन हम एक उत्पाद है liquibase के साथ सफलता का एक बहुत कुछ किया है। (http://www.liquibase.org/)

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

डेटाबेस को "अद्यतन डेटाबेस" कमांड चलाकर वर्तमान संशोधन स्तर पर लाया जा सकता है। अधिकांश परिवर्तनों में डेटाबेस परिवर्तन को रोल-बैक करने की क्षमता भी होती है, जो सहायक भी हो सकती है। मैं यह सुनिश्चित करने के अभ्यास की अनुशंसा करता हूं कि आप माइग्रेशन चलाने से पहले वर्तमान प्राप्त करें, क्योंकि यह संभवतः सबसे आसान होगा।

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

अभी तक, यह एक आकर्षण की तरह काम करता है।

+0

यह एक उत्कृष्ट समाधान की तरह दिखता है - बहुत बहुत धन्यवाद! – user103219

+0

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

+0

वास्तव में शांत दृष्टिकोण। – funktioneer

1

अच्छी तरह से हम रेल का उपयोग करते हैं जो माइग्रेशन फ़ाइलों में सभी परिवर्तन रखता है। मुझे पता है कि कुछ PHP ढांचे एक ही काम करते हैं - उदाहरण के लिए सिम्फनी। इसलिए जब हमारे परिवर्तन हमारे संग्रह में विलय हो जाते हैं (हम उपयोगकर्ता Mercurial) - हम विकास में डेटाबेस पर लागू या लागू माइग्रेशन में सभी परिवर्तन देख सकते हैं। पूर्ण बैकअप के बाद उत्पादन के लिए ज़िम्मेदार व्यक्ति के उत्पादन के लिए ज़िम्मेदार व्यक्ति की तुलना में। हालांकि यदि आप एक PHP ढांचे का उपयोग नहीं करते हैं जो इसकी देखभाल करता है, तो भयानक सुझाव बहुत दिलचस्प लगता है - मैंने पहले तरल पदार्थ के बारे में नहीं सुना है लेकिन मैं निश्चित रूप से इसे जांचूंगा।

1

आईबैटिस नामक एक उपकरण है, जिसे अब माईबैटिस कहा जाता है जो डेटाबेस के संस्करणों को पूरी तरह से संभालता है।

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

जब आपके पास एकाधिक डेटाबेस होते हैं (जैसे dev-test-prod), तो आप केवल 3 पर्यावरण फाइलें बनाते हैं और आप केवल एक कमांड-लाइन निर्देश के साथ एक वातावरण को अपडेट कर सकते हैं।

संबंधित मुद्दे