MS SQL Server 2008 में दूरस्थ MySQL डेटाबेस की पुनरावृत्ति


10

मैं एक MSSQL सर्वर 2008 डेटाबेस के लिए एक MySQL डेटाबेस की सामग्री को दोहराने के लिए चाहते हैं।

क्या यह संभव है? क्या कोई इसे प्राप्त करने के लिए आवश्यक कदमों की रूपरेखा तैयार कर सकता है?

धन्यवाद।

जवाबों:


9

व्यक्तिगत रूप से मैं एमएस SQL ​​विधि बनाम MySQL विधि से धक्का में खींच लेंगे। क्यों? खैर विंडोज में 32 बिट और 64 बिट्स MySQL ODBC ड्राइवर हैं जो एक लिंक किए गए सर्वर को जाने और स्थापित करने के लिए तैयार हैं। मेरे पास बहुत सारे MySQL सर्वर MS SQL से जुड़े हुए हैं। इसके अलावा, linux / unix से MS SQL से कनेक्ट करना हमेशा बहुत अच्छा नहीं होता है और आप ususally सभी सुविधाओं का उपयोग करने में सक्षम नहीं होते हैं। FreeTDS की सीमाएँ हैं; आप उन्हें जल्द से जल्द हिट कर सकते हैं इसलिए केवल इसे छोड़ें नहीं। यह सब मानता है कि आप MySQL को * nix पर चला रहे हैं। यदि नहीं, तो यह 50/50 के करीब हो जाता है, लेकिन मैं अभी भी एमएस एसक्यूएल से खींचना चुनूंगा क्योंकि ऐसा लगता है कि यह "लाइव" डेटाबेस नहीं है, इस प्रकार किसी ईटीएल या प्रसंस्करण के लिए इस पर लोड डालना अधिक आदर्श है। GoldenGate समाधान दिलचस्प लगता है, लेकिन मुझे यकीन है कि यह मुफ़्त नहीं है।

यह देखते हुए कि मैंने इस तरह के परिदृश्य को MySQL और Oracle डेटाबेस दोनों के साथ MS SQL को दोहराया है, मैं इसके लिए काम करने वाले कुछ सुझाव प्रदान करूंगा:

  1. यदि आप कर सकते हैं, तो यह निर्धारित करने के लिए अपनी पूरी कोशिश करें कि आप यह सुनिश्चित कर सकते हैं कि आप केवल डेल्टा बदलाव ला रहे हैं। मर्ज कमांड इसकी मदद कर सकते हैं। एक टेबल को काटकर फिर से यह सब फिर से अपने लॉग में डाला जाता है, नेटवर्क बैंडविड्थ का उपयोग करता है, और आमतौर पर समय बर्बाद करता है।
  2. यदि बहुत सारे डेटा से निपटने के लिए लेन-देन को तोड़ना सुनिश्चित करें ताकि बड़े पैमाने पर लॉग फ़ाइल की आवश्यकता न हो। जब आप एक ऐसे कदम पर पहुँच जाते हैं, जिसके बारे में आप जानते हैं कि आपको वापस रोल करने की आवश्यकता नहीं है, तो स्पष्ट आवागमन या चौकियों का उपयोग करें।
  3. यदि MSSQL db केवल रिपोर्टिंग के लिए होगा, तो ETL वहां काम करें ताकि MySQL सर्वर को प्रभावित न करें। चीजों को आसान बनाने के लिए एक स्टेजिंग डेटाबेस या स्कीमा + फाइलग्रुप का उपयोग करें।
  4. चरणों में आयात होने वाले डेटा को तोड़ें। इससे आयात को फिर से शुरू करना आसान हो जाता है, जहां यह विफल रहा और / या समस्या निवारण किया। एक या कुछ भी नहीं जल्दी से परेशान हो जाता है।
  5. जहाँ भी संभव हो, चर का उपयोग करें दूरस्थ db को क्वेरी योजनाओं और अनुक्रमणिका उपयोग के साथ। इस बात पर भी ध्यान दें कि आप होस्ट बॉक्स में किस तरह के लेन-देन अलगाव में हैं और "प्रतिकृति" प्रश्नों पर क्या प्रभाव पड़ेगा। यदि आप सिर्फ रिपोर्टिंग या सैंडबॉक्स उपयोग के लिए डेटा खींच रहे हैं तो आप लेखकों को लाइव db पर ब्लॉक नहीं करना चाहते।

आशा है कि सुझाव मदद!


4

यहां StackOverflow पर एक ही सवाल पूछा गया था: MySQL से MSSQL की प्रतिकृति

ऐसा लगता है कि कुछ वर्कअराउंड हैं, लेकिन बहुत आसान समाधान नहीं है।

मेरा मानना ​​है कि आपको निश्चित रूप से MySQL DB से MSSQL DB तक आवश्यक डेटा आयात करने के लिए SSIS पैकेज बनाने की कोशिश करनी चाहिए। SSIS विभिन्न स्रोतों से डेटा आयात करने की अनुमति देता है। फिर आपको विंडोज़ टास्क शेड्यूलर या एसक्यूएल नौकरियों का उपयोग करके पैकेज को शेड्यूल करने में सक्षम होना चाहिए।


3

यदि प्रतिकृति से आपका मतलब लॉग शिपिंग या ऐसा कुछ है जो मुझे विश्वास है कि आप भाग्य से बाहर हैं। हालाँकि आप निश्चित रूप से एक लिंक सर्वर के रूप में एक MySQL डेटाबेस सेट कर सकते हैं और अपनी प्रतिकृति योजना को रोल कर सकते हैं। सरलतम ट्रंक और स्टेटमेंट्स का उपयोग करके सभी तालिकाओं के आवधिक स्नैपशॉट करने के लिए है। अपनी आवश्यकताओं के अनुसार जटिलता जोड़ें।


मेरा मतलब है कि मैं एक अनुसूचित कार्य को चलाने के लिए और msqldb से sql सर्वर 2008 db पर सप्ताह में एक बार या तो सभी सामग्री की प्रतिलिपि बनाना चाहता हूं - क्या यह संभव है?
जिमी कॉलिन्स

1
हर समय सभी डेटा को रौंदने और खींचने वाले रिमाइबर इस बात पर निर्भर करते हुए बहुत धीमे हो सकते हैं कि कितना डेटा शामिल है, नेटवर्क विलंबता आदि, यह निश्चित रूप से जाने का तरीका नहीं है यदि आपके पास दो डेटाबेस के बीच छोटे या धीमे नेटवर्क लिंक हैं। मैं हमेशा एक तरीका विकसित करने की कोशिश करता हूं जिससे मुझे डेल्टास खींचने में मदद मिलेगी।
एंड्रयूज

1
मैं मानता हूं, डेल्टास जाने का रास्ता है। मुझे ट्रिगर और गंदे पंक्ति बिट्स से बात करने के लिए पर्याप्त MySQL नहीं पता है लेकिन मुझे यकीन है कि कुछ सेट किया जा सकता है। SQL सर्वर की ओर, कार्य शेड्यूल करना सीधे आगे है।
लैरी स्मिथमेयर

3

ऐसा करने के लिए आप MySQL और MS SQL के लिए GoldenGate का उपयोग कर सकते हैं । आप बस हर तरफ GoldenGate उत्पाद स्थापित करेंगे, फिर एक सजातीय प्रतिकृति के रूप में आगे बढ़ेंगे।

वैकल्पिक रूप से, एक "स्नैपशॉट" प्रतिकृति के लिए, आप केवल डेटा स्रोतों ( यूनिक्सकोड और एमएस SQL ​​से कनेक्ट करने के लिए फ्रीटीडीएस का उपयोग करके) के लिए एक पायथन (या समान) स्क्रिप्ट का उपयोग कर सकते हैं SELECT, एक पंक्ति में कर रहे तालिकाओं के माध्यम से लूप , प्रत्येक पंक्ति के लिए INSERTदूसरे पर। जैसा कि MSSQL में लेन-देन होता है और आपका लक्ष्य होता है, आप एक लेन-देन शुरू कर सकते हैं, DELETEसब कुछ सभी तालिकाओं से कर सकते हैं, कॉपी कर सकते हैं, COMMITऔर फिर यह तुरंत दिखाई देगा जहाँ तक लक्ष्य पर जुड़े उपयोगकर्ताओं का संबंध है, कोई असंगति नहीं होगी (जब तक कि ये मौजूद न हों पाठ्यक्रम के स्रोत पर)।


मुझे नहीं पता था कि यह कुछ ऐसा है जो आप गोल्डनडेट के साथ कर सकते हैं। मुझे इसके बारे में और पढ़ना होगा; साझा करने के लिए धन्यवाद!
एंड्रयूकाड

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