हॉट स्टैंडबाय सर्वर पर pg_dump चल रहा है?


21

अस्वीकरण: मैंने स्वीकार किया है कि यह अभी तक कोशिश नहीं की है, लेकिन मुझे यकीन नहीं है कि मुझे पता होगा कि यह सही ढंग से काम नहीं कर रहा था, इसलिए मैं पूछना चाहता था।

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

मेरे प्रश्न हैं:

  1. क्या मैं वास्तव में ऐसा करना चाहता हूं, या प्राथमिक सर्वर पर बैकअप होना चाहिए? क्यूं कर?

  2. स्टैंडबाय पर डंप करते समय, मुझे कौन सी सेटिंग्स की आवश्यकता है और मुझे इसे सही तरीके से करने के लिए प्रक्रिया का उपयोग करना चाहिए? उदाहरण के लिए मुझे बैकअप की अवधि के लिए प्रतिकृति को रोकना चाहिए?


मुझे उम्मीद है कि यदि आपकी प्रतिकृति स्टैंडबाय डेटाबेस को सुसंगत स्थिति में रखती है, तो आपका बैकअप सुसंगत होगा। जैसा कि pg_dumpप्रलेखन में कहा गया है: "यह लगातार बैकअप बनाता है, भले ही डेटाबेस समवर्ती रूप से उपयोग किया जा रहा हो।" pg_dumpallप्रत्येक डेटाबेस के लिए पूर्व चलाता है।
डेज़ो

जवाबों:


21

AFAIK, pg_dumpएक हॉट स्टैंडबाय पर चलने वाली एक प्रमुख चीज है जो स्टैंडबाय के लिए उपयोगी है। यह पूरी तरह से सुरक्षित है, हालांकि यह पूरी तरह से विश्वसनीय नहीं है - डंप विफल हो सकता है अगर स्टैंडबाय लेनदेन को रोक देता है जब यह मास्टर के पीछे बहुत दूर गिर रहा है।

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

आपको बैकअप के दौरान स्टैंडबाय को मास्टर से काफी दूर गिरने की अनुमति देनी होगी, क्योंकि यह pg_dumpफिर से चलना जारी रखने के लिए अपने लेनदेन को रद्द करना होगा । हॉट स्टैंडबाय पर प्रलेखन देखें , विशेष रूप से "हैंडलिंग क्वेरी संघर्ष" अनुभाग, और max_standby_archive_delayऔर max_standby_streaming_delayपैरामीटर।

ध्यान दें कि स्वामी को दास को फिर से पकड़ने के लिए पर्याप्त वाल अभिलेख रखने के लिए तैयार होना चाहिए।


12
  1. हम स्टैंडबाय पर बैकअप करते हैं, यह पूरी तरह से ठीक है।
  2. स्टैंडबाय सिस्टम पर बैकअप के दौरान रद्द किए गए स्टेटमेंट संघर्ष से बचने के लिए, आपको स्टैंडबाय का उपयोग करके प्रतिकृति को रोकने की आवश्यकता है SELECT pg_xlog_replay_pause();, SELECT pg_xlog_replay_resume();फिर प्रतिकृति को फिर से शुरू करने के लिए एक बार समाप्त होने पर अपना बैकअप चलाएं । ध्यान रखें कि कमांड्स के ऊपर चलने से दास पर रिकवरी लैग होगा, जो कि आपके डेटाबेस के आकार के आधार पर काफी बड़ा हो सकता है। इसके अलावा, वेक्स सेगमेंट के स्थान को ध्यान में रखें, क्योंकि वे विराम के दौरान दास पर दोबारा नहीं लगाए जाएंगे।

आपको प्रलेखन में कुछ अन्य उपयोगी व्यवस्थापकीय कार्य मिल सकते हैं । उदाहरण के लिए, जांचें कि क्या सर्वर वास्तव में रिकवरी में है, इसे रोकने से पहले SELECT pg_is_in_recovery():।


0

यदि आप बैकअप के दौरान प्रतिकृति को रोकते हैं, (यह अखंडता और निरंतरता को बनाए रखने के लिए एक अच्छा विचार है), तो आप अपने मास्टर पोस्टग्रैक्स्ल में कुछ पंक्तियों को संपादित कर सकते हैं:

आदतन आपके बैकअप में कितना समय देरी हो रही है। सुनिश्चित करें कि मास्टर नोड प्रतिकृति को फिर से शुरू करने के लिए आवश्यक पूरी x_log फ़ाइलों को संरक्षित करता है। आप इसे postgresql.conf संपादन में कर सकते हैं

wal_keep_segments = 32      # in logfile segments, 16MB each; 0 disables

यदि आप इसे संशोधित नहीं करते हैं और आपकी बैकअप प्रक्रिया बहुत लंबी है, तो संभवतः यह है कि मास्टर नोड दास को भेजने से पहले xlog फ़ाइलों को मिटा देता है।


यह सेटिंग केवल स्ट्रीमिंग प्रतिकृति के लिए आवश्यक है। मैं नियमित प्रतिकृति का उपयोग कर रहा हूं और जब स्टैंडबाय पोस्टग्रैज सर्वर को रोक दिया जाता है तब भी वॉल्यू को स्टैंडबाय होस्ट में रखा जाता है।
david.perez
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.