ubuntu सर्वर पर 9.1 से 9.3 तक पोस्टग्रेज से अपग्रेड करना


27

मेरे पास अपना प्रोडक्शन सर्वर (ubuntu 13.10) है जो पोस्टग्रैक्स्ल 9.1 के साथ चल रहा है।

मैं 9.3 की कुछ विशेषताओं का उपयोग करना चाहता हूं, इसलिए अपग्रेड करना चाहता हूं।

क्या कोई मुझे 9.1 से 9.3 में अपग्रेड करने में मदद कर सकता है ताकि 30 मिनट से अधिक न हो। या ऐसा?

प्रमुख चिंता डेटा हानि या फ़ाइल अतिरेक को रोक रही है।


2
पोस्टग्रैज डॉक्स वास्तव में अच्छे हैं। google.co.uk/#q=postgres+upgrade+from+9.1+to+9.3
Phil14

मैं प्रति डीबीए नहीं हूं (विषम पोस्टग्रेज स्थापित करने और यहां तक ​​कि माइडरस्कल;}) की देखभाल करना है, और यह पोस्ट पुरानी है, लेकिन आप X.04 के बजाय किसी भी Ubuntu X.10 रिलीज के लिए उपयोग क्यों करेंगे। LTS?
tink

जवाबों:


28

मूल रूप से 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 थोड़ा डाउनटाइम के लिए सबसे अच्छे विकल्पों में से एक है (यदि आप उपयोग कर सकते हैं, सीमाएँ देखें), इसमें अक्सर कुछ मिनट लगते हैं, यहां तक ​​कि बड़े डेटाबेस के लिए भी
  • ट्रिगर प्रतिकृति, इसमें कोई संदेह नहीं है कि जो कम से कम डाउनटाइम संभव (शून्य के पास) देता है, लेकिन इसे प्राप्त करना वास्तव में कठिन है और मैं केवल अनुभव के लोगों (पोस्टग्रेक्यूएल और प्रतिकृति उपकरण दोनों) के लिए सलाह देता हूं।

मुझे उम्मीद है कि मैं मदद कर सकता हूं। सौभाग्य।


क्या pg_upgrad 8.4.17 से 9.3 तक भी काम करेगा?
जॉनमेरिनो

@ जॉनमोर्लिनो: हाँ, pg_upgrad 8.3 या उच्चतर संस्करणों से अपग्रेड हो सकता है (इसमें 8.3, 8.4, 9.0, 9.1, 9.2, ...) शामिल हैं।
माथेउसल

"नए (9.3) संस्करण के बाइनरी का उपयोग करना" आवश्यक नहीं हो सकता है .. मुझे कम से कम यह उस बिट के बिना काम करने के लिए मिला है।
Theicfire

@ यह वास्तव में दोनों संस्करणों (पुराने और नए एक) पर निर्भर करता है, यह काम कर सकता है या नहीं। वास्तव में यह ज्यादातर मामलों में काम करेगा, कुछ त्रुटि संदेशों को छोड़कर जो आमतौर पर अंतर्ग्रहण किए जा सकते हैं ... आधिकारिक प्रक्रिया नए संस्करण के बाइनरी का उपयोग करना है, हालांकि!
MatheusOl

आप सभी डेटाबेस को एक बार में pg_dumpallडंप करने के लिए उपयोग करने में सक्षम हो सकते हैं।
मैथ्यू

7

पोस्टग्रेज को 9.1 से 9.3 अपग्रेड करने के लिए इन चरणों का पालन करें:

  1. Ubuntu के लिए निम्नलिखित सामग्री के साथ सबसे पहले एक /etc/apt/source.list.d/pgdg.list फ़ाइल बनाएं:

    deb http://apt.postgresql.org/pub/repos/apt/ saucy-pgdg main 
  2. निम्नलिखित कुंजी जोड़ें:

     wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
  3. पोस्टग्रेज के साथ डेवलपर टूल इंस्टॉल करें:

    sudo apt-get install postgresql-9.3 postgresql-contrib-9.3 postgresql-server-dev-9.3 pgadmin3
  4. अपनी स्थापना की पुष्टि करने के लिए, हम "sudo pg_lsclusters" में प्रवेश करेंगे और चल रहे PostgreSQL के हमारे दो संस्करणों को देखेंगे।

  5. डाक सेवा बंद करो:

    sudo service postgresql stop
  6. 9.3 स्थापित द्वारा बनाए गए डिफ़ॉल्ट 9.3 क्लस्टर को हटा दें।

    sudo pg_dropcluster --stop 9.3 main
  7. मौजूदा 9.1 क्लस्टर से एक नया 9.3 क्लस्टर बनाएँ।

    sudo pg_upgradecluster 9.1 main
  8. पुष्टि करें कि नया क्लस्टर लोड हो रहा है और हम PostgreSQL 9.3 चला रहे हैं।

    sudo service postgresql start 9.3
  9. अगर सब कुछ घटकर 9.1 क्लस्टर हो जाता है।

    pg_dropcluster --stop 9.1 main

अधिक जानकारी के लिए इस लिंक को देखें


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