Postgres में हर घंटे वृद्धिशील बैकअप कैसे करें?


18

एकल पोस्टग्रेज सर्वर (Win7 64) का एक घंटे का वृद्धिशील बैकअप करने की कोशिश कर रहा है।

मेरे पास निम्नलिखित सेटअप है postgresql.conf:

max_wal_senders = 2
wal_level       = archive
archive_mode    = on
archive_command = 'copy "%p" "c:\\postgres\\foo\\%f"'

(पुनर्प्रारंभ करें)

मैंने बेस बैकअप के साथ किया pg_basebackup -U postgres -D ..\foo -F t -x

base.tarजिसने fooफ़ोल्डर में एक बड़ी फ़ाइल बनाई और कुछ 16,384 KB फाइलें जोड़ीं, जो मुझे लगता है कि वे हैं।

मुझे समझ में नहीं आता है कि वाल्स क्यों fooनहीं बदलते हैंdata/pg_xlogपरिवर्तन में चलता है । क्या pg उन्हें कॉपी करने वाला नहीं है? ऐसा करने का फैसला कैसे करता है?

शायद मुझे सेट करने की आवश्यकता है archive_timeout=3600?

मैंने कई साइटें देखी हैं (पृष्ठ की मेलिंग सूचियाँ, बकुला के पोस्ट पेज) जो कहते हैं कि आपको pg_start_backup () और pg_stop_backup () कॉल करने की आवश्यकता है, लेकिन मेरा मानना ​​है कि जिनकी आवश्यकता नहीं है। क्या यह सच है?

माध्यमिक प्रश्न:

  1. कितनी बार data/pg_xlogलिखित में वाल्स करते हैं ? क्या एक ट्रिगर चलाता है?

    ऐसा लगता है कि यदि मैं कुछ डीएमएल \qको psql में करता हूं तो एक वाल को अपडेट करना होगा । या pgAdmin में एक तालिका संपादित करें फिर खिड़की बंद करें। मुझे लगा कि यह लिखेगा।

  2. सर्वोत्तम प्रथाएं? सप्ताह में एक बार pg_basebackup? पुरालेख PG या रिमोट मशीन के समान मशीन पर चलता है?

जवाबों:


5

आप संग्रह फ़ोल्डर के एक वृद्धिशील बैकअप दूरस्थ भंडारण के लिए करना चाहते हैं।

क्या आपको बैकअप से पुनर्स्थापित करने की आवश्यकता है, मूल परिदृश्य यह है कि आपको शुरुआती बिंदु के रूप में अपने आधार बैकअप की आवश्यकता होगी, और प्रारंभिक बिंदु और दुर्घटना के बीच हुई गतिविधि को फिर से शुरू करने के लिए संग्रह फ़ोल्डर की संपूर्ण सामग्री।

साथ ही संग्रह फ़ोल्डर में फ़ाइलों को हमेशा के लिए जमा होने से बचाने के लिए, आप समय-समय पर एक नया आधार बैकअप करना चाहते हैं और नए आधार बैकअप से पहले संग्रहीत फ़ाइलों को हटाना चाहते हैं।


धन्यवाद। कुछ प्रश्न: 1. क्या मैं pg_start_backup () करता हूं, डेटा कॉपी करता हूं, फिर pg_stop_backup (), या pg_start_backup () चलाएं; pg_stop_backup (), फिर कॉपी करें?
2030 पर नील मैकगिगन

@ नील: 1. और 2. जब आप उपयोग करते हैं तो लागू नहीं होते हैं pg_basebackup, यह पहले से ही इस बात का ध्यान रखता है। 3. pg_logजब वे अब आवश्यक नहीं हैं , तो पोस्टग्रैज वाल फाइलों को स्वचालित रूप से हटा देगा । आपको मैन्युअल रूप से कुछ भी नहीं करना चाहिए pg_log। अन्यथा wal_keep_segmentsपैरामीटर देखें
डैनियल वेरिटे जूल

"संग्रह" फ़ोल्डर से आपका मतलब है pg_xlog, हाँ?
नील मैकगिन

@NeilMcGuigan: बिलकुल नहीं। संग्रह फ़ोल्डर आपके संग्रह कमांड का गंतव्य फ़ोल्डर है, उदाहरण के लिए यहाँ "c: \ postgres \ foo"। pg_xlogपूरी तरह से पोस्टग्रेज द्वारा स्वचालित रूप से प्रबंधित किया जाता है, जबकि संग्रह फ़ोल्डर पूरी तरह से डीबीए द्वारा प्रबंधित किया जाता है।
डैनियल वेत्रे

मुझे लगता है कि मैं उलझन में हूँ क्योंकि फू में वालो प्रारंभिक pg_basebackup के बाद कभी नहीं बदलते हैं
नील

8

एक मौजूदा उपकरण है जो आपको एक बेहतरीन सौदा करने में मदद करेगा, वाल-ई । यह S3 को PITR के लिए archive_commandऔर प्रदान करता है restore_command

वृद्धिशील या अंतर तार्किक बैकअप करने के लिए कोई आदेश नहीं हैं । एक वृद्धिशील या अंतर नहीं ले सकता। लॉग आर्काइविंग के माध्यम से ऐसा करने का एकमात्र तरीका है।pg_dump

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

इसके अतिरिक्त, PgBarman हुक स्क्रिप्ट के माध्यम से S3 के साथ एकीकरण का समर्थन करता है, और आपके लिए बहुत सारे बैकअप रोटेशन और प्रबंधन को स्वचालित करेगा। फिर, यह विंडोज पर एक विकल्प नहीं हो सकता है।

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