क्या PostgreSQL 9.1 स्ट्रीमिंग रिप्लेसमेंट वाल आर्काइविंग के बिना अंतराल के बाद पकड़ लेता है?


16

प्रसंग:

मान लीजिए कि पोस्टग्रेज 9.1 क्लस्टर पर स्ट्रीमिंग रिप्लेसमेंट / हॉट स्टैंडबाई का उपयोग करते समय, एक अतिरिक्त नोड नीचे चला जाता है। यह एक दिन के लिए नीचे रहता है, इस दौरान मास्टर पर बहुत अधिक डीएमएल होता है। स्टैंडबाय की पुनर्प्राप्ति .conf में '' rest_command '' प्रविष्टि नहीं है (वाल जर्नल फ़ाइलों से पुनर्स्थापित करने के लिए), लेकिन इसमें 'प्राथमिक_संक्रमण' स्ट्रिंग (स्ट्रीमिंग प्रतिकृति के लिए) शामिल है।

सवाल:

यदि मैं मास्टर पर परिवर्तनों के एक दिन बाद फिर से स्टैंडबाय शुरू करता हूं। क्या यह केवल स्ट्रीमिंग रिप्लेसमेंट का उपयोग करके "कैच अप" (अंततः मास्टर को प्रतिबिंबित करता है) में आएगा? या क्या मुझे वाल फाइल आर्काइविंग को सक्षम करना है और इसे मुद्रा सुनिश्चित करने के लिए आउटेज के दौरान संग्रहीत फाइलों को लागू करने देना है?

मैंने यहां वाल आर्काइविंग / स्ट्रीमिंग प्रतिकृति डॉक की जाँच की है , और यह कहता है कि आपको वाल आर्काइविंग और स्ट्रीमिंग रिप्लेसमेंट दोनों को सक्षम करने की आवश्यकता नहीं है, लेकिन यह अस्पष्ट है कि वाल फाइल आर्काइविंग सक्षम किए बिना कैच-अप होगा या नहीं।

धन्यवाद!

जवाबों:


9

हां, यह केवल, यदि (और केवल अगर) स्ट्रीमिंग का उपयोग करते हुए पकड़ लेगा, तो स्टैंडबाय पर अंतिम अपडेट के बाद से उत्पन्न वाल सेगमेंट की संख्या postgresql.conf में wal_keep_seolution के मूल्य से कम है। यह प्रलेखन के इस खंड में शामिल है: प्रतिकृति


2
यह उत्तर सही है, लेकिन यह समस्या को उजागर करता है। यदि आप कभी भी wal_keep_seolution पास नहीं करते हैं, तो आपकी प्रतिकृति मर जाती है। फ़ाइल-आधारित प्रतिकृति सेट करना वैकल्पिक नहीं है यदि आप एक ऐसी प्रणाली चाहते हैं जो मास्टर से लंबे समय तक वियोग से बचे और वापस पकड़ सके।
ग्रेग स्मिथ

0

स्टैंडबाय नोड पर, आप Restore.command को Recovery.conf पर सेट कर सकते हैं और फिर मास्टर्स pg_xlog (जो स्टैंडबाय पर गायब है) फ़ाइलों को फ़ोल्डर में कॉपी करते हैं जो rest_command बिंदुओं को कॉपी करते हैं। स्टार्टअप नोड और टंकण शुरू करके आप आसानी से पता लगा सकते हैं कि कौन सी xlog फाइलें गायब हैं

ps aux | grep postgres

आप देखेंगे कि "000000020000005200000025 का इंतजार" या ऐसा ही कुछ, जो आपको बताता है कि आपको किस pg_xlog से मास्टर के स्टैंडबाय के पुनर्स्थापना पथ पर कॉपी करना शुरू करना चाहिए।

यदि आप wal_archiving को सक्षम करते हैं, तो यह आपके द्वारा सेट-अप किए गए क्षण से संग्रह शुरू कर देगा।


मैं समझता हूं कि फाइल-आधारित वाल आर्काइविंग और स्टैंडबाय को पुनर्स्थापना करने के लिए एक पुनर्स्थापना_कंपन का उपयोग करके वाल फाइलों को लोड करने के लिए, मैं यह सुनिश्चित कर सकता हूं कि यह पकड़ में आए। हालांकि यह मेरा सवाल नहीं है; मैं जानना चाहता हूं कि क्या स्टैंडबाय पकड़ लेगा अगर मैं केवल स्ट्रीमिंग प्रतिकृति का उपयोग करता हूं (कोई वाल फाइल शिपिंग नहीं है, तो केवल 'प्राइमरी_कनॉन्फो' में निर्दिष्ट स्ट्रीम स्ट्रीम)।
Zac B

नहीं। postgres ऐसा नहीं करता है। यदि आपकी प्रतिकृति में देरी है, तो आपको लॉग फ़ाइलों की प्रतिलिपि बनाना चाहिए।
sftsz

0

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

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