मूल रूप से PostgreSQL को विभिन्न प्रमुख संस्करणों से अपग्रेड करने के तीन तरीके हैं (उदाहरण 9.1 से 9.3)।
Pg_dump के साथ अपग्रेड कर रहा है
पहले एक, और यदि संभव हो तो सिफारिश की जाती है, नए (9.3) संस्करण के बाइनरी का उपयोग करके पुराने (9.1) संस्करण का एक डंप करना है और इसे नए संस्करण से बने नए क्लस्टर पर पुनर्स्थापित करना है।
यह दृष्टिकोण है, आम तौर पर, धीमी एक, लेकिन यह भी सबसे संभव है। इसे और तेज़ बनाने के लिए एक टिप, कंसीलर का उपयोग कर रहा है। समानांतर नौकरियों के साथ डंप करने के लिए, आप कर सकते हैं:
$ pg_dump --format=directory --jobs=4 --no-synchronized-snapshots --file=/path/to/mydump mydatabase
आपको इसे प्रत्येक डेटाबेस के लिए करना होगा, --jobs=4
किसी भी मान को समायोजित करें (कुछ मानों को कोर की संख्या से परीक्षण करें, और देखें कि कौन बेहतर गति देता है)। इसके अलावा, इस चरण के दौरान, किसी को भी डेटाबेस से नहीं जोड़ा जाना चाहिए, किसी भी संशोधन के परिणामस्वरूप दूषित डंप होगा (गैर-सुरक्षित विकल्प के कारण --no-synchronized-snapshots
)।
उसके बाद, आप का उपयोग करके नए डंप में आपको पुनर्स्थापित कर सकते हैं pg_restore
:
$ createdb <options> -T template0 mydatabase
$ pg_restore --exit-on-error --jobs=4 --dbname=mydatabase /path/to/mydump
उसके बाद, ANALYZE
आपके डेटाबेस पर चलने की अनुशंसा की जाती है :
$ vacuumdb --analyze-only mydatabase
(यदि आप समय खर्च कर सकते हैं, केवल चलाने --analyze
के लिए भी VACUUM
डेटाबेस और अद्यतन दृश्यता नक्शे)
Pg_upgrad के साथ अपग्रेड करना
एक अन्य विकल्प, कंट्रिबpg_upgrade
का उपयोग करना है । --link
विधि का उपयोग यह PostgreSQL के उन्नयन का एक बहुत तेज़ तरीका प्रदान करता है।
उपयोग करने से पहले आपको संपूर्ण डेटा निर्देशिका का बैकअप बनाना होगा, क्योंकि --link
मोड में, यदि कुछ गलत होता है, तो आप डेटा (नए और पुराने) दोनों को ढीला कर सकते हैं। इसके अलावा, पूरे डॉक्स और विशेष रूप से नीचे के नोट्स पढ़ें (pg_upgrad के लिए कुछ सीमाएँ हैं)।
अद्यतन: --check
निश्चित कमांड चलाने से पहले कृपया विकल्प का उपयोग करें । साथ ही, बड़े डेटाबेस के लिए इस कमांड को स्क्रीन सेशन में चलाने की सलाह दी जाती है।
ट्रिगर आधारित प्रतिकृति टूल का उपयोग करके अपग्रेड करें
संस्करण को अपग्रेड करने के लिए एक अन्य विकल्प, ट्रिगर के आधार पर एक प्रतिकृति उपकरण का उपयोग कर रहा है। जैसे स्लोनी, बुकार्डो और लोंडिस्ट।
यह वह विकल्प है जिसके लिए कम से कम डाउनटाइम संभव है, लेकिन यह सबसे कठिन काम है।
ऐसा करने के लिए आपको एक मास्टर-स्लेव बनाने की आवश्यकता है जहां मास्टर आपका वर्तमान संस्करण है (9.1) और दास नया संस्करण (9.3) है। फिर, आप पहले सिंक (उत्पादन में अभी भी सिस्टम के साथ) प्रतीक्षा करें, उसके बाद आप डेटाबेस से जुड़े सभी को बंद कर दें (डाउनटाइम यहां शुरू होता है), दास को पकड़ने के लिए प्रतीक्षा करें, इसे (दास को) मास्टर करने के लिए और सभी क्लाइंट / एप्लिकेशन को इस नए संस्करण पर पुनर्निर्देशित करें। और आपने कल लिया।
Slony प्रलेखन, Slony का उपयोग करके PostgreSQL को अपग्रेड करने के लिए चरण-दर-चरण प्रदान करता है ।
किसको चुनना है
खैर, जैसा कि हमेशा निर्भर करता है, फिर से शुरू:
- डंप + पुनर्स्थापना सबसे विश्वसनीय है, लेकिन आम तौर पर सबसे धीमी गति (समानांतरवाद हालांकि बहुत अच्छे परिणाम दे सकता है)
- Pg_upgrad थोड़ा डाउनटाइम के लिए सबसे अच्छे विकल्पों में से एक है (यदि आप उपयोग कर सकते हैं, सीमाएँ देखें), इसमें अक्सर कुछ मिनट लगते हैं, यहां तक कि बड़े डेटाबेस के लिए भी
- ट्रिगर प्रतिकृति, इसमें कोई संदेह नहीं है कि जो कम से कम डाउनटाइम संभव (शून्य के पास) देता है, लेकिन इसे प्राप्त करना वास्तव में कठिन है और मैं केवल अनुभव के लोगों (पोस्टग्रेक्यूएल और प्रतिकृति उपकरण दोनों) के लिए सलाह देता हूं।
मुझे उम्मीद है कि मैं मदद कर सकता हूं। सौभाग्य।