MySQL प्रतिकृति को न्यूनतम डाउनटाइम के साथ कैसे सेटअप करें


12

मूल रूप से हमारे पास एक बड़ा MySQL डेटाबेस है और हम एक गुलाम (मास्टर स्लेव सेटअप) की प्रतिकृति बनाना चाहते हैं। क्या आप लोगों के पास डेटाबेस पर मिनिमल डाउनटाइम के साथ यह करने के लिए कोई चरण-दर-चरण मार्गदर्शिका है? डेटाबेस का बैकअप लेना और बैकअप को दास सर्वर (यहां तक ​​कि एक निजी नेटवर्क के माध्यम से) में स्थानांतरित करना 40 मिनट या ऐसा ही लगता है। काफी लंबा समय।

जवाबों:


15

मुझे लगता है कि आप एक भंडारण इंजन के रूप में InnoDB का उपयोग करते हैं। यदि हां, तो आपको बिन-लॉगिंग चालू करना होगा । यदि यह अभी नहीं है, तो आपको my.cnf को संशोधित करने के बाद MySQL को पुनरारंभ करना होगा। यह एकमात्र डाउनटाइम है, जिसके बाद आप डेटाबेस को बिना ब्लॉक किए बिनॉगल स्थिति के साथ डंप ले सकते हैं:

mysqldump --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=2 -A

इस बैकअप के आधार पर, दास पर डेटा को पुनर्स्थापित करें। इसके बाद, आप किसी भी MySQL प्रतिकृति ट्यूटोरियल का अनुसरण कर सकते हैं और दास को मास्टर के साथ मिलकर पकड़ सकते हैं / चल सकते हैं।


क्या होगा यदि कुछ टेबल इनसोडब का उपयोग नहीं कर रहे हैं? और उपरोक्त बैकअप अभी भी मान्य होगा यदि मैं - डेटाबेस के एक उपसमूह को डंप करने के लिए डेटाबेस का उपयोग करता हूं?
मैथ्यू

अगर कुछ तालिकाओं का उपयोग न करें तो बैकअप असंगत हो सकता है। यहाँ देखें: stackoverflow.com/a/7461466/104398 ; बैकअप में उन स्किप किए गए डेटाबेस नहीं होंगे। यदि आप इस तरह के बैकअप के आधार पर प्रतिकृति स्थापित करते हैं और न तो फ़िल्टर किया जाता है जो कि दोहराया जाता है - जैसे ही छोड़े गए डेटाबेस पर कुछ ऑपरेशन होगा, वैसे ही आपकी प्रतिकृति टूट जाएगी।
pQd

ठीक है, मैंने अपनी शेष myisam तालिकाओं को निर्दोष में बदल दिया और यह सुनिश्चित कर लिया कि केवल वे ही डेटाबेस जिन्हें मैं चाहता हूं कि उन्हें दोहराया / बैकअप किया गया है।
मैथियू

3

प्रतिकृति शुरू करने के लिए आपको दास पर अपने डेटाबेस की एक सुसंगत प्रतिलिपि की आवश्यकता होती है

क्या आपकी टेबल मयसम या इनोडब समर्थित हैं? मुद्दे का पता लगाने के लिए

show table status

और 'इंजन' कॉलम देखें

अगर सभी टेबल मासूम हैं, तो आप mysqldump --single-transaction और गुलाम में आयात करके शून्य डाउनटाइम सेटअप कर सकते हैं

यदि तालिकाएँ मायसम हैं तो डाउनटाइम करना होगा क्योंकि आपको कॉपी करते समय लिखने के लिए तालिकाओं को लॉक करना होगा। mysqlhotcopy उस के साथ आपकी सहायता करने का उपकरण है।

वैकल्पिक रूप से, यदि आप LVM (लॉजिकल वॉल्यूम मैनेजर) का उपयोग कर रहे हैं, तो आप डेटाबेस को रोक सकते हैं, कुछ सेकंड में LVM स्नैपशॉट ले सकते हैं और db को फिर से शुरू कर सकते हैं। तब आप स्नैपशॉट से एक सुसंगत प्रतिलिपि बना सकते हैं।


1

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

क्या आप डिस्क को स्नैपशॉट दे सकते हैं? अगर आप हॉटबैक कर सकते हैं तो डाउनटाइम काफी कम हो जाएगा।

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