हम अपने डेटाबेस स्कीमाटा को 5 अलग-अलग इंस्टॉलेशन (उत्पादन, स्टेजिंग और कुछ डेवलपमेंट इंस्टॉलेशन) में सिंक्रनाइज़ रखने के लिए bcwoord के समान कुछ का उपयोग करते हैं, और संस्करण नियंत्रण में बैकअप लेते हैं, और यह बहुत अच्छी तरह से काम करता है। मैं थोड़ा विस्तार करूँगा:
डेटाबेस संरचना को सिंक्रनाइज़ करने के लिए, हमारे पास एक स्क्रिप्ट, अपडेट। एफपी, और कई फाइलें हैं जिनकी संख्या 1.sql, 2.sql, 3.sql, इत्यादि है। स्क्रिप्ट वर्तमान संस्करण संख्या को संग्रहीत करने के लिए एक अतिरिक्त तालिका का उपयोग करती है। डेटाबेस। N.sql फाइलें हाथ से तैयार की जाती हैं, संस्करण (N-1) से डेटाबेस के संस्करण N तक जाने के लिए।
उनका उपयोग तालिकाओं को जोड़ने, स्तंभों को जोड़ने के लिए किया जा सकता है, एक पुराने से नए कॉलम प्रारूप में डेटा माइग्रेट करें फिर कॉलम को ड्रॉप करें, उपयोगकर्ता प्रकारों जैसे "मास्टर" डेटा पंक्तियाँ डालें, आदि, यह कुछ भी कर सकता है, और उचित डेटा के साथ माइग्रेशन स्क्रिप्ट आप डेटा कभी नहीं खो देंगे।
अद्यतन स्क्रिप्ट इस तरह काम करती है:
- डेटाबेस से कनेक्ट करें।
- वर्तमान डेटाबेस का बैकअप लें (क्योंकि सामान गलत हो जाएगा ) [mysqldump]।
- यदि यह मौजूद नहीं है तो बहीखाता तालिका (जिसे _meta कहा जाता है) बनाएं।
- _Meta तालिका से वर्तमान संस्करण पढ़ें। न मिलने पर 0 मान लें।
- सभी .sql फ़ाइलों के लिए VERSION से अधिक संख्याएँ हैं, उन्हें क्रम में निष्पादित करें
- यदि फ़ाइलों में से एक ने एक त्रुटि उत्पन्न की: बैकअप में वापस रोल करें
- अन्यथा, बुक की गई तालिका में संस्करण को निष्पादित उच्चतम .sql फ़ाइल के लिए अद्यतन करें।
सब कुछ स्रोत नियंत्रण में चला जाता है, और प्रत्येक इंस्टॉलेशन में एक स्क्रिप्ट स्क्रिप्ट निष्पादन (नवीनतम डेटाबेस पासवर्ड आदि के साथ update.php कॉलिंग) के साथ नवीनतम संस्करण को अपडेट करने के लिए एक स्क्रिप्ट होती है। हम एसवीएन एक स्क्रिप्ट के माध्यम से मचान और उत्पादन वातावरण को अपडेट करते हैं जो स्वचालित रूप से डेटाबेस अपडेट स्क्रिप्ट को कॉल करता है, इसलिए आवश्यक डेटाबेस अपडेट के साथ एक कोड अपडेट आता है।
हम स्क्रैच से पूरे डेटाबेस को फिर से बनाने के लिए एक ही स्क्रिप्ट का उपयोग कर सकते हैं; हम सिर्फ डेटाबेस को छोड़ते हैं और फिर से बनाते हैं, फिर स्क्रिप्ट को चलाते हैं जो डेटाबेस को पूरी तरह से फिर से खोल देगा। हम स्वचालित परीक्षण के लिए एक खाली डेटाबेस को आबाद करने के लिए स्क्रिप्ट का उपयोग भी कर सकते हैं।
इस प्रणाली को स्थापित करने में केवल कुछ घंटों का समय लगा है, यह वैचारिक रूप से सरल है और सभी को संस्करण क्रमांकन योजना मिलती है, और यह डेटाबेस डिजाइन को आगे बढ़ाने और विकसित करने की क्षमता में अमूल्य है, बिना संवाद किए या मैन्युअल रूप से संशोधनों को निष्पादित करने के लिए। सभी डेटाबेस पर।
हालांकि phpMyAdmin से प्रश्नों को चिपकाते समय सावधान रहें! उन उत्पन्न प्रश्नों में आमतौर पर डेटाबेस का नाम शामिल होता है, जो आप निश्चित रूप से नहीं चाहते हैं क्योंकि यह आपकी स्क्रिप्ट को तोड़ देगा! क्रिएट टेबल जैसा कुछ mydb
। newtable
(...) विफल हो जाएगा यदि सिस्टम पर डेटाबेस को mydb नहीं कहा जाता है। हमने एक पूर्व-टिप्पणी एसवीएन हुक बनाया है mydb
जो स्ट्रिंग वाली .sql फ़ाइलों को हटा देगा , जो एक निश्चित संकेत है कि कोई व्यक्ति उचित जाँच के बिना phpMyAdmin से कॉपी / पेस्ट किया गया है।