क्या PostgreSQL प्रतिकृति उत्पादन तैयार है?


16

PostgreSQL के मूल प्रतिकृति की तुलना MySQL से कैसे की जाती है?

मुझे पता है कि अतुल्यकालिक प्रतिकृति को सिंक की तुलना में लंबे समय तक समर्थन दिया गया है, जो हाल ही में है। क्या वास्तविक परियोजनाओं में उपयोग किए जाने के लिए सिंक्रोनस विश्वसनीय है?

जवाबों:


31

उत्पादन तैयार है?

हाँ, यह उत्पादन-तैयार है और व्यापक रूप से उपयोग किया जाता है। हरोकू अनुयायी PostgreSQL के अंतर्निहित async प्रतिकृति पर आधारित हैं, जैसे कि AWS RDS स्टैंडबाय हैं और प्रतिकृतियां पढ़ते हैं। स्ट्रीमिंग प्रतिकृति का उपयोग लगभग सार्वभौमिक रूप से PostgreSQL के साथ किया जाता है।

प्रतिकृति का सेटअप बिल्कुल प्यारा नहीं है, लेकिन repmgr जैसे उपकरण इसके साथ कुछ हद तक मदद करते हैं, और यह प्रत्येक प्रमुख रिलीज के साथ धीरे-धीरे सुधार कर रहा है। Pg_basebackup के लिए स्ट्रीमिंग प्रतिकृति (और दूसरे स्टैंडबाय से ऐसा करने) के लिए सिस्टम की एक प्रति लेने की क्षमता एक बड़ी मदद है।

सामान्य तौर पर, PostgreSQL में बस एक फीचर जारी नहीं किया जाएगा जब तक कि यह तैयार न हो जाए। कीड़े होते हैं, किसी भी सॉफ़्टवेयर की तरह, लेकिन वे आमतौर पर पहचाने जाने के तुरंत बाद तय हो जाते हैं। वास्तव में प्रमुख नई विशेषताओं में कभी-कभी बग और मुद्दों की खोज होती है .0 रिलीज के बाद, लेकिन अगर उन्हें ठीक करना एक उच्च प्राथमिकता है; कीड़े अभी आसपास नहीं बचे हैं।

मैं स्ट्रीमिंग प्रतिकृति के साथ किसी भी गंभीर मुद्दों के बारे में पता नहीं कर रहा हूँ - सिंक या async - और न ही मैंने किसी रिपोर्ट को काफी समय से देखा है। वे उन प्रमुख संस्करणों के .0 रिलीज में Pg के सामान्य मानक से कम स्थिर थे जिन्हें वे पेश किए गए थे, लेकिन दोनों ही जल्दी परिपक्व हो गए और पूरी तरह से तैयार हैं।

(अपडेट: 9.3.4 से पहले के नए 9.3 संस्करण में एक विशिष्ट बग था जो कुछ मामलों में प्रतिकृति समस्याओं का कारण बना। 9.3 के उपयोगकर्ताओं को 9.3.4 में तुरंत अपडेट करना चाहिए। पुराने संस्करण प्रभावित नहीं हैं।)

केवल मैं जो उल्लेख करना चाहता हूं वह सिंक्रोनस प्रतिकृति के साथ एक मामूली विस्तार है: यदि आप मास्टर पर प्रतिबद्ध करते हैं, तो क्वेरी को रद्द करने के बाद इसे रद्द कर दें, जबकि यह पुष्टि करने के लिए प्रतिकृति की प्रतीक्षा करता है, इसे दोहराया जाने से पहले ही मास्टर के रूप में माना जाता है। उत्तर की प्रतिक्षा करते समय आपको गुरु को पुनः आरंभ करने से समान प्रभाव प्राप्त होता है। व्यवहार में यह एक अप्रासंगिकता है, लेकिन यह एकमात्र ऐसी समस्या है जिसके बारे में मैं सोच सकता हूं।

MySQL से तुलना करें?

Pg की मूल प्रतिकृति MySQL के लिए काफी भिन्न है।

MySQL तार्किक प्रतिकृति का उपयोग करता है जहां यह तालिका डेटा, तालिका संरचना आदि के लिए किए गए तार्किक परिवर्तनों को भेजता है, और प्रतिकृति उन परिवर्तनों को लागू करती है।

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

सब सब में, यह निर्भर करता है कि आप इसके साथ क्या करना चाहते हैं।

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

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

PostgreSQL में तार्किक प्रतिकृति को सक्षम करने के लिए काम चल रहा है , जहां तालिका संरचना, तालिका सामग्री आदि के लिए तार्किक परिवर्तन उनके ऑन-डिस्क स्थिति के बजाय दोहराया जाता है। पीजी की कैटलॉग डिज़ाइन और उपयोगकर्ता-परिभाषित सब कुछ के लिए समर्थन यह काफी जटिल कार्य करता है। 9.4 में से कुछ के लिए जमीनी कार्य किया गया है, लेकिन 9.6 या बाद में पूर्ण तार्किक प्रतिकृति के उपयोग योग्य नहीं है।


एक सवाल का बढ़िया जवाब मेरे पास भी था। धन्यवाद क्रेग।
स्वैसेक

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

1
@kgrittn गुड पॉइंट री मल्टीपल टारगेट। मैं हल्के से भयभीत हूं कि कोई भी व्यक्ति लेन-देन को समकालिक प्रतिकृति में दोहराया जाने से पहले करना चाहेगा ; लगता है कि वे वास्तव में एक अधिकतम अनुयायी अंतराल सीमा के साथ async प्रतिकृति चाहते हैं जो गुरु पर लिखता है जब तक अनुयायी पर्याप्त पकड़ नहीं लेते? एक पूरी तरह से उचित काम करना चाहते हैं, लेकिन नहीं सिंक प्रतिनिधि।
क्रेग रिंगर

1
@ क्रेगिंगर: मैंने जो देखा है कि लोग पूछते हैं कि आपने जो कहा है, वह कभी-कभी नहीं होता है, वे कभी-कभी "सिंक प्रतिनिधि का उपयोग करें लेकिन स्वचालित रूप से वापस सिंक हो जाते हैं यदि सिंक बहुत लंबा हो रहा है।" इसलिए वे मास्टर को रोकना नहीं चाहते हैं यदि यह प्रतिकृति के पीछे बहुत दूर गिरता है - ठीक यही मामला है जहां वे चाहते हैं कि यह जल्दी से पुष्टि करे , बिना किसी अन्य साइट पर लिखे। मुझे लगता है कि अधिक से अधिक होनहार के एक मामले की तरह लगता है दिया जा रहा है। वे अप-फ्रंट चाहते हैं "हाँ, आपके पास सिंक सिंक है; आप सुरक्षित हैं।" और एक दुर्घटना के बाद "यह प्रतिबद्ध डेटा चला गया है; यह वास्तव में कहीं और नहीं लिखा गया था।"
kgrittn

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