क्या लाइव db पर pg_dump चलाने से लगातार बैकअप उत्पन्न होता है?


37

मेरे पास एक 3GB डेटाबेस है जिसे लगातार संशोधित किया जाता है और मुझे सर्वर को बंद किए बिना बैकअप बनाने की आवश्यकता है (पोस्टग्रेज 8.3)।

मेरा pg_dump 5 मिनट तक चलता है। यदि प्रक्रिया के दौरान डेटा को संशोधित किया जाता है तो क्या होगा? क्या मुझे लगातार बैकअप मिलता है? मैं यह पता लगाना नहीं चाहता कि आपदा कब आती है।

दस्तावेज़ों को पोस्ट करता है http://www.postgresql.org/docs/8.3/static/app-pgdump.html इसके बारे में कुछ नहीं कहता है।


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

जवाबों:


53

से मैनुअल :

यदि डेटाबेस समवर्ती रूप से उपयोग किया जा रहा है तो भी यह लगातार बैकअप बनाता है।

तो हाँ, आप बैकअप पर भरोसा कर सकते हैं। बेशक, यह PostgreSQL है, आप PostgreSQL में अपने डेटा पर भरोसा कर सकते हैं।


10
जब मैं पढ़ता हूं तो मुझे सचमुच बहुत अच्छा लगता है "आप अपने डेटा को PostgreSQL में भरोसा कर सकते हैं" :)
फ्रांकोइस ब्यूसोलिल

मैनुअल का लिंक अच्छा होगा
पाब्लो फर्नांडीज

1
@PabloFernandez: हो गया!
फ्रैंक हेकेनस

1
हालांकि एक लाइव डेटाबेस पर एक तार्किक बैकअप आपकी तालिकाओं को लॉक कर देगा, इस जानकारी को याद न करें। शायद आपको कुछ सुझाव मिलेंगे
tryp

तो कृपया इसके बारे में क्या अजीब है? क्या मुझे postgresql का उपयोग बंद कर देना चाहिए?
777 एएन

12

pg_dump एक लेन-देन शुरू करता है, इसी तरह कोई अन्य लंबी चलने वाली क्वेरी कैसे काम करेगी। स्थिरता की गारंटी MVCC कार्यान्वयन से आती है । डंप उन नियमों के भीतर हमेशा आत्मनिर्भर रहेगा।

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


11

डंप की शुरुआत सेटिंग से होती है TRANSACTION ISOLATION LEVEL SERIALIZABLE

कृपया लेन-देन अलगाव पर मैनुअल पढ़ें और उदाहरण के लिए इस बारे में उपयोगकर्ता सूची चर्चा

उद्धरण:

बैकअप केवल उन लेनदेन को देखेगा जो अलगाव स्तर निर्धारित होने से पहले शुरू किए गए थे।

मूल रूप pg_dumpसे लेन-देन अलगाव स्तर सेट करने के बाद सब कुछ इस डंप का हिस्सा नहीं है

उस दौरान पढ़ने / लिखने के संचालन प्रभावित (लॉक) नहीं होते हैं।


-1

पहले इस पुराने धागे पर जवाब देने के लिए खेद है। लेकिन अपने अनुभव से मैं इस कथन की पुष्टि नहीं कर सकता कि आप pg_dump / पर भरोसा कर सकते हैं

मैंने पोस्टग्रेज करने के लिए एक प्रोजेक्ट के लिए कुछ महीने पहले स्विच किया था। और निश्चित रूप से मैंने सुझाए गए लाइव सिस्टम से pg_dump के साथ सभी बैकअप बनाए। लेकिन पहले बैकअप जांच के बाद मुझे पता चला कि सभी अलग-अलग आकार के हैं। उनमें से कुछ को यादृच्छिक रूप से बहाल करने के बाद, मुझे लगा कि कुछ टेबल गायब हैं। इसलिए मैंने विश्लेषण करना शुरू कर दिया कि ऐसा क्यों होता है और मुझे पता चला कि यदि ओवरलेइंग एप्लिकेशन, जैसे ऐप सर्वर, कुछ टेबलों और pg_dump को लॉक करना जारी होने तक इंतजार नहीं कर रहा है। मुझे बैकअप की अवधि के लिए सर्वर को रोकने के लिए हर बार ज़रूरत थी जो एक अच्छा समाधान नहीं है।

इसलिए मैं अभी भी एक फिक्स की तलाश कर रहा हूं लेकिन जैसा कि मैंने कहा कि मैं स्पष्ट रूप से इस कथन से असहमत हूं कि आप pg_dump पर भरोसा कर सकते हैं।


अगर ऐसा होता है तो यह pg_dump में एक गंभीर होगा। आप किस संस्करण का उपयोग कर रहे हैं? मेरा प्रश्न 3 साल पहले था, और अब मैं 9.3 पर हूं और अमेज़ॅन रेड जो कि pg_dump का उपयोग करते हुए जाहिरा तौर पर लाइव बैकअप करता है। वे गलत नहीं हो सकते।
रोमन

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

2
आपके कथन या तो एक गंभीर बग का संकेत दे रहे हैं (क्या आपने बग रिपोर्ट दर्ज की है?), जिस तरह से आप अपने डेटाबेस या किसी गलतफहमी को डंप करते हैं, उसमें एक गंभीर बग। किसी भी तथ्य को खोना इनमें से कोई भी तय नहीं कर सकता है।
dezso
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.