Postgresql के लगातार बैकअप के लिए संग्रहण स्नैपशॉट - विभिन्न डेटा और लॉग वॉल्यूम


11

हम एक vmware / साझा भंडारण वातावरण में कई लिनक्स वीएम चला रहे हैं, प्रत्येक पोस्टग्रेक्यूएल (9.0 और 9.3 का मिश्रण) का अपना उदाहरण चला रहा है। वर्तमान में, पूरा वीएम एक रूट विभाजन / वॉल्यूम पर बैठता है, और हमें बैकअप / पुनर्स्थापना प्रक्रिया (और हमारे डीआर साइट के लिए प्रतिकृति) के लिए अंतर्निहित वीएमएफएस संस्करणों के भंडारण-आधारित स्नैपशॉट का उपयोग करके बड़ी सफलता (~ 8 वर्ष) मिली है।

हमारे भंडारण की वास्तुकला के कारण, यह एक गैर-कैश की गई वॉल फ़ाइलों को पोस्टग्रेज करने के लिए फायदेमंद होगा, जो ज्यादातर हमें स्टोरेज साइड पर कम कैश मंथन देने के लिए वॉल्यूम लिखते हैं। हमारे भंडारण (निंबले स्टोरेज) के साथ, हम दोनों संस्करणों को एक ही सुरक्षा / स्नैपशॉट समूह में असाइन कर सकते हैं, लेकिन मैं अपने विक्रेता से यह एलिमिट नहीं कर पाया कि स्नैपशॉट सुरक्षा समूह में सभी संस्करणों में एक ही समय में एक ही समय में होगा। - यह होने की संभावना है, लेकिन वहाँ हमेशा यह मौका है कि इसके मिलीसेकंड के अलावा।

उस अंत तक, हमने कुछ प्रयोगों को चलाया, जबकि DB के लिए डेटा लिखते हुए जितनी जल्दी हो सके pg_bench का उपयोग करते हुए। प्रयोगों के बाद, हमने अपने स्नैपशॉट के संस्करणों को पुनर्स्थापित किया और वीएम + पोस्टग्रेज शुरू किया

  • स्नैपशॉट डेटा और लॉग वॉल्यूम दोनों को एक साथ बंद करें - परिणाम: DB पुनर्प्राप्त
  • स्नैपशॉट डेटा वॉल्यूम पहले, लॉग वॉल्यूम ~ 1 मिनट बाद - परिणाम: DB पुनर्प्राप्त
  • स्नैपशॉट लॉग वॉल्यूम पहले, डेटा वॉल्यूम ~ 1 मिनट बाद - परिणाम: DB पुनर्प्राप्त
  • स्नैपशॉट लॉग वॉल्यूम पहले, डेटा की मात्रा ~ 3 मिनट बाद, जब वाल चेकपॉइंट ने डेटाफाइल्स को नया डेटा लिखा था: परिणाम: डीबी बरामद

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

मेरा प्रश्न: क्या यह सुरक्षित है? हमारे परीक्षण में कौन से कोने के मामले गायब हैं, और क्या गलत हो सकता है?

Postgres 'doc इंगित करता है कि यह सुरक्षित नहीं है, लेकिन परीक्षण इसके बहुत मजबूत होने का संकेत देता है: http://www.postgresql.org/docs/9.1/static/backup-file.html

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

नोट: हाँ, हम यह सुनिश्चित करने के लिए अन्य विकल्पों के बारे में जानते हैं कि वे सुसंगत हैं, जैसे PostgreSQL को हॉट बैकअप मोड में डालना या VM के स्वयं को बुझाने के लिए हमारे स्टोरेज के VMware एकीकरण का उपयोग करना, लेकिन हम गति, सुविधा के लिए स्टोरेज-केवल समाधान की तलाश कर रहे हैं। और हमारे ग्राहकों के लिए शून्य प्रभाव।


2
एक अपडेट - हमारे स्टोरेज वेंडर, निंबले स्टोरेज, ने आज यह कहते हुए असमान रूप से कहा कि एक सुरक्षा समूह के हिस्से के रूप में लिए गए स्नैपशॉट वास्तव में वॉल्यूम के पार हैं / समय पर एक ही बिंदु पर ले लिए गए हैं, इसलिए मेरा सवाल इस बिंदु पर वास्तव में बहुत ही कम है। हालांकि - अगर किसी के पास कोई टिप्पणी है, तो भी मुझे दिलचस्पी होगी, क्योंकि हमारे परीक्षण में पोस्टग्रैस स्नैपशॉट्स को जीवित करने के लिए पर्याप्त मजबूत लगता है जो एक ही समय में नहीं लिया गया है।
स्टीव आर।

जब आप कहते हैं कि "स्नैपशॉट डेटा वॉल्यूम पहले, लॉग वॉल्यूम ~ 1 मिनट बाद" का क्या मतलब है, यदि डेटा और लॉग वॉल्यूम दोनों एक ही स्नैपशॉट समूह में हैं, तो यह एक ही समय में किया जाएगा। एक स्नैपशॉट समूह में डेटा और लॉग वॉल्यूम रखें और स्नैपशॉट करें, फिर उस स्नैपशॉट से DB को पुनर्स्थापित करें यह एक उदाहरण क्रैश रिकवरी की तरह है। मैं Oracle के लिए स्नैपशॉट तकनीक के साथ EMC भंडारण आधारित बैकअप का परीक्षण कर रहा हूं। यह बहुत विश्वसनीय है।
परीबेटी

जवाबों:


2

आपके द्वारा उद्धृत दस्तावेज़ यह सब कहता है, लेकिन मैं आपको दोष नहीं दूँगा यदि आप एक ही समय में लिए गए स्नैपशॉट के बारे में विक्रेता के दावों को सत्यापित करना चाहते हैं। शायद कुछ को उजागर करने का एक तरीका यह हो सकता है कि तनाव को विशेष रूप से वाल सिस्टम का परीक्षण करें ।

अपने pgbench आधारित परीक्षणों के अलावा जैसे में, करने के लिए यादृच्छिक कॉल जोड़ने की कोशिश pg_switch_xlog()बल लॉग रोटेशन, छोटे और लंबे समय तक चौकी अंतराल (छोटा और लंबा करते करने के लिए checkpoint_timeoutऔर checkpoint_timeout) और यहां तक कि छोटे या बड़े वाल फ़ाइल आकार का उपयोग करते हुए।

जब तक मुझे कुछ याद नहीं आ रहा है, तब तक आपके स्नैपशॉट को एक ही समय में नहीं लिया जाएगा, मैं आपके पुनर्प्राप्त DBs को शायद भाग्यशाली समय के एक बिट के लिए विशेषता होगा। अंतिम स्थिति में, कल्पना करें कि आपने अपना लॉग स्नैपशॉट लिया था, जबकि वर्तमान xlog स्थान था, कहते हैं 0/A1C0FFEE। फिर आपके पास सिस्टम पर विशेष रूप से भारी लोड का 3 मिनट है, जो वाल फाइलों के माध्यम से एक पूर्ण चक्र का कारण बनता है, और 0/DEADBEEFडेटा स्नैपशॉट लेने पर आपका डीबी अब है। जब आप पुनर्स्थापित करने का प्रयास करते हैं, तो डेटा स्नैपशॉट के समय लिखी जा रही वाल फाइलें लंबे समय तक चली जाती हैं, और पुनर्प्राप्ति विफल हो जाएगी।

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