SQL सर्वर डेटाबेस सिंक्रनाइज़ेशन


21

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

हमारे उपयोगकर्ताओं को एक डेटाबेस को क्वेरी करने की क्षमता की आवश्यकता होती है जो अधिकतर अद्यतित होती है। डेटा 24 घंटे तक बासी हो सकता है और यह स्वीकार्य है। उत्पादन प्रतिलिपि के साथ एक दूसरे डेटाबेस को प्राप्त करने और रखने के लिए न्यूनतम लागत दृष्टिकोण क्या होगा? वहाँ एक दृष्टिकोण मैं के बारे में नहीं सोच रहा हूँ?

काम का बोझ

हमारे पास एक तृतीय पक्ष एप्लिकेशन है जिसका उपयोग हम स्टॉक ट्रेडिंग गतिविधि की निगरानी के लिए करते हैं। दिन के दौरान, बहुत से छोटे परिवर्तन होते हैं जैसे कि विभिन्न कार्य प्रवाह का हिस्सा (हां, यह व्यापार वैध था। नहीं, यह संदिग्ध है, आदि)। रात में, हम बड़े सेट आधारित ऑपरेशन करते हैं (पिछले दिन के ट्रेडों को लोड करते हैं)।

वर्तमान समाधान और समस्या

हम डेटाबेस स्नैपशॉट का उपयोग करते हैं । रात 10 बजे हम ड्रॉपशॉट लेते हैं और स्नैपशॉट को फिर से बनाते हैं। ETL प्रसंस्करण तब शुरू होता है। यह स्पष्ट रूप से हमारी डिस्क पर कर लगा रहा है लेकिन हमारे उपयोगकर्ताओं को डेटाबेस को लॉक किए बिना डेटाबेस को क्वेरी करने की क्षमता देता है (वे एक एक्सेस फ्रंट एंड का उपयोग करते हैं)। वे इसे देर रात और सुबह का उपयोग करते हैं, इसलिए वे डाउनटाइम को नोटिस करेंगे।

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

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

क्लस्टरिंग

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

SQL सर्वर प्रतिकृति

हमने पिछले हफ्ते प्रतिकृति को देखना शुरू किया । हमारा सिद्धांत यह है कि हम एक दूसरी सूची प्राप्त कर सकते हैं और उत्पादन डेटाबेस के साथ सिंक्रनाइज़ किया जा सकता है। ETL की शुरुआत से पहले, हम कनेक्शन को बदल देंगे और ETL प्रक्रिया पूरी होने के बाद ही इसे फिर से सक्षम करेंगे।

इस व्यवस्थापन की शुरुआत स्नैपशॉट प्रतिकृति के साथ हुई थी, लेकिन उन्हें चिंता है कि स्नैपशॉट उत्पन्न करने के लिए और साथ ही डिस्क खपत के लिए कई दिनों के उच्च CPU उपयोग की आवश्यकता है। वह इंगित करता है कि यह सब डेटा को भौतिक फ़ाइलों को लिखने से पहले ग्राहक को कभी भी शिपिंग करने के लिए लिखता है, इसलिए हमारे .6 टीबी डेटाबेस में स्टोरेज लागत 1.8TB होगी। इसके अलावा, अगर स्नैप तैयार करने में कई दिन लगेंगे, तो यह वांछित SLA में फिट नहीं होगा।

ठीक लेख को पढ़ने के बाद, ऐसा लगता है कि स्नैपशॉट ग्राहकों को शुरू करने का तरीका हो सकता है लेकिन फिर हम इसे बाद में सिंक में रखने के लिए लेन-देन प्रतिकृति पर स्विच करना चाहते हैं । मैं मानता हूं कि लेन-देन की प्रतिकृति को चालू / बंद करना पूर्ण-पुनर्संरचना को मजबूर नहीं करेगा? अन्यथा, हम अपना समय खिड़की से उड़ा देंगे

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

हमारा डेटाबेस पूर्ण पुनर्प्राप्ति मोड में है, इसलिए डेटाबेस मिररिंग एक विकल्प है, लेकिन मैं इसके बारे में प्रतिकृति से भी कम जानता हूं। मुझे एसओ का जवाब मिला कि "डेटाबेस मिररिंग डेटा को सीधे एक्सेस करने से रोकता है, मिरर किए गए डेटा केवल डेटाबेस स्नैपशॉट के माध्यम से ही पहुंच योग्य हैं।"

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

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

एमएस सिंक

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

लघु उद्योगों

हम यहाँ बहुत सारे SSIS करते हैं इसलिए माध्यमिक सिंक्रनाइज़ रखने के लिए कुछ सौ SSIS पैकेज तैयार करना हमारे लिए एक विकल्प है, भले ही बदसूरत हो । मैं ऐसा करने का प्रशंसक नहीं हूं, क्योंकि मैं बहुत अधिक रखरखाव कर रहा हूं, बल्कि मैं चाहता हूं कि मेरी टीम आगे न बढ़े।

सैन "जादू" स्नैपशॉट

अतीत में, मैंने अपने एडमिन के बारे में सुना है कि कुछ SAN तकनीक का उपयोग करके संपूर्ण डिस्क का तत्काल बैकअप बनाया जाता है। शायद कुछ ईएमसी जादू है जिसका उपयोग mdf / ldf की uberquick प्रतियां बनाने के लिए किया जा सकता है और हम लक्ष्य डेटाबेस को अलग / संलग्न कर सकते हैं।

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

मुझे लगता है कि हम सप्ताह में एक बार पूर्ण बैकअप लेते हैं, रात में अंतर करते हैं और हर 15 मिनट में टॉगल करते हैं। यदि उपयोगकर्ता पूर्ण पुनर्स्थापना के लिए 3-4 घंटे के आउटेज के साथ रह सकते हैं, तो मुझे लगता है कि यह एक दृष्टिकोण हो सकता है।

प्रतिबन्ध

Windows 2008 R2, SQL Server 2008 R2 (एंटरप्राइज़ संस्करण), VMWare v5 एंटरप्राइज़ संस्करण, EMC SAN स्टोरेज विथ ड्राइव ड्राइव मैप्ड टू वीएमडीके फाइल्स, कॉम्प्लेक्ट हैंडलिंग बैकअप और सोर्स कैटलॉग में .6TB डेटा। यह एक तृतीय-पक्ष एप्लिकेशन है जिसे हम इन-हाउस होस्ट करते हैं। उनकी संरचना को संशोधित करना आम तौर पर पर आधारित है। उपयोगकर्ता डेटाबेस को क्वेरी किए बिना नहीं जा सकते हैं और अपने काम को करने के लिए निगरानी रखने वाले तालिकाओं की पहचान करने से विवश होने से इनकार करते हैं।

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

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

संबंधित सवाल

संपादित करता

@ Onpnt के सवालों के जवाब के लिए

डेटा विलंबता स्वीकृति

उपयोगकर्ता वर्तमान में 24 घंटे तक के डेटा को देखते हैं। डेटा केवल 2200 के रूप में वर्तमान है

किसी दिए गए मिनट, घंटे और दिन में डेटा परिवर्तन की मात्रा निश्चित नहीं है कि इसे कैसे निर्धारित किया जाए। व्यापार घंटे, शायद प्रति घंटे सैकड़ों परिवर्तन। रात्रिकालीन प्रसंस्करण, प्रति दिन लाखों पंक्तियाँ

माध्यमिक से कनेक्टिविटी

आंतरिक नेटवर्क, अलग आभासी मेजबान और समर्पित भंडारण

माध्यमिक उदाहरण पर आवश्यकताओं को पढ़ें

विंडोज़ समूह में माध्यमिक, सभी तालिकाओं तक पहुंच होगी

द्वितीयक उदाहरण का समय

अप-टाइम आवश्यकता की कोई मजबूत परिभाषा नहीं है। उपयोगकर्ता इसे हमेशा उपलब्ध चाहते हैं लेकिन क्या वे इसके लिए भुगतान करने को तैयार हैं, शायद इतना नहीं। वास्तविक रूप से, मैं कहूंगा कि दिन के 23 घंटे पर्याप्त होंगे।

मौजूदा स्कीमा और सभी वस्तुओं में परिवर्तन

तालिका के ऑब्जेक्ट्स के लिए शायद एक बार प्रति तिमाही संशोधन। कोड वस्तुओं के लिए प्रति माह एक बार हो सकता है।

सुरक्षा

कोई विशेष सुरक्षा की जरूरत नहीं है। उत्पादन अनुमतियाँ प्रतिलिपि की अनुमतियों से मेल खाएँगी। हालांकि जैसा कि मैं इसके बारे में सोचता हूं, हम उपयोगकर्ताओं को ठेस पहुंच के बारे में पढ़ सकते हैं और केवल उन्हें कॉपी पढ़ने की अनुमति दे सकते हैं ... हालांकि एक आवश्यकता नहीं है।

@darin स्ट्रेट

स्नैपशॉट पर वापस लौटना एक विकल्प हो सकता है लेकिन मुझे लगता है कि कुछ कारण थे जो उन्होंने इसे आगे नहीं बढ़ाया। मैं व्यवस्थापक से जाँच करूँगा

@cfradenburg

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

लपेटें

2012-10-29 हमने ईएमसी स्नैपशॉट जादू और कुछ अन्य प्रतिकृति विकल्पों का मूल्यांकन किया लेकिन डीबीए ने फैसला किया कि वे मिररिंग का सबसे अच्छा पता लगा सकते हैं। उत्तरों को उलझा दिया क्योंकि उन्होंने सभी की मदद की और मुझे बहुत सारे विकल्प दिए और साथ ही साथ "होमवर्क" की भी जाँच करने के लिए दिया।


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

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

जवाबों:


6

उनकी संरचना को संशोधित करना आम तौर पर पर आधारित है

प्रतिकृति संभावना से अधिक है और मैं इससे पहले सिंक बाहर फेंक दूंगा। (सिंक फ्रेमवर्क पर वास्तविक जीवन उच्च ट्रांससिटोनल परीक्षणों से)

यदि 3-4 घंटे आपका डेटा विलंबता अपवाद है, तो लॉग-शिपिंग संभवतया आपकी रीड-ओनली कॉपी पर आपके लिए सर्वश्रेष्ठ शर्त होगी। लेकिन लॉग में कितना बदलाव हो रहा है? यह पता लगाएं कि यह देखने के लिए कितनी जल्दी और आपको कितना जोर लगाना होगा।

यदि आप मिररिंग या 2012 एंटरप्राइज में अपग्रेड नहीं कर सकते हैं, तो यह बाहर है, हालांकि यह एक ध्वनि रणनीति होगी यदि आप एंटरप्राइज पर जा सकते हैं यदि यह उस पर नहीं है।

SSIS का मतलब सिर्फ डेटा को डंप करना नहीं है बल्कि यह कर सकता है। यद्यपि आप लुकअप ट्रांसफ़ॉर्मेशन के मामले में बहुत अधिक देख रहे हैं, हालांकि यह कार्य समय और संसाधनों में महंगा होगा। हालांकि, जैसा मैंने कहा, यह कर सकता है।

वास्तव में, कुछ सवालों के जवाब देने के आधार पर विकल्पों की एक अलग संकीर्णता होगी

  • डेटा विलंबता स्वीकृति
  • किसी दिए गए मिनट, घंटे और दिन में डेटा परिवर्तन की मात्रा माध्यमिक तक
  • माध्यमिक उदाहरण पर आवश्यकताओं को पढ़ें
  • द्वितीयक उदाहरण का समय
  • मौजूदा स्कीमा और सभी वस्तुओं में परिवर्तन
  • सुरक्षा

4

यह उन चीजों में से एक होने जा रहा है जिन्हें आपको अपने लिए प्रयास करने की आवश्यकता है कि सबसे अच्छा क्या है। प्रतिकृति मुश्किल हो सकती है, जबकि वहाँ एक सीधे मौद्रिक लागत नहीं हो सकता है वहाँ प्रशासनिक उपरि इसे बनाए रखना होगा।

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

यदि आप पहले से ही एंटरप्राइज़ नहीं चला रहे हैं, तो स्नैपशॉट का उपयोग करने में सक्षम होने के लिए एंटरप्राइज़ खरीदने के लिए आपको इसके लिए डेटाबेस मिररिंग का उपयोग करना होगा। यह डेटा को 100% तक अद्यतित नहीं रखेगा क्योंकि स्नैपशॉट को छोड़ने की आवश्यकता है (जिसका अर्थ है कि सभी उपयोगकर्ताओं को बाहर करने की आवश्यकता है) और फिर नया डेटा प्राप्त करने के लिए पुनः बनाया गया। हालाँकि, यह लॉग रीस्टोर या मेरे द्वारा बताए गए तरीके से कम समय होगा।

यदि SQL 2012 में अपग्रेड करना एक विकल्प है तो रीड-ओनली सेकंडरी सेट करना संभव है जिसे प्राथमिक डेटाबेस के साथ अद्यतित रखा जाएगा। मैं केवल इसका उल्लेख करता हूं क्योंकि यह सबसे आसान समाधान है।


4

जितना अधिक लोग लेन-देन की प्रतिकृति पर चीर देते हैं, यह आपकी स्थिति के लिए एक अच्छा फिट जैसा लगता है। नोटों की एक जोड़ी:

  1. आपको स्नैपशॉट के साथ ग्राहक को इनिशियलाइज़ करना नहीं है। आप प्रकाशक का बैकअप ले सकते हैं और उसके साथ आरंभ कर सकते हैं।
  2. आप वितरण कार्य को रोककर केवल सब्सक्राइबर को आदेशों की डिलीवरी रोक सकते हैं (यह वितरक या ग्राहक पर सिर्फ एक सामान्य एसक्यूएल एजेंट नौकरी है या नहीं, यह निर्भर करता है कि आपने इसे क्रमशः पुश या पुल सब्सक्रिप्शन के रूप में सेट किया है)। बस वितरक पर अपने प्रतिधारण का ध्यान रखें, जैसे कि आप अपने चारों ओर पर्याप्त इतिहास रख रहे हैं ताकि आप वापस पकड़ सकें।
  3. यदि आप चाहते हैं कि आपके प्रकाशक (वर्तमान में OLTP- प्रकार) से अनुक्रमण को स्वीकार करने के बजाय आप वहां काम करने वाले वर्कलोड को समायोजित करने के लिए अनुक्रमणिका को बदल सकते हैं (संभवतः रिपोर्टिंग-प्रकार)।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.