2010-01-14 19 views
8

मैं कुछ अन्य लोगों के साथ एक आवेदन पर काम कर रहा हूं और हम स्रोत नियंत्रण में हमारे MySQL डेटाबेस को स्टोर करना चाहते हैं। मेरे विचारों में दो फाइलें हैं: टेबल के लिए एक स्क्रिप्ट स्क्रिप्ट होगी, और दूसरा हमारे नमूना डेटा के लिए आवेषण होगा। क्या यह एक अच्छा दृष्टिकोण है? साथ ही, इस जानकारी को निर्यात करने का सबसे अच्छा तरीका क्या है?स्रोत नियंत्रण में MySQL डेटाबेस को संग्रहीत करने का सबसे अच्छा तरीका क्या है?

इसके अलावा, आदि

उत्तर

3

, परिवर्तन करने के निर्यात, अपडेट करने की प्रक्रिया, यह एक अच्छा दृष्टिकोण की तरह लगता है तेजी लाने के लिए तरीके के मामले में कार्यप्रवाह के लिए कोई सुझाव। तालिका संरचना और डेटा दोनों के मामले में आप विभिन्न संशोधनों को अलग कर सकते हैं। अच्छा!

डंप बनाने का सबसे अच्छा तरीका शायद **mysqldump** है, क्योंकि इसे आसानी से स्वचालित किया जा सकता है - एक बार --no-data के साथ, विवरण प्राप्त करने के लिए, --no-create-info --no-create-db डेटा प्राप्त करने के लिए।

+1

'mytqldump' के लिए' --tab' विकल्प का उपयोग करने का एक वैकल्पिक दृष्टिकोण होगा। यह स्कीमा के लिए ' .sql' फ़ाइल बनाता है और डेटा के लिए एक टैब-सीमांकित ' .txt' फ़ाइल बनाता है। स्कीमा को सामान्य रूप से 'mysql' के माध्यम से पुनर्स्थापित किया जाता है, डेटा को 'mysqlimport' के माध्यम से बहाल किया जाता है। http://dev.mysql.com/doc/refman/5.1/en/mysqldump-delimited-text.html – rinogo

2

मैं माइक्रोसॉफ्ट स्रोत सुरक्षित और ओरेकल/एसक्यूएल सर्वर का उपयोग कर पर्यावरण में काम करता हूं।

हमने पाया कि प्रत्येक पैकेज/प्रक्रिया को धारण करना, एक अलग पाठ फ़ाइल में तालिका स्क्रिप्ट आदि बनाना, ऐसा करने का सबसे अच्छा तरीका था। इसका मतलब है कि पैकेज बनाए रखने पर, डेवलपर्स केवल 1 पैकेज आदि की जांच कर सकते हैं। एक बार परिवर्तन किए जाने और परीक्षण किए जाने के बाद, उन्हें चेक किया जा सकता है।

+2

brrr, स्रोत "सुरक्षित"। मैंने लगभग स्रोत कोड के संदर्भ में इसका उल्लेख करने के लिए लगभग मतदान किया :-) इसके अलावा, यह दृष्टिकोण मान्य है, हालांकि मेरी सिफारिश नहीं है। निश्चित रूप से gwiz के उत्तर में उल्लिखित लिंक पर नज़र डालें। – jeroenh

+0

हाँ। मैं स्रोत सुरक्षित की रक्षा नहीं करता। यह लगभग नौकरी करता है। हो सकता है कि मुझे इसे माइग्रेट करने के बारे में एक प्रश्न पूछना चाहिए (और सभी इतिहास) lol। यह एक परियोजना नहीं है जिसके लिए मैं स्वयंसेवक बनना चाहता हूं। – Nanook

3

यह प्रक्रिया है जिसका उपयोग मैं MySQL डेटाबेस को संस्करणित करने के लिए करता हूं सबवर्सन के तहत है।

सेटअप SVN

SVN में प्रत्येक डेटाबेस आप SVN को जोड़ना चाहते हैं के लिए एक उप-फ़ोल्डर के साथ एक Databases फ़ोल्डर बना। डेटाबेस

हम एक डेटाबेस के लिए एक मेज जोड़ने की आवश्यकता होगी करने के लिए

जोड़ें db_version तालिका इसलिए हम जानते हैं डेटाबेस का कौन सा संस्करण हम वर्तमान के साथ काम कर रहे हैं। डेटाबेस में स्कीमा परिवर्तन किए जाने के लिए यह तालिका लॉग के रूप में भी कार्य करेगी।

create table db_version (
     `id` int auto_increment, 
     `majorReleaseNumber` int, 
     `minorReleaseNumber` int, 
     `pointReleaseNumber` int, 
     `scriptName` varchar(50), 
     `dateApplied` datetime, 
     PRIMARY KEY(`id`) 
); 

majorReleaseNumber - प्रमुख विज्ञप्ति डेटाबेस के लिए महत्वपूर्ण परिवर्तन कर रहे हैं।

मामूली रिलीज नम्बर - मामूली रिलीज डेटाबेस में संवर्धन होते हैं जिन्हें एक बड़ी रिलीज की आवश्यकता नहीं होती है।

pointReleaseNumber - एक बिंदु रिलीज आमतौर पर एक साधारण बग फिक्स होता है।

स्क्रिप्टनाम - एससीएल स्क्रिप्ट का नाम जो स्कीमा में परिवर्तन करता है।

दिनांक लागू - जब इस डेटाबेस पर स्क्रिप्ट चलाया गया था।

बनाएं आधारभूत स्क्रिप्ट

मैं mysqldump इस्तेमाल किया मौजूदा डेटाबेस के लिए एक स्क्रिप्ट बनाने उत्पन्न करने के लिए। --no-data विकल्प को शामिल करना सुनिश्चित करें। एसवीएन का उपयोग उन स्क्रिप्ट का ट्रैक रखने के लिए किया जाता है जो डेटाबेस में स्कीमा परिवर्तन करते हैं और एप्लिकेशन के किसी विशेष उदाहरण के डेटा के लिए बैकअप टूल के रूप में उपयोग नहीं करना चाहते हैं।

$ mysqldump -h localhost -u root -p db_1 --no-data > db_1.1.0.0.sql 

एसक्यूएल स्क्रिप्ट के नाम डेटाबेस का नाम और डेटाबेस के संस्करण स्क्रिप्ट पर लागू होता है शामिल करना चाहिए।

db_1.1.0.0.sql

स्क्रिप्ट के अंत में db_version तालिका के लिए एक डालने के बयान को जोड़ने के लिए सुनिश्चित करें।

डेटाबेस स्कीमा

आप एक प्रमुख, मामूली, या बिंदु रिलीज डेटाबेस के लिए परिवर्तन है जब बदलने, परिवर्तन स्क्रिप्ट परीक्षण किया जाना चाहिए और उसके बाद SVN में डेटाबेस फ़ोल्डर में अपलोड। परिवर्तन स्क्रिप्ट लागू करने से पहले डेटाबेस बैकअप करना एक अच्छा विचार है। परिवर्तन स्क्रिप्ट के अंत में db_version तालिका के लिए एक सम्मिलन कथन होना चाहिए।

+0

घर्षण को कम करने के मामले में, मैं एक शेल स्क्रिप्ट विकसित करने पर विचार करता हूं जो एक विशेष डेटाबेस उदाहरण को अद्यतन करने के लिए आवश्यक स्क्रिप्ट को निर्धारित करने और चलाने की प्रक्रिया को स्वचालित कर सकता है। –

+0

@gWiz सुझाव के लिए धन्यवाद। मैं कुछ प्रकार की db_sync उपयोगिता बनाने की योजना बना रहा हूं। – Mark

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

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