MySQL परिप्रेक्ष्य
अपने सभी MySQL डेटा InnoDB का उपयोग करना होगा। तो फिर तुम MySQL डाटा का एक स्नैपशॉट इस प्रकार बना सकता है:
MYSQLDUMP_OPTIONS="--single-transaction --routines --triggers"
mysqldump -u... -p... ${MYSQLDUMP_OPTIONS} --all-databases > MySQLData.sql
यह एक एकल लेनदेन के रूप में सभी MySQL डेटा की एक साफ बिंदु-इन-टाइम स्नैपशॉट पैदा करेगा।
उदाहरण के लिए, यदि आप मध्यरात्रि में यह mysqldump शुरू करते हैं, तो mysqldump आउटपुट में सभी डेटा मध्यरात्रि से होंगे। डेटा को अभी भी MySQL में जोड़ा जा सकता है (बशर्ते आपका सभी डेटा इनो डीबी स्टोरेज इंजन का उपयोग करता हो) और आप मोंडोडीबी को मध्यरात्रि के बाद MySQL में जोड़े गए किसी भी नए डेटा को संदर्भित कर सकते हैं, भले ही यह बैकअप के दौरान हो।
यदि आपके पास कोई MyISAM टेबल है, तो आपको उन्हें InnoDB में परिवर्तित करने की आवश्यकता है। चलो हम पीछा करते हैं। जब आप सभी उपयोगकर्ता परिभाषित MyISAM तालिकाओं रूपांतरण करने वाले
MYISAM_TO_INNODB_CONVERSION_SCRIPT=/root/ConvertMyISAMToInnoDB.sql
echo "SET SQL_LOG_BIN = 0;" > ${MYISAM_TO_INNODB_CONVERSION_SCRIPT}
mysql -u... -p... -AN -e"SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=InnoDB;') InnoDBConversionSQL FROM information_schema.tables WHERE engine='MyISAM' AND table_schema NOT IN ('information_schema','mysql','performance_schema') ORDER BY (data_length+index_length)" >> ${MYISAM_TO_INNODB_CONVERSION_SCRIPT}
बस इस स्क्रिप्ट को चलाने: यहाँ आप कैसे एक स्क्रिप्ट InnoDB के लिए अपने सभी MyISAM तालिकाओं कन्वर्ट करने के लिए बनाते हैं। किसी भी सिस्टम से संबंधित माईसाम टेबल को नजरअंदाज कर दिया जाता है और वैसे भी स्पर्श नहीं किया जाना चाहिए।
MongoDB परिप्रेक्ष्य
मैं बहुत कम जानते हैं के लिए मैं MongoDB के लिए बात नहीं कर सकते। फिर भी, मोंगोडीबी चीजों के पक्ष में, यदि आप किसी भी मोंगोडीबी डेटा के लिए एक प्रतिकृति सेट सेट करते हैं, तो आप केवल प्रतिकृति के खिलाफ मोंगोडम्प का उपयोग कर सकते हैं। चूंकि मोंगोडम्प पॉइंट-इन-टाइम नहीं है, इसलिए आपको प्रतिकृति को डिस्कनेक्ट करना होगा (आने वाले बदलावों को रोकने के लिए) और फिर प्रतिकृति पर मोंगोडम्प निष्पादित करना होगा। फिर प्रतिकृति को अपने गुरु को दोबारा स्थापित करें। अगर आपके डिस्कनेक्ट किए गए प्रतिकृति सेट के खिलाफ मोंगोडम्प का उपयोग किया जा सकता है तो अपने डेवलपर्स से या 10gen से पता लगाएं।
आम उद्देश्य
प्वाइंट-इन-समय वास्तव में आपके लिए महत्वपूर्ण हैं, तो सुनिश्चित करें कि सभी ओएस घड़ियों एक ही सिंक्रनाइज़ समय और समय क्षेत्र बनाता है। यदि आपको ऐसा सिंक्रनाइज़ेशन करना है, तो आपको mysqld और mongod को पुनरारंभ करना होगा। फिर, mysqldump और mongodump के लिए आपकी crontab नौकरियां एक ही समय में बंद हो जाएगा। व्यक्तिगत रूप से, मैं मोंडोडम्प में पोस्ट किए जाने वाले mysql से आईड्स को आश्वस्त करने के लिए लगभग 30 सेकंड में एक मोंगोडम्प में देरी करूँगा।
यदि आपके पास एक ही सर्वर पर MySQL और mongod चल रहा है, तो आपको किसी भी MongoDB प्रतिकृति की आवश्यकता नहीं है। 00:00:00 (मध्यरात्रि) और 00:30:00 (मध्यरात्रि के बाद 30 सेकंड) पर मोंगोडम्प पर बस एक mysqldump शुरू करें।
इसे शूट करने का अर्थ नहीं है क्योंकि मैं मोंगो के साथ सुपर अनुभवी नहीं हूं, और मुझे किसी से भी सुनना अच्छा लगेगा जिसने इसे आजमाया है और सफलता मिली है, लेकिन मेरा झटका यह है कि यदि आप हैं तो आप बहुत संघर्ष करेंगे इस तरह MongoDB डेटा पर तंग संबंधपरक अखंडता पकड़ने की कोशिश कर रहा है। यह विशेष रूप से पैमाने के लिए अखंडता बलिदान के व्यापार को बनाने के लिए डिज़ाइन किया गया है:/ –
आपने क्या किया? – Aerik