PostgreSQL एक Wal-सक्षम बैकअप के बीच में चेकपॉइंट्स को कैसे संभालता है?


17

PostgreSQL v9.0 पर मैंने वाल आर्काइविंग सिस्टम काम कर रहा है। तो वाल एक नियमित रूप से संग्रहीत फ़ाइल (जब 3 वाल बनाया जाता है या अगर एक वाल 15 मिनट से अधिक पुराना है)।

अब मैं PG_DATA निर्देशिका (pg_xlog उपनिर्देशिका को छोड़कर) का एक बाइनरी पैक जोड़ता हूं। ऐसा करने के लिए मैं एक pg_start_backup(),बाइनरी कॉपी करता हूं , और ए pg_stop_backup()

मुझे लगता है कि मैं अच्छी तरह से समझता हूं कि pg_start_backup और pg_stop_backup क्या कर रहे हैं, पहले वाला एक चेकपॉइंट बनाता है और अंतिम सुनिश्चित करता है कि अंतिम वाल फ़ाइल संग्रहीत है।

से आधिकारिक दस्तावेज हम देख सकते हैं कि बाइनरी डेटा कॉपी के लिए हमें:

किसी भी सुविधाजनक फ़ाइल-सिस्टम-बैकअप उपकरण जैसे कि टार या सीपीओ (pg_dump या pg_dumpall नहीं) का उपयोग करके बैकअप का प्रदर्शन करें। ऐसा करते समय डेटाबेस के सामान्य संचालन को रोकना न तो आवश्यक है और न ही वांछनीय है।

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

लेन-देन लॉग को फिर से देखने से Postgresql इन सभी फ़ाइलों को सही स्थिति में रख पाएगा? मैंने देखा कि टेबल बनाना और ड्रॉप ऑपरेशन खतरनाक है जबकि बैकअप प्रदर्शन कर रहा है, क्या कुछ खतरनाक ऑपरेशन जैसे वैक्यूम कमांड नहीं हैं? क्या pg_backup वैक्यूम संचालन को निलंबित करता है? क्या मुझे बाइनरी कॉपी प्रक्रिया की शुरुआत में अंत में वैश्विक / pg_control फ़ाइल की एक प्रतिलिपि बनानी चाहिए? क्या मुझे एक तेज पुनर्स्थापना प्रक्रिया प्राप्त करने के लिए स्नैपशॉट-सक्षम फाइल सिस्टम (जैसे कि एक्सएफ़एस-फ्रीज़ के साथ) का उपयोग करना चाहिए?

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

कृपया मुझे बताएं।

जवाबों:


7

तुम ने पूछा था:

कैसे postgreSQL एक pg_data सामग्री के साथ पुनर्प्राप्ति को हैंडल करेगा जिसमें कुछ फाइलें हैं जो असंगत हैं।

pg_start_backup()सुनिश्चित करें कि डेटा फ़ाइल कम से कम चौकी के रूप में नई है। पुनर्प्राप्ति पर, लॉग लागू होते हैं।

यदि डेटा पुराना है, तो लॉग इसे अपडेट करेगा।

यदि डेटा नया है, तो लॉग में समान सामग्री होगी। इसे फिर से लिखने में कोई चोट नहीं है।

डेटा कभी नए नहीं होते हैं फिर लॉग, क्योंकि लॉग आगे लिखे जाते हैं (वाल)।


तुम ने पूछा था:

... xfs-freeze... ...

xfs-freezeयह एक जैसा है pg_start_backup(), यह एक स्नैपशॉट नहीं लेता है। आपको ऐसा करने के लिए वॉल्यूम प्रबंधक की आवश्यकता है।


तुम ने पूछा था:

... क्यों टेबलस्पैस बनाते हैं और डेटाबेस स्टेटमेंट बनाते हैं असमर्थित हैं अगर वाल सब कुछ फिर से कर सकते हैं?

यह समर्थित है, बस कुछ छोटी गच्चा। Http://www.postgresql.org/docs/8.1/static/backup-online.html देखें :

23.3.5। चेतावनियां

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


एक्सफ़-फ़्रीज़ के बारे में मुझे पता है कि यह वॉल्यूम मैनेजर पर भी निर्भर करता है, यह सिर्फ स्नैपशॉटिंग प्रक्रिया का एक हिस्सा था। लेकिन क्या हमें यकीन है कि वाल रिकवरी पोस्ट-वैक्यूम बाइनरी टेबल पर प्री-वैक्यूम टेबल लॉग के रिप्ले को अच्छी तरह से हैंडल करेगा? और क्या वैश्विक / pg_control की सामग्री महत्वपूर्ण है? यदि टेबल सब कुछ फिर से कर सकते हैं तो टेबलस्पेस और डेटाबेस स्टेटमेंट क्यों बनाते हैं, असमर्थित हैं?
Regilero

CREATE TABLESPACEकाम करता है। अद्यतन उत्तर देखें। मुझे यकीन नहीं है VACUUM, लेकिन मैं कल्पना नहीं कर सकता कि यह क्यों नहीं होगा।
J-16 SDiZ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.