EC2 - PostgreSQL डेटा का सही तरीके से बैकअप कैसे लें?


9

यहां सेटअप है: 3 अतिरिक्त संस्करणों के साथ 1 छोटा अमेज़ॅन लिनक्स (ईबीएस समर्थित) ईसी 2 उदाहरण। यह एक वेब सर्वर और डेटाबेस सर्वर दोनों है। कोड के लिए एक वॉल्यूम, PostgreSQL (8.4) डेटा निर्देशिका के लिए एक, और PostgreSQL से वाल फ़ाइलों को संग्रहीत करने के लिए एक वॉल्यूम।

(1) वाल फाइलों के साथ वॉल्यूम में डेटा डायरेक्टरी का बेस बैकअप भी होगा, जिसे एक pg_start_backup () करने के बाद कॉपी किया जाता है। फिर यह PostgreSQL (वाल फ़ाइलों) से निरंतर संग्रह आउटपुट संग्रहीत करेगा। इस वॉल्यूम को स्नैपशॉट करने के लिए, क्या फ़ाइल सिस्टम को एक सिंक और फ्रीज़िंग जारी करने का कोई मतलब है (यदि यह एक्सटी 4 है तो एक्सएफएस या डीएमएसटुप का उपयोग करके xfs_freeze का उपयोग करें)? या मैं सिर्फ एक लाइव स्नैपशॉट ले सकता हूं? वाल फ़ाइलों को एक मिनट की दर से शिपिंग किया जाएगा। क्या यह संभव है कि एक स्नैपशॉट शुरू किया जा सकता है जबकि एक वाल फाइल को कॉपी किया जा रहा है और इसके परिणामस्वरूप भ्रष्ट डेटा है?

(2) जिस वॉल्यूम में लाइव पोस्टग्रेसीक्यूएल डेटा डायरेक्टरी है वह भी अच्छे उपाय (दैनिक) के लिए बैकअप होगी। इस वॉल्यूम का स्नैपशॉट करने से पहले, मैं एक pg_dump जारी करता हूं और परिणामस्वरूप SQL फ़ाइल डेटा निर्देशिका में रखी जाती है। क्या वास्तविक डेटाबेस डेटा संगत है यह सुनिश्चित करने के लिए सावधानी बरतने का कोई मतलब नहीं है? क्या यह मान लेना सही होगा कि लाइव स्नैपशॉट लेने से ठीक से (a) बैकअप कॉन्फिग फाइल (postgresql.conf, pg_hba.conf, pg_ident.conf) और (b) एसक्यूएल डंप फाइल का बैकअप लेगी। उन दो चीजों का समर्थन करते हुए, sql डंप फ़ाइल और कॉन्फिग फाइल, इस वॉल्यूम को स्नैपशॉट करने का मुख्य बिंदु होगा। DB बहुत बड़ा नहीं है, इसलिए मुझे इस तथ्य पर कोई आपत्ति नहीं है कि डेटा फ़ाइलें इस स्नैपशॉट को ब्लोट करेंगी। और उस मामले में, मैं सिर्फ एक लाइव स्नैपशॉट कर सकता हूं - सही?

(2a) क्या डेटा निर्देशिका को रूट वॉल्यूम पर रखना बेहतर होगा, और एक बैकअप स्क्रिप्ट है जो sql डंप फ़ाइल की प्रतिलिपि बनाने के साथ-साथ किसी अन्य वॉल्यूम पर फ़ाइलों को कॉन्फ़िगर करती है, और कॉपी होने के बाद उस वॉल्यूम को स्नैपशॉट करता है?

(3) उस पर कोड के साथ वॉल्यूम के लिए, फिर से फाइल सिस्टम को सिंक करने और फ्रीज करने का कोई मतलब है? या सिर्फ एक लाइव स्नैपशॉट लिया जा सकता है? यह डेटा काफी "स्थिर" होना चाहिए।

(४) क्या यह एक ठोस बैकअप योजना है? रूट वॉल्यूम को नियमित आधार पर बैकअप नहीं किया जाता है क्योंकि मैं इसे स्थापित करने और कॉन्फ़िगर करने के बाद बस एक मशीन छवि रखूंगा।

धन्यवाद

जवाबों:


13

ठीक मैनुअल देखें । अगर मेरी सलाह किसी भी तरह से इसका 'सामना करती है, तो यह सही है।

  1. जब तक आपका कॉपी टूल fsync () प्रत्येक वाल फाइल नहीं लिखता है और यह निर्देशिका है, जब तक कि अगले एक को कॉपी करने से पहले यह सिंक एक बुरा विचार नहीं है। एक अपूर्ण अंतिम वाल फ़ाइल ज्यादा मायने नहीं रखती है; सबसे कम, आप इसे हटा दें। पीजी आमतौर पर एक अपूर्ण वाल पर चोक होगा - हालांकि कोई चेकसमिंग नहीं किया गया है, इसलिए आप कर सकते हैंवास्तव में अशुभ हो और यह कचरा डेटा को लागू करने की कोशिश करे जो कि वास्तविक पागल रिकॉर्ड की तरह दिखने के लिए सरासर पागल हो गया हो। आपकी स्थिति में, मैं स्नैपशॉट से पहले वॉल्यूम को सिंक्रनाइज़ कर रहा हूं यह सुनिश्चित करने के लिए कि रैम में कोई भी अलिखित गंदा बफ़र्स डिस्क पर फ़ाइल सिस्टम छवि को हिट करता है। एक फ्रीज गड़बड़ लेकिन गैर-घातक आंशिक रूप से लिखे गए वाल्स से बचने में मदद करेगा, इसलिए यह एक भयानक विचार नहीं है लेकिन महत्वपूर्ण नहीं है। वसूली के बिंदु तक एक अविकसित समय रेखा का होना कितना महत्वपूर्ण है। व्यक्तिगत रूप से, मैं अपने वाल्स को एक अस्थायी फ़ाइल नाम लिखता हूं और उनका नाम फिर से उनके नाम पर केवल एक बार पूरी तरह से कॉपी कर लेता हूं; यदि आप ऐसा करते हैं, तो आपको फ्रीज करने की आवश्यकता नहीं है।

  2. सही लगता है। एक लाइव स्नैपशॉट बस राइट-कैशिंग के साथ लाइव सिस्टम पर प्लग पुल टेस्ट करने जैसा है। प्लग-पुल के बाद लाइव स्नैपशॉट से पुनर्स्थापित होने पर आपका डेटाबेस ठीक होना चाहिए। मेरा सुझाव है कि आप स्नैपशॉट से पुनर्स्थापना के परीक्षणों को स्वचालित करें। (नोट: स्नैपशॉट पुनर्स्थापना परीक्षण प्लग पुल परीक्षण के लिए एक पूर्ण विकल्प नहीं है क्योंकि यह संभव डिस्क, छापे नियंत्रक आदि के लिए खाता नहीं है) कैशिंग लिखें। न केवल कॉन्फिग फाइल्स और डंप, बल्कि आपके स्नैपशॉट के बाद इसका सेल्फ ठीक होना चाहिए। स्नैपशॉट से पहले वॉल्यूम को सिंक्रनाइज़ करने पर विचार करें यह सुनिश्चित करने के लिए कि सभी डंप डेटा आदि ने वास्तव में डिस्क को हिट किया है।

    2 ए। कुछ डिस्क स्थान बचा सकता है। थोड़ा अंतर अन्यथा। आप उन पर लाइव डेटाबेस के सभी मंथन के बिना स्नैपशॉट्स को लंबे समय तक रखने के लिए प्राप्त करेंगे।

  3. यहां तक ​​कि अपने कोड वॉल्यूम को स्नैपशॉट क्यों करें? एक सादा फ़ाइल स्तर की प्रतिलिपि केवल ठीक हो सकती है। निश्चित रूप से एक लाइव स्नैपशॉट होना चाहिए।

  4. यह एक ठोस बैकअप योजना नहीं है। यह एक महत्वपूर्ण क्षेत्र में विफल रहता है: कोई पुनर्स्थापना परीक्षण और सत्यापन नहीं किया जा रहा है। आपको हमेशा नियमित रूप से अपने बैकअप का परीक्षण करना चाहिए ताकि यह सुनिश्चित हो सके कि आप वास्तव में उन्हें पुनर्स्थापित कर सकते हैं।

    व्यक्तिगत रूप से, मैं सुझाव है कि आप वाल शिपिंग, या भेजने डेटाबेस डंप का उपयोग करें, एक करने के लिए अलग अलग मेजबान , अधिमानतः एक नहीं अमेज़न EC2 पर या किसी अन्य क्षेत्र में कम से कम। इस मेजबान को स्वचालित पुनर्स्थापना परीक्षण करना चाहिए, आपको परिणामों की रिपोर्ट भेजनी चाहिए, और मैन्युअल रूप से भी जांच करनी चाहिए।

    जबकि आपके स्नैपशॉट (डंप वाले) S3 पर होंगे, और वहां सुरक्षित रहेंगे, इसका मतलब यह नहीं है कि जब आपको उनकी तत्काल आवश्यकता होगी, तो वे सुलभ होंगे। अमेज़ॅन के स्थायित्व के दावे आश्वस्त हैं, लेकिन एस 3 सेवा के बुरी तरह से समाप्त होने के दौरान आपका डेटा अभी भी आपके लिए सुरक्षित और पूरी तरह से दुर्गम हो सकता है।


2
+1, विशेष रूप से किसी अन्य मशीन पर डेटा बैकअप लेने के लिए जो कि Amazon EC2 पर नहीं है। विफलता के कई एकल बिंदुओं को व्यावहारिक रूप से हटा दें।
माइक शेरिल 'कैट रिकॉल'

1
उपयोगी जानकारी, धन्यवाद। एक चीज जो मुझे नहीं मिलती है वह यह है कि आप कहते हैं कि "सभी बैकअप किए गए डेटा अभी भी उसी मशीन पर हैं।" ईबीएस स्नैपशॉट्स एस 3 पर संग्रहीत हैं, जो 99.999999999% स्थायित्व का दावा करता है (10,000 वस्तुओं को स्टोर करें और 10 मिलियन में एक विफलता की उम्मीद करें)। मेरी समझ यह है कि यह एक ही क्षेत्र के कई डेटा केंद्रों में कॉपी की जाती है; आप अन्य क्षेत्रों में मैन्युअल रूप से कॉपी कर सकते हैं। प्रदाता स्वतंत्रता को बनाए रखने के लिए AWS के बाहर कॉपी लेने में कुछ भी गलत नहीं है, बेशक।
मार्क बेरी

2
@ मार्केबरी आप काफी सही हैं - मुझे लगता है कि जब मैंने यह लिखा था, तो मैं उस स्पष्टीकरण के हिस्से को गलत समझा। मैं जवाब में संशोधन करूंगा।
क्रेग रिंगर

मेरे पास एक विस्तृत विस्तृत अनुवर्ती प्रश्न था जिसे मैंने एक नए प्रश्न के रूप में पोस्ट करने का फैसला किया: dba.stackexchange.com/q/68461/41155
मार्क बेरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.