प्रश्न: क्या आपके पास लंबे समय तक चलने वाले प्रश्न (30s +) चल रहे हैं जबकि दास पर लागू वैल अपडेट (दास भूमिका एक रिपोर्टिंग डीबी सर्वर के रूप में है) हॉट स्टैंडबाय मोड में ? जिस तरह से यह अब काम कर रहा है, या तो आप लंबे समय से चलने वाले प्रश्नों को मारने के लिए नीचे दिए गए पैरा सेट करते हैं, इसलिए डब्ल्यूएएल अपडेट लागू किए जा सकते हैं, या वैल अपडेट को अनिश्चित काल तक देरी कर सकते हैं जब तक कि उन्हें लागू करने के लिए कोई प्रश्न नहीं चल रहा हो। क्या हम दोनों हो सकते हैं? लंबे समय से चल रहे प्रश्न और WAL अपडेट एक ही समय में लागू किए जा रहे हैं?पोस्टग्रेस स्लेव पर हॉट स्टैंडबाय और लांग रनिंग क्वेरीज
केस कार्यान्वयन: वर्तमान में हम एक मास्टर से एक दास में किसी भी बदलाव को सिंक करने के लिए हॉट स्टैंडबाय मोड का उपयोग कर रहे हैं। दास भूमिका एक रिपोर्टिंग डीबी सर्वर के रूप में लगातार पूछताछ और समवर्ती रूप से चल रही है (कुछ एमएस में, कुछ सेकंड में, कुछ मिनटों में।) दास पर चल रहे कोई सक्रिय प्रश्नों का अंतर होना बहुत दुर्लभ होगा।
हम इन दो पैरामीटर समायोजित किया है गर्म स्टैंडबाय पर लंबी क्वेरी अनुमति देने के लिए:
max_standby_archive_delay = -1 # max delay before canceling queries
max_standby_streaming_delay = -1 # max delay before canceling queries
और मेलिंग सूची का संग्रहीत मेल एक postgres में हमारे जैसे प्रश्न को देखकर:
http://www.postgresql.org/message-id/[email protected]
प्रश्नों के चलते दासों पर लागू होने वाले वाल अपडेट को रोकने की अवधारणा को मैं समझता हूं। हालांकि, मैंने एमवीसीसी, के उपयोग के साथ सोचा था कि दास पर एक सक्रिय क्वेरी (लंबी दौड़, 30 सेकंड +) एक संस्करण/स्नैपशॉट से पढ़ने को चला सकती है, जबकि डब्ल्यूएएल अपडेट लागू किया जा रहा है, इसलिए बाद के प्रश्नों को WAL मिल जाएगा अद्यतन जब उस डब्ल्यूएएल लेनदेन प्रतिबद्ध है। मैंने PostgreSQL में अभी तक [https://devcenter.heroku.com/articles/postgresql-concurrency] में उपयोग किए गए एमवीसीसी मॉडल को पूरी तरह से पच नहीं किया है, इसलिए यह सिर्फ मेरी धारणा है - भले ही WAL अद्यतन के दौरान एक तालिका को गिरा दिया/छोटा कर दिया गया हो, वर्तमान चलती क्वेरी अभी भी काम करनी चाहिए संस्करण/स्नैपशॉट का उपयोग करके यह पूछताछ कर रहा है?
सारांश: वहाँ वैसे भी (यहां तक कि एक तीसरी पार्टी के विस्तार के साथ) है हम दास एक मास्टर से सिंक और गुरु से उन अपडेट दास को लागू किया जा तुरंत किसी भी निष्पादन समय की दे प्रश्नों जारी रखने के लिए, जबकि हो सकता है तक स्टैंडबाय/गुलाम पर पूरा होने तक चलते हैं? यदि हॉट स्टैंडबाय ऐसा नहीं कर सकता है, आप इस स्थिति के लिए क्या सिफारिश करेंगे? हमारा परिदृश्य यह है कि हम लगातार प्रश्नों के साथ पोस्टग्रेस मार रहे हैं और समवर्ती रूप से चल रहे हैं (कुछ एमएस, कुछ सेकंड में, कुछ मिनटों में), WAL अपडेट के लिए लगभग कोई समय नहीं छोड़ते हैं। हमने बुकार्डो का उपयोग किया है, लेकिन यह इस परिदृश्य में विकल्प अच्छा नहीं होगा, क्योंकि हम 200+ से अधिक टेबलों को सिंक्रनाइज़ करने की आवश्यकता होगी, जिसमें हमारे मुख्य डेटाबेस से अलग-अलग 40+ अन्य डेटाबेस भी शामिल हैं।
किसी भी मदद की सराहना की जाएगी।
धन्यवाद!
स्पॉट! उम्मीद है कि यह दूसरों की मदद करता है; ** अपने डेटाबेस/सर्वर को पुनरारंभ करना न भूलें! (उदाहरण के लिए यदि आप आरडीएस चला रहे हैं) ** – Volte