नेटवर्क पर कम डाउनटाइम के साथ एक विशाल SQL सर्वर डेटाबेस को स्थानांतरित करने का सबसे अच्छा तरीका है


22

समस्या की परिभाषा

हमारे डेटाबेस सर्वर को किसी अन्य डेटासेटर में स्थानांतरित करना होगा। यह Microsoft SQL Server 2012 एंटरप्राइज़ (64-बिट) पर चलता है और इसमें लगभग 2TB और 1TB के दो डेटाबेस शामिल हैं।

इसके लिए कोई डाउनटाइम कम होना आदर्श होगा।

काम का बोझ

वे डेटाबेस .NET वेबसाइट के लिए उपयोग किए जाते हैं और लगातार अपडेट हो रहे हैं।

सप्ताहांत में उपलब्ध नहीं होने के बावजूद यह स्वीकार्य होगा। वर्तमान में उपयोग में आने वाला डीबी तब तक उपयोग में रहेगा जब तक कि नया स्विच ऑन नहीं हो जाता।

यह स्विच आदर्श रूप से केवल डीबी अद्यतन नहीं किया जा रहा है, जबकि यह सुनिश्चित करते हुए नए DB सर्वर को इंगित करने के लिए DNS प्रविष्टियों को बदलकर बनाया जाएगा।

साथ ही, इस ऑपरेशन द्वारा लिया गया समय वास्तव में तब तक मायने नहीं रखता है जब तक कि एक सर्वर से दूसरे (डाउनटाइम) पर स्विच कम रखा जाता है।

दृष्टिकोण पर विचार किया

  • बैकअप और पुनर्स्थापना

    यह अतीत में किया गया है, लेकिन एक उच्च डाउनटाइम शामिल है भले ही यह एक आंतरिक नेटवर्क के माध्यम से किया गया था, इसलिए इंटरनेट के माध्यम से अधिक कुशलता से

  • शिपिंग लॉग करें

    जहां तक ​​मैं समझता हूं, यह दृष्टिकोण मास्टर / गुलाम को कॉन्फ़िगर करके और मास्टर डीबी की सटीक कॉपी को उसके गुलाम को केवल पढ़ने के लिए डाउनटाइम को कम करेगा। जैसा कि ऊपर उल्लेख किया गया है, गुलाम तक कोई भी पहुंच आवश्यक नहीं होगी और हमें बिना डेटा भ्रष्टाचार के मास्टर डीबी की प्रतिकृति की आवश्यकता होगी।

    यह संसाधनों के उपयोग के मामले में भी काफी कुशल प्रतीत होता है और यह मास्टर प्रदर्शन पर बहुत अधिक प्रभाव नहीं डालता है।

    मैं इस दृष्टिकोण के बारे में गलत हो सकता हूं इसलिए मुझे सही करने के लिए स्वतंत्र महसूस करें।

  • डेटाबेस मिररिंग

    मुझे उस दृष्टिकोण के बारे में पता नहीं है लेकिन यह एक वैध विकल्प की तरह लगता है। वास्तविक समय सिंक करने की आवश्यकता नहीं है और मास्टर का प्रदर्शन काफी महत्वपूर्ण है इसलिए अतुल्यकालिक इस तरह से जाना होगा यदि यह दृष्टिकोण चुना जाना था।

  • अन्य विकल्प?

    यह सर्वर सीधे नंगे धातु के हार्डवेयर पर चलता है इसलिए निचले स्तर के समाधान दुर्भाग्य से एक विकल्प नहीं हैं। हो सकता है कि इसे पूरा करने का कोई बेहतर तरीका हो?

प्रतिबन्ध

जैसा कि वर्णित है, वे डेटाबेस उस बिंदु पर काफी बड़े हैं जिन्हें बनाए रखना मुश्किल है लेकिन यह एक अन्य समस्या है।

SQL सर्वर के संस्करण समान होंगे (Microsoft SQL Server 2012 एंटरप्राइज़ 64-बिट)।

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

इस कार्य के लिए हमारी आवश्यकताओं का काफी अच्छा अवलोकन करना चाहिए और उम्मीद है कि आप में से कुछ को इससे पहले उस स्थिति का सामना करना पड़ेगा।

जवाबों:


20

सीधे बैकअप और पुनर्स्थापना जाहिर है। मैं किसी भी तरह की प्रतिकृति पर विचार नहीं करेगा।

डेटाबेस मिररिंग सेट अप करने के लिए अपेक्षाकृत सरल है, लेकिन इसके लिए दो सर्वरों के बीच वास्तविक समय की कनेक्टिविटी, भागीदारों और समापन बिंदुओं की स्थापना आदि की आवश्यकता होती है। उपलब्धता समूह एक विकल्प हो सकता है, लेकिन नेटवर्किंग जटिलताओं के शीर्ष पर आपके पास दोनों सर्वर भी होने चाहिए। एक ही डब्ल्यूएसएफसी के सदस्य के रूप में - जिसका अर्थ है कि वे दोनों एक ही डोमेन में होने चाहिए। यह एक विशिष्ट सेटअप नहीं है (या अस्थायी रूप से काम करने के लिए भी बनाया जा सकता है) डेटा सेंटर की चाल के लिए।

मेरा वोट लॉग शिपिंग के लिए होगा। इसके बारे में अच्छी बात यह है कि आप बैकअप का उपयोग कर सकते हैं और बैकअप ले सकते हैं जो आप पहले से ही ले रहे हैं (सही?) और जरूरी नहीं कि दो डेटाबेस के बीच वास्तविक समय की कनेक्टिविटी हो - उन्हें प्रत्येक के बारे में जानने की आवश्यकता नहीं है अन्य, आपको मिररिंग, पार्टनर, सुरक्षा, आदि के लिए एंडपॉइंट्स सेट करने की आवश्यकता नहीं है। आपको पुराने सर्वर से फाइलों को प्राप्त करने के लिए एक जगह की जरूरत है, जहां उन्हें नए सर्वर पर बहाल किया जा सकता है। आप पहले से पूरी तरह से बैकअप ले सकते हैं, इसे नए सर्वर पर प्राप्त कर सकते हैं, इसे पुनर्स्थापित कर सकते हैं, फिर कट-ओवर के क्षण तक उस बिंदु से वृद्धिशील लॉग बैकअप लागू कर सकते हैं। प्रक्रिया वास्तव में काफी सरल है, और यदि आप किसी भी कठिनाइयों में आते हैं तो लॉग शिपिंग पर ऑनलाइन कई ट्यूटोरियल उपलब्ध हैं।

यदि वेब ऐप डेटाबेस के साथ घूम रहा है, क्योंकि DNS को प्रचारित करने में कुछ समय लग सकता है, तो आप पुराने डेटाबेस के कनेक्शन स्ट्रिंग्स में एक स्विच बनाना चाहते हैं, ताकि वे नए डेटाबेस सर्वर के IP पर इंगित कर सकें, जब यह राइट हो जाए , चूंकि - स्विच के बाद भी, और यहां तक ​​कि अगर आपकी टीटीएल सेटिंग्स तंग हैं - क्लाइंट पुराने वेब सर्वर को हिट करना जारी रख सकते हैं। यह सब इस बात पर निर्भर करता है कि आपके प्रदाता आपके टीटीएल को कितना सम्मान देते हैं।


16

मैंने हाल ही में मिररिंग का उपयोग करके 6 डेटाबेस में 15tb माइग्रेट किया है। बहुत ही सरल और पूरी तरह से फेलओवर समय के कुछ सेकंड के साथ काम किया।

संपादन:

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

प्रक्रिया बहुत सरल थी।

  1. सप्ताहांत पूर्ण बैकअप के लिए प्रतीक्षा करें
  2. नए सर्वर के लिए कोई पुनर्प्राप्ति के साथ पुनर्स्थापित करें
  3. जब वे पूरी हो जाती हैं, तो बैकअप रोक दें
  4. कोई रिकवरी न होने पर, मूल से नवीनतम लॉग बैकअप तक एक अतिरिक्त पुनर्स्थापना चलाएँ
  5. सभी छह में मिररिंग शुरू करें
  6. बैकअप फिर से शुरू करें

मैंने उन्हें अतुल्यकालिक मोड में छोड़ने के लिए चुना, जब तक कि हम नेटवर्क पर लोड को कम करने के लिए उन्हें विफल करने के लिए तैयार नहीं थे, आदि। मिररिंग में रखरखाव (सूचकांक / आँकड़े) और अन्य उच्च मात्रा गतिविधियों के दौरान विलंबता पैदा करने के लिए कुछ प्रतिष्ठा है, लेकिन मैंने नहीं किया जो सत्य है, उसे पाओ। मैनुअल फेलओवर से पहले उन्हें सिंक्रोनस मोड पर स्विच करना होगा।

अगली रखरखाव विंडो के दौरान, मैं मैन्युअल रूप से प्रत्येक डेटाबेस पर विफल रहा, और कुछ धुआं परीक्षण के बाद, मिररिंग बंद कर दिया, और अंततः पुराने डेटा फ़ाइलों को मूल सर्वर से हटा दिया। इस प्रक्रिया में एक विचित्र बात यह है कि एक प्रतिबिंबित डेटाबेस को विफल करने पर पूर्व प्राथमिक को ठीक होने की स्थिति में छोड़ दिया जाता है, इसलिए जब तक आप उन्हें छोड़ने में सहज नहीं होते, आपको उन्हें ऑनलाइन वापस लाने और फिर अलग करने की आवश्यकता होती है, या हटाने की आपकी पसंदीदा विधि जो भी हो । इसके अलावा, मैंने इसमें से किसी के लिए एक गवाह को कॉन्फ़िगर नहीं किया, क्योंकि मैं स्वचालित विफलता नहीं चाहता था। यह एक नियंत्रित घटना थी।

कृपया मुझे बताएं कि क्या आप कोई और विवरण चाहते हैं। मैंने सर्वर और नेटवर्क चश्मा छोड़ दिया है, लेकिन यदि आप चाहें तो प्रदान कर सकते हैं।

धन्यवाद

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