आपके डेटाबेस में संग्रहीत जानकारी को दोहराना डेटा वितरित करने और यह सुनिश्चित करने के लिए आवश्यक है कि आपके पास एक बैकअप है जिसका उपयोग आपदा वसूली के लिए किया जा सकता है, अगर कुछ गलत हो जाता है।
PostgreSQL प्रतिकृति दो रूपों में आती है, और दोनों के अपने विशिष्ट उपयोग हैं। इन डेटा प्रतिकृति विधियों में से एक या दोनों को लागू करने का तरीका समझना आपकी डेटा वितरण प्रक्रियाओं को सुव्यवस्थित कर सकता है। आखिरी चीज जो आप चाहते हैं वह यह है कि आपने डेटाबेस पर किए गए महत्वपूर्ण काम को खो दिया है।
आइए PostgreSQL में स्ट्रीमिंग प्रतिकृति और तार्किक के पेशेवरों, विपक्षों और उपयोग के मामलों पर एक नज़र डालें।
PostgreSQL में डेटा प्रतिकृति को परिभाषित करना
यदि आप पहले से ही परिचित हैं कि डेटा प्रतिकृति क्या है, तो आप आगे बढ़ सकते हैं और अगले भाग तक नीचे स्क्रॉल कर सकते हैं। लेकिन अगर आप डेटाबेस इंजीनियरिंग में नए हैं, तो हम वास्तव में जल्दी से नींव रखना चाहते हैं।
जैसा कि नाम से पता चलता है, प्रतिकृति एक कंप्यूटर सर्वर में एक डेटाबेस से डेटा को एक अलग सर्वर में दूसरे डेटाबेस में बार-बार कॉपी करने की प्रक्रिया है, इसलिए सभी उपयोगकर्ताओं की समान स्तर की जानकारी तक पहुंच होती है। कंप्यूटिंग में, डिजिटल सिस्टम में दोषों को खत्म करने के लिए प्रतिकृति का उपयोग किया जाता है।
प्रतिकृति डेटा साइलो को समाप्त करती है, मूल्यवान जानकारी की सुरक्षा करती है, और विकास को सुव्यवस्थित करती है।
PostgreSQL में, प्रतिकृति के लिए दो विकल्प हैं:तार्किक और स्ट्रीमिंग प्रतिकृति। ये तरीके अलग-अलग उपयोग के मामलों के लिए बहुत अच्छे हैं, और एक डेवलपर के रूप में, आप खुद को एक के ऊपर एक का उपयोग करने के लिए अधिक इच्छुक पा सकते हैं। लेकिन यह समझना अच्छा है कि दोनों का उपयोग कैसे करें ताकि आप यह तय कर सकें कि विभिन्न परिदृश्यों में किसे लागू करना है।
PostgreSQL में तार्किक प्रतिकृति
पोस्टग्रेएसक्यूएल v10.0 के साथ उपयोग के लिए स्ट्रीमिंग प्रतिकृति शुरू की गई थी। तार्किक प्रतिकृति डेटा वस्तुओं की प्रतिलिपि/प्रतिकृति और उनकी प्रतिकृति पहचान के आधार पर उनके परिवर्तनों द्वारा काम करती है।
कई मामलों में, डेटा की पहचान एक प्राथमिक कुंजी है। PostgreSQL में, यह उपयोगकर्ताओं को दोहराए गए डेटा और सूचना सुरक्षा पर बढ़िया नियंत्रण देता है।
तार्किक शब्द का उपयोग इसे भौतिक प्रतिकृति से अलग करने के लिए किया जाता है, जो बाइट-बाय-बाइट प्रतिकृति और सटीक ब्लॉक पते का उपयोग करता है। आधिकारिक पोस्टग्रेएसक्यूएल दस्तावेज़ीकरण में यहाँ और पढ़ें।
एक प्रकाशित और सदस्यता मॉडल के माध्यम से, यह एक या एक से अधिक ग्राहकों को प्रकाशक नोड पर एक या अधिक प्रकाशनों की सदस्यता के लिए सक्षम करके काम करता है। ग्राहक प्रकाशनों से जानकारी प्राप्त कर सकते हैं और कैस्केडिंग प्रतिकृति या अधिक जटिल कॉन्फ़िगरेशन के लिए डेटा को फिर से प्रकाशित कर सकते हैं।
तार्किक डेटा प्रतिकृति लेनदेन संबंधी प्रतिकृति का रूप भी ले सकती है। यदि इंजीनियर किसी तालिका की प्रतिलिपि बनाना चाहता है, तो वे इस प्रतिकृति पद्धति का उपयोग प्रकाशक की ओर से डेटा का स्नैपशॉट लेने और ग्राहक के डेटाबेस में भेजने के लिए कर सकते हैं।
जैसे ही ग्राहक मूल डेटा में परिवर्तन करते हैं, प्रकाशक डेटाबेस को रीयल-टाइम में अपडेट प्राप्त होते हैं। एकल सदस्यता के साथ प्रकाशनों में लेन-देन की निरंतरता सुनिश्चित करने के लिए, ग्राहक को प्रकाशक के रूप में उसी क्रम में डेटा लागू करना होगा।
PostgreSQL में तार्किक प्रतिकृति के लाभ
तार्किक प्रतिकृति उपयोगकर्ताओं को लिखने के लिए एक गंतव्य सर्वर को नियोजित करने में सक्षम बनाती है और डेवलपर्स को विभिन्न अनुक्रमणिका और सुरक्षा परिभाषाएं रखने की अनुमति देती है। यह प्रकाशकों और ग्राहकों के बीच डेटा के हस्तांतरण के लिए बेहतर लचीलापन प्रदान करता है।
क्रॉस-वर्जन समर्थन
इसके अतिरिक्त, यह क्रॉस-वर्जन समर्थन के साथ आता है और इसे PostgreSQL के विभिन्न संस्करणों के बीच सेट किया जा सकता है। यह ईवेंट-आधारित फ़िल्टरिंग भी प्रदान करता है। प्रकाशनों में कई सदस्यताएँ हो सकती हैं, जिससे व्यापक नेटवर्क पर डेटा साझा करना आसान हो जाता है।
न्यूनतम सर्वर लोड
ट्रिगर-आधारित समाधानों की तुलना में, छोटे सेटों की प्रतिकृति के माध्यम से भंडारण लचीलापन प्रदान करते हुए इसमें न्यूनतम सर्वर लोड होता है। जैसा कि ऊपर उल्लेख किया गया है, तार्किक डेटा प्रतिकृति मूल विभाजित तालिकाओं में निहित डेटा की प्रतिलिपि भी बना सकती है।
यह उल्लेख करना भी आवश्यक है कि तार्किक डेटा प्रतिकृति डेटा परिवर्तन को तब भी सक्षम बनाता है जब इसे सेट किया जा रहा हो और प्रकाशकों में समानांतर स्ट्रीमिंग की अनुमति देता है।
PostgreSQL में तार्किक प्रतिकृति के नुकसान
तार्किक प्रतिकृति अनुक्रमों, बड़ी वस्तुओं, भौतिक विचारों, विभाजन मूल तालिकाओं और विदेशी तालिकाओं की प्रतिलिपि नहीं बनाएगी।
PostgreSQL में, तार्किक डेटा प्रतिकृति केवल DML संचालन द्वारा समर्थित है। डेवलपर्स डीडीएल या ट्रंकेट का उपयोग नहीं कर सकते हैं, और स्कीमा को पहले से परिभाषित किया जाना है। इसके अतिरिक्त, यह पारस्परिक (द्वि-दिशात्मक) प्रतिकृति का समर्थन नहीं करता है।
यदि उपयोगकर्ता तालिका में प्रतिकृति डेटा पर बाधाओं के साथ संघर्ष करते हैं, तो प्रतिकृति बंद हो जाएगी। प्रतिकृति को फिर से शुरू करने का एकमात्र तरीका यह है कि यदि विरोध का कारण हल हो गया है।
एक अनजाने में हुआ संघर्ष आपकी टीम की गति को रोक सकता है, इसलिए आपको यह समझना होगा कि किसी भी मुद्दे को तेजी से कैसे हल किया जाए।
यदि विरोध पर शीघ्र ध्यान नहीं दिया गया, तो प्रतिकृति स्लॉट अपनी वर्तमान स्थिति में स्थिर हो जाएगा, प्रकाशक नोड राइट-अहेड लॉग्स (WALs) जमा करना शुरू कर देगा, और नोड अंततः डिस्क स्थान से बाहर चला जाएगा।
PostgreSQL में तार्किक प्रतिकृति के लिए मामलों का उपयोग करें
कई इंजीनियर इसके लिए तार्किक प्रतिकृति का उपयोग करेंगे:
- एकल डेटाबेस या डेटाबेस सबसेट में परिवर्तन वास्तविक समय में ग्राहकों को वितरित करना
- एक से अधिक डेटाबेस को एक केंद्रीय डेटाबेस में मर्ज करना (अक्सर विश्लेषण के उपयोग के लिए)
- PostgreSQL के विभिन्न संस्करणों में प्रतिकृति बनाना
- PostgreSQL इंस्टेंसेस के बीच विभिन्न प्लेटफॉर्म, जैसे Linux से Windows में प्रतिकृतियां तैनात करना
- प्रतिरूपित डेटा को अन्य उपयोगकर्ताओं या समूहों के साथ साझा करना
- एक से अधिक डेटाबेस के बीच एक डेटाबेस सबसेट वितरित करना
पोस्टग्रेएसक्यूएल में स्ट्रीमिंग प्रतिकृति
पोस्टग्रेएसक्यूएल 9.0 के साथ उपयोग के लिए स्ट्रीमिंग प्रतिकृति शुरू की गई थी। प्रक्रिया एक मास्टर या प्राथमिक डेटाबेस सर्वर से एक प्रतिकृति या प्राप्त करने वाले डेटाबेस में राइट-अहेड लॉगिंग (WAL) फाइलें भेजती है और लागू करती है। WALs का उपयोग प्रतिकृति के लिए और डेटा अखंडता सुनिश्चित करने के लिए किया जाता है।
स्ट्रीमिंग प्रतिकृति कैसे काम करती है
स्ट्रीमिंग प्रतिकृति फ़ाइल-आधारित लॉग शिपिंग में निहित डेटा स्थानांतरण के बीच की खाई को पाटने का काम करती है, जो तब तक प्रतीक्षा करती है जब तक कि WAL डेटा शिप करने की अधिकतम क्षमता तक नहीं पहुंच जाता।
WAL रिकॉर्ड्स को स्ट्रीम करके, डेटाबेस सर्वर डेटा को सिंक करने के लिए WAL रिकॉर्ड्स को टुकड़ों में स्ट्रीम करते हैं। स्टैंडबाय सर्वर प्रतिकृति से जुड़ता है और जैसे ही उन्हें भेजा जाता है, वे WAL भाग प्राप्त करते हैं।
स्ट्रीमिंग प्रतिकृति के साथ, उपयोगकर्ता को यह तय करना होगा कि एसिंक्रोनस या सिंक्रोनस प्रतिकृति सेट करना है या नहीं। जब स्ट्रीमिंग प्रतिकृति को प्रारंभ में परिनियोजित किया जाता है, तो यह अतुल्यकालिक प्रतिकृति के लिए डिफ़ॉल्ट होगी।
यह इंगित करता है कि प्राथमिक पर प्रारंभिक परिवर्तन और प्रतिकृति पर उस परिवर्तन के प्रतिबिंब के बीच विलंब है। यदि परिवर्तन की प्रतिलिपि बनाने से पहले मास्टर क्रैश हो जाता है या यदि प्रतिकृति मूल के साथ सिंक से इतनी बाहर हो जाती है कि उसने परिवर्तन करने के लिए प्रासंगिक डेटा को पहले ही छोड़ दिया है, तो एसिंक्रोनाइज़ेशन संभावित डेटा हानि के लिए द्वार खोलता है।
सिंक्रोनस प्रतिकृति एक अधिक सुरक्षित विकल्प है क्योंकि यह वास्तविक समय में परिवर्तन करता है। मास्टर से प्रतिकृति में स्थानांतरण तब तक अधूरा माना जाता है जब तक कि दोनों सर्वर जानकारी को सत्यापित नहीं करते। एक बार डेटा परिवर्तन की पुष्टि हो जाने के बाद, स्थानांतरण दोनों सर्वरों के WAL पर रिकॉर्ड किया जाता है।
चाहे आप एसिंक्रोनस या सिंक्रोनस प्रतिकृति का उपयोग करें, प्रतिकृतियां नेटवर्क कनेक्शन के माध्यम से मास्टर से जुड़ी होनी चाहिए। इसके अतिरिक्त, उपयोगकर्ताओं के लिए प्रतिकृति की वाल स्ट्रीम के लिए एक्सेस विशेषाधिकार सेट करना आवश्यक है, ताकि जानकारी से समझौता न हो।
PostgreSQL में स्ट्रीमिंग प्रतिकृति के लाभ
स्ट्रीमिंग प्रतिकृति का उपयोग करने के सबसे महत्वपूर्ण लाभों में से एक यह है कि डेटा खोने का एकमात्र तरीका यह है कि यदि प्राथमिक और प्राप्त करने वाले दोनों सर्वर एक ही समय में क्रैश हो जाते हैं। यदि आप महत्वपूर्ण जानकारी दे रहे हैं, तो स्ट्रीमिंग प्रतिकृति सभी लेकिन गारंटी है कि आपके काम की एक प्रति सहेजी जाएगी।
उपयोगकर्ता एक से अधिक स्टैंडबाय सर्वर को प्राथमिक से कनेक्ट कर सकते हैं, और लॉग को प्राथमिक से प्रत्येक कनेक्टेड स्टैंडबाय में स्ट्रीम किया जाएगा। यदि प्रतिकृतियों में से एक में देरी हो जाती है या डिस्कनेक्ट हो जाता है, तो अन्य प्रतिकृतियों के लिए स्ट्रीमिंग जारी रहेगी।
स्ट्रीमिंग प्रतिकृति के माध्यम से लॉग-शिपिंग सेट करना उपयोगकर्ता द्वारा प्राथमिक डेटाबेस पर वर्तमान में चल रही किसी भी चीज़ में हस्तक्षेप नहीं करेगा। यदि प्राथमिक डेटा सर्वर को बंद करना पड़ता है, तो यह तब तक प्रतीक्षा करेगा जब तक कि अद्यतन रिकॉर्ड बिजली बंद होने से पहले प्रतिकृति को नहीं भेजे जाते।
PostgreSQL में स्ट्रीमिंग प्रतिकृति के नुकसान
स्ट्रीमिंग प्रतिकृति जानकारी को किसी भिन्न संस्करण या आर्किटेक्चर में कॉपी नहीं करेगी, स्टैंडबाय सर्वर की जानकारी को बदलेगी, और बारीक प्रतिकृति की पेशकश नहीं करेगी।
विशेष रूप से एसिंक्रोनस स्ट्रीमिंग डेटा प्रतिकृति के साथ, पुरानी WAL फाइलें जिन्हें अभी तक प्रतिकृति में कॉपी नहीं किया गया है, उन्हें पुनर्नवीनीकरण किया जा सकता है जब उपयोगकर्ता मास्टर में परिवर्तन करता है। यह सुनिश्चित करने के लिए कि महत्वपूर्ण फ़ाइलें गुम न हों, उपयोगकर्ता wal_keep_segments को उच्च मान पर सेट कर सकता है।
प्रतिकृति सर्वर के लिए उपयोगकर्ता प्रमाणीकरण क्रेडेंशियल सेट किए बिना, संवेदनशील डेटा को निकालना आसान हो सकता है। मास्टर और प्रतिकृति के बीच होने वाले रीयल-टाइम अपडेट के लिए, उपयोगकर्ता को प्रतिकृति विधि को डिफ़ॉल्ट एसिंक्रोनस प्रतिकृति से सिंक्रोनस प्रतिकृति में बदलना होगा।
पोस्टग्रेएसक्यूएल में स्ट्रीमिंग प्रतिकृति के लिए मामलों का उपयोग करें
कई इंजीनियर इसके लिए स्ट्रीमिंग प्रतिकृति का उपयोग करेंगे:
- सर्वर की विफलता या डेटा हानि के मामले में उनके प्राथमिक डेटाबेस के लिए बैकअप बनाना
- जितना संभव हो उतना कम प्रतिकृति विलंब के साथ उच्च-उपलब्धता समाधान को बढ़ावा देना
- प्राथमिक प्रणाली पर कुछ तनाव को दूर करने के लिए बड़े प्रश्नों का निर्वहन
- कई मशीनों में डेटाबेस वर्कलोड वितरित करना, विशेष रूप से केवल-पढ़ने के लिए प्रारूपों के लिए
भविष्य के लिए स्टोर में क्या है?
PostgreSQL ग्लोबल डेवलपमेंट ग्रुप ने 30 सितंबर, 2021 को PostgreSQL 14 को रिलीज़ करने की घोषणा की। नया संस्करण प्लेटफ़ॉर्म के माध्यम से स्ट्रीमिंग और तार्किक प्रतिकृति दोनों में अपग्रेड के साथ आया।
स्ट्रीमिंग प्रतिकृति के लिए, संस्करण 14 उपयोगकर्ताओं को सक्षम बनाता है:
- सर्वर पैरामीटर सेट करें
log_recovery_conflict_waits
लंबे पुनर्प्राप्ति संघर्ष की रिपोर्ट करने के लिए स्वचालित रूप से प्रतीक्षा समय - प्राथमिक सर्वर पर पैरामीटर बदलते समय हॉट स्टैंडबाय सर्वर पर रिकवरी रोकें (स्टैंडबाय को तुरंत बंद करने के बजाय)
- फ़ंक्शन का उपयोग करें
pg_get_wal_replay_pause_state()
पुनर्प्राप्ति स्थिति की अधिक विस्तार से रिपोर्ट करने के लिए - केवल पढ़ने के लिए सर्वर पैरामीटर प्रदान करें
in_hot_standby
- साझा बफ़र्स की एक बड़ी संख्या वाले क्लस्टर पर पुनर्प्राप्ति के दौरान छोटी तालिकाओं को त्वरित रूप से छोटा करें
- लिनक्स के माध्यम से क्रैश पुनर्प्राप्ति की शुरुआत में फ़ाइल सिस्टम सिंक की अनुमति दें
- फ़ंक्शन का उपयोग करें
pg_xact_commit_timestamp_origin()
प्रतिबद्ध टाइमस्टैम्प और प्रतिकृति मूल वापस करने के लिए एक निर्दिष्ट लेनदेन पर - फ़ंक्शन का उपयोग करें
pg_last_committed_xact()
लौटाए गए रिकॉर्ड पर प्रतिकृति मूल जोड़ने के लिए - प्रतिकृति मूल कार्यों को बदलने के लिए मानक फ़ंक्शन अनुमति नियंत्रणों को नियोजित करें (डिफ़ॉल्ट अभी भी सुपरयूज़र तक पहुंच को सीमित करता है)
तार्किक प्रतिकृति के लिए, संस्करण 14 उपयोगकर्ताओं को सक्षम बनाता है:
- तार्किक प्रतिकृति API के साथ ग्राहकों के लिए लंबे समय से चल रहे लेनदेन को स्ट्रीम करें
- तालिका प्रतिकृति के दौरान एकाधिक लेनदेन की अनुमति दें
- तत्काल WAL-लॉग उप-लेनदेन और शीर्ष-स्तरीय XID संबद्धताएं उत्पन्न करें
- फ़ंक्शन का उपयोग करें
pg_create_logical_replication_slot()
टू-फेज कमिट के लिए लॉजिकल डिकोडिंग एपीआई को बढ़ाने के लिए - इन-प्रोग्रेस लेनदेन की तार्किक स्ट्रीमिंग की अनुमति देने के लिए कमांड पूरा होने के दौरान WAL में कैश अमान्यता संदेश जोड़ें
- प्रतिकृति स्ट्रीम में भेजे जाने वाले तार्किक डिकोडिंग संदेशों को नियंत्रित करें
- त्वरित प्रतिकृति के लिए बाइनरी ट्रांसफर मोड का उपयोग करें
- XID द्वारा डिकोडिंग फ़िल्टर करें
PostgreSQL पहले से ही संस्करण 15 की ओर काम कर रहा है, जिसे 2022 की तीसरी तिमाही में जारी किया जाना है। नवीनतम संस्करण में संबोधित किए जाने वाले प्रतिकृति के मुद्दों में से एक में स्ट्रीमिंग प्रतिकृति में सर्वर वातावरण से विरासत में प्राप्त चर के उपयोग को रोकना शामिल है। लेकिन जैसे-जैसे अधिक उपयोगकर्ता संस्करण 14 के अनुकूल होंगे, PostgreSQL प्रतिकृति कार्यों को बेहतर बनाने के लिए और अधिक कार्यों को जोड़ देगा।
एक त्वरित PostgreSQL प्रतिकृति तुलना:तार्किक बनाम स्ट्रीमिंग प्रतिकृति
<वें शैली ="पृष्ठभूमि-रंग:#273039; पैडिंग:10px; रंग:#fff;" चौड़ाई="33%">तार्किक प्रतिकृति <वें शैली ="पृष्ठभूमि-रंग:#273039; पैडिंग:10px; रंग:#fff;" चौड़ाई="33%">स्ट्रीमिंग प्रतिकृति | ||
---|---|---|
मॉडल | पब्लिशर टू सब्सक्राइबर | मास्टर टू रेप्लिका |
लेन-देन संबंधी प्रतिकृति | हां | नहीं |
प्रतिकृति में अंतराल | एक विरोध प्रतिकृति को रोक देगा | एसिंक्रोनस - प्राइमरी और रेप्लिका के बीच डेटा ट्रांसफर के बीच देरी का कारण बन सकता है; सिंक्रोनस - डेटा केवल तभी नष्ट होता है जब सभी कनेक्टेड सर्वर एक साथ क्रैश हो जाते हैं |
विभिन्न प्लेटफॉर्म या PostgreSQL संस्करणों में प्रतिकृति | हां | नहीं |
सुरक्षा | डेटा एक्सेस ग्राहकों तक सीमित है | डेटा को सुरक्षित रखने के लिए एक्सेस क्रेडेंशियल सेट अप करना होगा |
प्रतिकृति का आकार | दानेदार प्रतिकृति के लिए बेहतर | बड़े पैमाने पर प्रतिकृति के लिए बेहतर |
के लिए विशेष रूप से उपयोगी | एक से अधिक सिस्टम को एक डेटाबेस में मर्ज करना | बैकअप डेटाबेस बनाना |
निष्कर्ष
हमें उम्मीद है कि जब आप अपने प्रतिकृति कार्यों को सेट करते हैं तो यह मार्गदर्शिका काम में आती है। यदि आपके कोई प्रश्न हैं या कुछ और है जिसके बारे में आप जानना चाहते हैं कि कैसे स्केलग्रिड आपके पोस्टग्रेएसक्यूएल परिनियोजन में आपकी मदद कर सकता है, तो हमारे कई डेटाबेस विशेषज्ञों में से एक से संपर्क करें।
|