PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL के लिए स्लोनी प्रतिकृति के लिए एक विशेषज्ञ की मार्गदर्शिका

स्लोनी क्या है?

Slony-I (यहाँ से केवल 'स्लोनी' के रूप में संदर्भित) PostgreSQL के लिए एक तृतीय-पक्ष प्रतिकृति प्रणाली है जो संस्करण 8.0 से पहले की है, जो इसे प्रतिकृति के लिए पुराने विकल्पों में से एक उपलब्ध कराती है। यह एक ट्रिगर-आधारित प्रतिकृति पद्धति के रूप में कार्य करता है जो 'एकाधिक दासों के लिए मास्टर' समाधान है।

Slony मास्टर और स्लेव दोनों पर दोहराने के लिए प्रत्येक टेबल पर ट्रिगर्स स्थापित करके संचालित होता है, और हर बार टेबल को INSERT, UPDATE, या DELETE मिलता है, यह लॉग करता है कि कौन सा रिकॉर्ड बदल जाता है, और परिवर्तन क्या है। बाहरी प्रक्रियाएं, जिन्हें 'स्लॉन डेमॉन' कहा जाता है, डेटाबेस से किसी अन्य क्लाइंट के रूप में कनेक्ट होती हैं और मास्टर से परिवर्तन प्राप्त करती हैं, फिर उन्हें मास्टर की सदस्यता वाले सभी दास नोड्स पर फिर से चलाती हैं। अच्छा प्रदर्शन करने वाले प्रतिकृति सेटअप में, यह एसिंक्रोनस प्रतिकृति मास्टर से कहीं भी 1 से 20 सेकंड पीछे रहने की उम्मीद की जा सकती है।

इस लेखन के समय, Slony का नवीनतम संस्करण 2.2.6 संस्करण पर है, और PostgreSQL 8.3 और इसके बाद के संस्करण का समर्थन करता है। मामूली अपडेट के साथ समर्थन आज भी जारी है, हालांकि अगर PostgreSQL का भविष्य का संस्करण लेन-देन, फ़ंक्शन, ट्रिगर या अन्य मुख्य विशेषताओं की मूलभूत कार्यक्षमता को बदल देता है, तो स्लोनी प्रोजेक्ट ऐसे कठोर नए दृष्टिकोणों का समर्थन करने के लिए बड़े अपडेट को बंद करने का निर्णय ले सकता है।

PostgreSQL का शुभंकर एक हाथी है जिसे 'स्लोनिक' के नाम से जाना जाता है, जो 'छोटे हाथी' के लिए रूसी है। चूंकि यह प्रतिकृति परियोजना कई पोस्टग्रेएसक्यूएल डेटाबेस के बारे में है जो एक दूसरे के साथ नकल कर रहे हैं, हाथियों के लिए रूसी शब्द (बहुवचन) का उपयोग किया जाता है:स्लोनी।

अवधारणाएं

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

इसका उपयोग कैसे किया जाता है

Slony या तो स्रोत द्वारा या PGDG (PostgreSQL Global Development Group) रिपॉजिटरी के माध्यम से स्थापित किया गया है जो Red Hat और डेबियन आधारित लिनक्स वितरण के लिए उपलब्ध हैं। इन बायनेरिज़ को उन सभी होस्ट पर स्थापित किया जाना चाहिए जिनमें प्रतिकृति सिस्टम में या तो मास्टर या स्लेव नोड होगा।

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

स्लोनी के साथ इंटरफेसिंग या तो कस्टम स्लोनिक कमांड लिखकर किया जा सकता है, या स्लोनी को --with-perltools ध्वज के साथ संकलित करके किया जा सकता है, जो 'altperl' स्क्रिप्ट प्रदान करता है जो इन आवश्यक स्लोनिक स्क्रिप्ट को उत्पन्न करने में मदद करता है।

स्लोनी प्रतिकृति क्लस्टर बनाना

एक 'प्रतिकृति क्लस्टर' डेटाबेस का एक संग्रह है जो प्रतिकृति का हिस्सा है। प्रतिकृति क्लस्टर बनाते समय, एक init स्क्रिप्ट लिखने की आवश्यकता होती है जो निम्नलिखित को परिभाषित करती है:

  • इच्छित स्लोनी क्लस्टर का नाम
  • प्रतिकृति के प्रत्येक नोड भाग के लिए कनेक्शन जानकारी, प्रत्येक एक अपरिवर्तनीय नोड संख्या के साथ।
  • 'प्रतिकृति सेट' के हिस्से के रूप में दोहराए जाने वाले सभी तालिकाओं और अनुक्रमों को सूचीबद्ध करना।

एक उदाहरण स्क्रिप्ट स्लोनी के आधिकारिक दस्तावेज़ीकरण में पाई जा सकती है।

निष्पादित होने पर, स्लोनिक परिभाषित सभी नोड्स से जुड़ जाएगा और प्रत्येक पर स्लोनी स्कीमा बनाएगा। जब स्लोनी डेमॉन को बंद कर दिया जाता है, तो वे दास पर प्रतिकृति तालिकाओं में सभी डेटा को साफ़ कर देंगे (यदि कोई है), और मास्टर से दास (एस) के सभी डेटा की प्रतिलिपि बनाएँ। उस समय से, डेमॉन लगातार मास्टर पर दर्ज किए गए परिवर्तनों को सभी सब्सक्राइब्ड स्लेव में दोहराएगा।

चतुर कॉन्फ़िगरेशन

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

कैस्केडिंग प्रतिकृति

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

स्लोनी के साथ कैस्केडिंग प्रतिकृति

एक स्लेव नोड पर डेटा प्रोसेसिंग

पोस्टग्रेएसक्यूएल की प्रतिकृति में निर्मित के विपरीत, दास नोड्स वास्तव में 'केवल पढ़ने के लिए' नहीं होते हैं, केवल जिन तालिकाओं को दोहराया जा रहा है उन्हें 'केवल पढ़ने के लिए' के ​​रूप में बंद कर दिया जाता है। इसका मतलब है कि एक गुलाम नोड पर, डेटा प्रोसेसिंग नई टेबल बनाकर हो सकती है जो हाउस प्रोसेस्ड डेटा की प्रतिकृति का हिस्सा नहीं है। प्रतिकृति के टेबल्स भाग में एक्सेस पैटर्न के आधार पर कस्टम इंडेक्स भी बनाए जा सकते हैं जो स्लेव और मास्टर से भिन्न हो सकते हैं।

स्लेव्स पर रीड ओनली टेबल में अभी भी डेटा परिवर्तन पर कस्टम ट्रिगर आधारित फ़ंक्शन निष्पादित हो सकते हैं, जिससे डेटा के साथ अधिक अनुकूलन की अनुमति मिलती है।

एक स्लोनी स्लेव नोड पर डेटा प्रोसेसिंग

न्यूनतम डाउनटाइम अपग्रेड

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

स्लोनी का उपयोग करके पोस्टग्रेएसक्यूएल को न्यूनतम डाउनटाइम के साथ अपग्रेड करें

बार-बार सर्वर रखरखाव के साथ उच्च उपलब्धता

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

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

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

एकाधिक डेटाबेस डेटा साझाकरण

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

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

विलंबित प्रतिकृति

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

जानने योग्य बातें:

  • किसी भी तालिका में डीडीएल परिवर्तन जो प्रतिकृति का हिस्सा हैं, उन्हें स्लोनिक एक्ज़िक्यूट कमांड का उपयोग करके निष्पादित किया जाना चाहिए।
  • प्रतिकृति की जाने वाली किसी भी तालिका में या तो प्राथमिक कुंजी होनी चाहिए, या अशक्त स्तंभों के बिना एक अद्वितीय अनुक्रमणिका होनी चाहिए।
  • डेटा जो मास्टर नोड से दोहराया गया है, किसी भी डेटा के कार्यात्मक रूप से उत्पन्न होने के बाद दोहराया जाता है। मतलब अगर 'रैंडम ()' जैसी किसी चीज़ का इस्तेमाल करके डेटा जनरेट किया गया था, तो परिणामी संख्या को 'रैंडम ()' के बजाय एक अलग परिणाम देने वाले दास पर फिर से चलाने के बजाय दासों पर संग्रहीत और दोहराया जाता है।
  • स्लोनी प्रतिकृति जोड़ने से सर्वर लोड थोड़ा बढ़ जाएगा। कुशलता से लिखे जाने पर, प्रत्येक तालिका में एक ट्रिगर होगा जो प्रत्येक INSERT, UPDATE, और DELETE को एक स्लोनी तालिका में लॉग करता है, डेटाबेस आकार और कार्यभार के आधार पर लगभग 2-10% सर्वर लोड वृद्धि की अपेक्षा करता है।

टिप्स और ट्रिक्स:

  • स्लोनी डेमॉन किसी भी होस्ट पर चल सकता है जिसकी अन्य सभी होस्ट तक पहुंच है, हालांकि उच्चतम प्रदर्शन करने वाला कॉन्फ़िगरेशन डेमॉन को उन नोड्स पर चलाना है जो वे प्रबंधित कर रहे हैं। उदाहरण के लिए, मास्टर नोड पर चलने वाला मास्टर डेमॉन, स्लेव नोड पर चलने वाला स्लेव डेमॉन।
  • यदि बहुत बड़ी मात्रा में डेटा के साथ एक प्रतिकृति क्लस्टर की स्थापना की जाती है, तो प्रारंभिक प्रतिलिपि में काफी लंबा समय लग सकता है, जिसका अर्थ है कि किकऑफ़ से कॉपी होने तक होने वाले सभी परिवर्तनों का मतलब पकड़ने और सिंक में होने के लिए और भी लंबा हो सकता है। . इसे या तो प्रतिकृति (बहुत समय लेने वाली) के लिए एक समय में कुछ तालिकाओं को जोड़कर हल किया जा सकता है, या दास को मास्टर डेटाबेस की डेटा निर्देशिका प्रतिलिपि बनाकर, फिर OMIT COPY विकल्प सेट के साथ एक 'सदस्यता सेट' करके हल किया जा सकता है सच। इस विकल्प के साथ, स्लोनी यह मान लेगा कि दास तालिका मास्टर के समान 100% है, और इसे साफ़ नहीं करती है और डेटा को कॉपी करती है।
  • इसके लिए सबसे अच्छा परिदृश्य PostgreSQL के लिए अंतर्निहित टूल का उपयोग करके एक हॉट स्टैंडबाय बनाना है, और एक रखरखाव विंडो के दौरान शून्य कनेक्शन के साथ डेटा संशोधित करना, स्टैंडबाय को एक मास्टर के रूप में ऑनलाइन लाना, दोनों के बीच डेटा मिलान को सत्यापित करना, आरंभ करना OMIT COPY =true के साथ स्लोनी प्रतिकृति क्लस्टर, और अंत में क्लाइंट कनेक्शन को फिर से सक्षम करें। हॉट स्टैंडबाय के लिए सेटअप करने में समय लग सकता है, लेकिन इस प्रक्रिया से ग्राहकों पर बहुत अधिक नकारात्मक प्रभाव नहीं पड़ेगा।

समुदाय और दस्तावेज़ीकरण

Slony के लिए समुदाय http://lists.slony.info/mailman/listinfo/slony1-general पर स्थित मेलिंग सूचियों में पाया जा सकता है, जिसमें संग्रह भी शामिल हैं।

दस्तावेज़ीकरण आधिकारिक वेबसाइट, http://slony.info/documentation/ पर उपलब्ध है, और लॉग विश्लेषण के साथ सहायता प्रदान करता है, और स्लोनी के साथ इंटरफेसिंग के लिए सिंटैक्स विनिर्देश प्रदान करता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में उच्च उपलब्धता का प्रबंधन - भाग III:Patroni

  2. PostgreSQL में गैर-अल्फ़ान्यूमेरिक वर्ण वाली पंक्तियों को वापस करने के 2 तरीके

  3. मैं पूरे दिन को डेटाटाइम फ़ील्ड से कैसे मेल करूं?

  4. PostgreSQL डेटाबेस में रिमोट एक्सेस की अनुमति कैसे दें

  5. PostgreSQL क्वेरी में बड़ी वस्तु का आकार प्राप्त करें?