डेटा खोए बिना संस्करण 9.6 से संस्करण 10.1 में पोस्टग्रेक्यूएल को अपग्रेड कैसे करें?


207

मैं अपने रूबी के लिए रेलगाड़ी अनुप्रयोग (मैक ओएस एक्स 10.9 पर) के लिए PostgreSQL डेटाबेस का उपयोग कर रहा हूं।

क्या PostgreSQL डेटाबेस को अपग्रेड करने के बारे में कोई विस्तृत निर्देश हैं?

मुझे डर है कि मैं डेटाबेस में डेटा को नष्ट कर दूंगा या इसे गड़बड़ कर दूंगा।


8
किसी भी स्थिति में बैकअप करें।
पैट्रिक ओसिटी

जवाबों:


401

पोस्टग्रेज को स्थापित करने और अपग्रेड करने के लिए आपने घर का काढ़ा इस्तेमाल किया है, यह मानकर आप निम्न चरणों का पालन कर सकते हैं।

  1. वर्तमान पोस्टग्रैज सर्वर बंद करें:

    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  2. एक नया 10.1 डेटाबेस शुरू करें:

    initdb /usr/local/var/postgres10.1 -E utf8

  3. रन pg_upgrade (नोट: यदि आप नीचे के अलावा किसी और चीज़ से अपग्रेड कर रहे हैं तो बिन संस्करण बदलें) :

    pg_upgrade -v \
        -d /usr/local/var/postgres \
        -D /usr/local/var/postgres10.1 \
        -b /usr/local/Cellar/postgresql/9.6.5/bin/ \
        -B /usr/local/Cellar/postgresql/10.1/bin/

    -v वर्बोज़ आंतरिक लॉगिंग सक्षम करने के लिए

    -d पुराने डेटाबेस क्लस्टर कॉन्फ़िगरेशन निर्देशिका

    -D नया डेटाबेस क्लस्टर कॉन्फ़िगरेशन निर्देशिका

    -b पुरानी PostgreSQL निष्पादन योग्य निर्देशिका

    -B नई PostgreSQL निष्पादन योग्य निर्देशिका

  4. नए डेटा को यहां ले जाएं:

    cd /usr/local/var
    mv postgres postgres9.6
    mv postgres10.1 postgres
  5. पुनः आरंभ पोस्टग्रेट्स:

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  6. /usr/local/var/postgres/server.logविवरण के लिए जाँच करें और सुनिश्चित करें कि नया सर्वर ठीक से शुरू हुआ।

  7. अंत में, रेल pgरत्न को फिर से स्थापित करें

    gem uninstall pg
    gem install pg

मेरा सुझाव है कि आप पोस्टग्रैडक्यू प्रलेखन को समझने के लिए कुछ समय लें, ताकि आप निराशा को कम करने के लिए उपरोक्त चरणों में वास्तव में क्या कर रहे हैं।


8
: मैं डेटाबेस प्रारंभ करने में निम्न आदेश का उपयोग करने के लिए खड़ी रेखा से हटनाinitdb /usr/local/var/postgres9.4 -E utf8 --lc-collate=C --lc-ctype=utf-8 --lc-monetary=C --lc-numeric=C
sunsations

यह आपके गाइड कदम का पालन करें। और सब कुछ काम कर गया! बहुत बहुत धन्यवाद।
ट्रैंटोर लियू

3
delete_old_cluster.shआज्ञा से सावधान रहें । मैंने पहली बार मैन्युअल रूप से /usr/local/postgres9.3 निर्देशिकाओं को हटा दिया था, इस कमांड को चलाने की तुलना में और ऐसा लगता है कि मैंने संपूर्ण / usr / स्थानीय / var / पोस्टग्रेज निर्देशिका खो दी है (मैं इसे टाइम मशीन से पुनर्स्थापित करने में सक्षम था)
peter_v

1
यदि आप बुंडलर का उपयोग कर रहे हैं, तो आपको उपयोग करके मणि को हटा देना चाहिए gem uninstall pgलेकिन फिर बंडलर को केवल चलाने से Gemfile.lock से सही संस्करण को फिर से इंस्टॉल करना चाहिए bundle
डेनियल्रिकोड्स

1
माइनर अद्यतन: brewअब भी उपयोग करने का विकल्प है brew services stop postgresqlऔर brew services start postgresqlबजाय सीधे बुलाने की launchctl unloadऔर launchctl load
florish

59

उपरोक्त सभी उत्तरों के बावजूद, यहाँ मेरे 5 सेंट हैं।

यह किसी भी ओएस पर और किसी भी-से-किसी भी पोस्टग्रेज संस्करण पर काम करता है।

  • किसी भी चल रहे पोस्टग्रेज उदाहरण को रोकें;
  • नया संस्करण स्थापित करें और इसे शुरू करें; जांचें कि क्या आप नए संस्करण से भी जुड़ सकते हैं;
  • बदले पुराने संस्करण के postgresql.conf-> portसे 5432करने के लिए 5433;
  • पुराने संस्करण को प्रारंभ करना स्थगित कर देता है;
  • एक टर्मिनल खोलें और cdनए संस्करण binफ़ोल्डर में;
  • Daud pg_dumpall -p 5433 -U <username> | psql -p 5432 -U <username>
  • पुराने पोस्टगर्ल्स रनिंग इंस्टेंस को रोकें;

4
धन्यवाद ईसाई, यह निश्चित रूप से एक महान और आसान समाधान है, मैं सफलतापूर्वक 9.3 से 9.5 तक इस तरह से चला गया
fnicollet

3
विंडोज 2012 सर्वर पर 9.1 से 9.5 तक के उन्नयन के लिए खूबसूरती से काम किया।
रॉल्फ

4
इस समाधान की एक समस्या यह है कि अगर आपने कुछ पोस्टग्रैफ़्स कॉन्फिग फाइल्स (जैसे। postgresql.confया pg_hba.conf) को बदल दिया था, तो आपको नए इंस्टॉलेशन में उन परिवर्तनों को मैन्युअल रूप से दोहराने की आवश्यकता होगी। इसके बजाय, यदि आप उपयोग करते हैं pg_upgradecluster, तो कॉन्फ़िगर की गई फाइलें नए क्लस्टर में कॉपी हो जाती हैं: manpages.ubuntu.com/manpages/precise/man8/…
Alpha41

1
ध्यान दें कि कमांड शुरू करने के ठीक बाद आपको एक पासवर्ड प्रॉम्प्ट मिलेगा , लेकिन आपको एक-एक करके प्रत्येक पासवर्ड की पुष्टि करते हुए 2 पासवर्ड दर्ज करने होंगे। या आपको मिलेगाpg_dumpall: could not connect to database "XXX": fe_sendauth: no password supplied
Lu55

2
तकनीकी रूप से यह किसी भी-से-किसी भी संस्करण के लिए काम नहीं करेगा, सिर्फ स्रोत संस्करणों के लिए 7.0 या इसके बाद के संस्करण के रूप में, मैनुअल स्टेट्स:Current releases of the dump programs can read data from any server version back to 7.0.
मार्क टाईलेमैन्स

56

यहाँ Ubuntu उपयोगकर्ताओं के लिए समाधान है

पहले हमें पोस्टग्रेसल को रोकना होगा

sudo /etc/init.d/postgresql stop

/Etc/apt/sources.list.d/pgdg.list नामक एक नई फ़ाइल बनाएं और नीचे की रेखा जोड़ें

deb http://apt.postgresql.org/pub/repos/apt/ utopic-pgdg main

नीचे दिए गए आदेशों का पालन करें

wget -q -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-9.4
sudo pg_dropcluster --stop 9.4 main 
sudo /etc/init.d/postgresql start

अब हमारे पास सब कुछ है, बस इसे नीचे की तरह अपग्रेड करने की आवश्यकता है

sudo pg_upgradecluster 9.3 main
sudo pg_dropcluster 9.3 main

बस। ज्यादातर अपग्रेडेड क्लस्टर पोर्ट नंबर 5433 पर चलेगा। इसे नीचे कमांड से चेक करें

sudo pg_lsclusters

2
दूसरा अंतिम वाक्य जहां आप कहते हैं कि "ज्यादातर अपग्रेडेड क्लस्टर पोर्ट नंबर 5433 पर चलेगा" शायद यह कहना चाहिए कि "9.3 क्लस्टर पोर्ट नंबर 5433 पर चल रहा होगा ताकि आप यदि आवश्यक हो तो वापस कर सकें"।
एंड्रयू थैडियस मार्टिन

3
नोट: ubuntu 14.04 के लिए यूटोपिक-पीजीडीबी के बजाय "भरोसेमंद-पीजीडीबी" का उपयोग करें
जॉनी

3
ध्यान दें कि यह इन-प्लेस अपग्रेड नहीं करता है । इसलिए यह 1TB वॉल्यूम पर मेरे 700 GB DB के लिए पूरी तरह से बेकार है।
फेक नेम

16

अपडेट : यह प्रक्रिया 9.5 को कम से कम 11.5 के माध्यम से अपग्रेड करने के लिए समान है; बस आदेशों संस्करणों को प्रतिबिंबित करने के संशोधित 9.6और 10, जहां 9.6है पुराने संस्करण और 10है नया संस्करण। तदनुसार, "पुराने" और "नए" निर्देशिकाओं को समायोजित करना सुनिश्चित करें।


मैंने Ubuntu पर सिर्फ PostgreSQL 9.5 को 9.6 में अपग्रेड किया और सोचा कि मैं अपने निष्कर्षों को साझा करूंगा, क्योंकि ओएस के कुछ जोड़े / पैकेज-विशिष्ट बारीकियों के बारे में जानते हैं।

( मैं मैन्युअल रूप से डेटा को डंप और पुनर्स्थापित करना नहीं चाहता था , इसलिए यहां कई अन्य उत्तर व्यवहार्य नहीं थे।)

संक्षेप में, प्रक्रिया में पुराने संस्करण के साथ PostgreSQL के नए संस्करण को स्थापित करना शामिल है (जैसे, 9.5 और 9.6), और फिर pg_upgradeबाइनरी को चलाना , जिसमें (कुछ) विवरण https://www.postgresql.org/ पर बताया गया है डॉक्स / 9.6 / स्थिर / pgupgrad.html

इसका केवल "मुश्किल" पहलू pg_upgradeयह है कि किसी तर्क के लिए सही मान पास करने में विफलता या सही उपयोगकर्ता के रूप में लॉग-इन करने में विफलता।cd किसी कमांड को निष्पादित करने से पहले सही स्थान पर, क्रिप्टिक त्रुटि संदेशों को जन्म दे सकता है।

उबंटू (और शायद डेबियन) पर, बशर्ते आप "आधिकारिक" रेपो का उपयोग कर रहे हों, deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main , और बशर्ते आपने डिफ़ॉल्ट फाइल सिस्टम पथ या रनटाइम विकल्प को नहीं बदला है, तो निम्न कार्य को करना चाहिए।

नया संस्करण स्थापित करें (ध्यान दें कि हम 9.6स्पष्ट रूप से निर्दिष्ट करें ):

sudo apt install postgresql-9.6

एक बार इंस्टॉलेशन सफल होने के बाद, दोनों संस्करण अगल-बगल, लेकिन अलग-अलग पोर्ट पर चलेंगे। इंस्टॉलेशन आउटपुट में इसका उल्लेख है, तल पर, लेकिन इसे अनदेखा करना आसान है:

Creating new cluster 9.6/main ...
  config /etc/postgresql/9.6/main
  data   /var/lib/postgresql/9.6/main
  locale en_US.UTF-8
  socket /var/run/postgresql
  port   5433

दोनों सर्वर इंस्टेंस को रोकें (यह एक ही समय में दोनों को रोक देगा):

sudo systemctl stop postgresql

समर्पित PostgreSQL सिस्टम उपयोगकर्ता पर स्विच करें:

su postgres

अपने घर निर्देशिका में ले जाएं (ऐसा करने में विफलता त्रुटियों का कारण बनेगी):

cd ~

pg_upgrade निम्नलिखित जानकारी की आवश्यकता है ( pg_upgrade --helpहमें यह बताता है):

When you run pg_upgrade, you must provide the following information:
  the data directory for the old cluster  (-d DATADIR)
  the data directory for the new cluster  (-D DATADIR)
  the "bin" directory for the old version (-b BINDIR)
  the "bin" directory for the new version (-B BINDIR)

ये इनपुट "लंबे नामों" के साथ निर्दिष्ट किए जा सकते हैं, जिससे उन्हें कल्पना करना आसान हो जाए:

  -b, --old-bindir=BINDIR       old cluster executable directory
  -B, --new-bindir=BINDIR       new cluster executable directory
  -d, --old-datadir=DATADIR     old cluster data directory
  -D, --new-datadir=DATADIR     new cluster data directory

हमें --new-optionsस्विच को भी पास करना होगा , क्योंकि ऐसा करने में विफलता निम्न में से होती है:

connection to database failed: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/lib/postgresql/.s.PGSQL.50432"?

ऐसा इसलिए होता है क्योंकि इस स्विच की अनुपस्थिति में डिफ़ॉल्ट कॉन्फ़िगरेशन विकल्प लागू होते हैं, जिसके परिणामस्वरूप गलत कनेक्शन विकल्प का उपयोग किया जाता है, इसलिए सॉकेट त्रुटि।

नए PostgreSQL संस्करण pg_upgradeसे कमांड निष्पादित करें :

/usr/lib/postgresql/9.6/bin/pg_upgrade --old-bindir=/usr/lib/postgresql/9.5/bin --new-bindir=/usr/lib/postgresql/9.6/bin --old-datadir=/var/lib/postgresql/9.5/main --new-datadir=/var/lib/postgresql/9.6/main --old-options=-cconfig_file=/etc/postgresql/9.5/main/postgresql.conf --new-options=-cconfig_file=/etc/postgresql/9.6/main/postgresql.conf

समर्पित प्रणाली उपयोगकर्ता खाते का लॉगआउट:

exit

उन्नयन अब पूरा हो गया है, लेकिन , नया उदाहरण पोर्ट 5433(मानक डिफ़ॉल्ट 5432) के लिए बाध्य होगा , इसलिए इसे "कट-ओवर" से पहले नए उदाहरण का परीक्षण करने का प्रयास करते समय इसे ध्यान में रखें।

सर्वर को सामान्य के रूप में प्रारंभ करें (फिर से, यह पुराने और नए उदाहरण दोनों को शुरू करेगा):

systemctl start postgresql

यदि आप नए संस्करण को डिफ़ॉल्ट बनाना चाहते हैं, तो आपको प्रभावी कॉन्फ़िगरेशन फ़ाइल, जैसे /etc/postgresql/9.6/main/postgresql.conf, और यह सुनिश्चित करना होगा कि पोर्ट को इस तरह परिभाषित किया गया है:

port = 5432

यदि आप ऐसा करते हैं, या तो पुराने संस्करण के पोर्ट नंबर को 5433उसी समय (सेवाओं को शुरू करने से पहले) बदल दें, या, बस पुराने संस्करण को हटा दें (यह आपकी वास्तविक डेटाबेस सामग्री को नहीं हटाएगा; आपको apt --purge remove postgresql-9.5ऐसा होने के लिए उपयोग करने की आवश्यकता होगी; ):

apt remove postgresql-9.5

उपरोक्त आदेश सभी उदाहरणों को रोक देगा, इसलिए आपको एक बार अंतिम बार नया उदाहरण प्रारंभ करना होगा:

systemctl start postgresql

नोट के अंतिम बिंदु के रूप में, pg_upgradeअच्छी सलाह पर विचार करना न भूलें :

Upgrade Complete
----------------
Optimizer statistics are not transferred by pg_upgrade so,
once you start the new server, consider running:
    ./analyze_new_cluster.sh

Running this script will delete the old cluster's data files:
    ./delete_old_cluster.sh

1
मेरे लिए Mac Yosemite, PostgreSQL 9.2 -> 9.5: में sudo su postgres, सभी METHOD को pg_upgrad से पहले भरोसा करने के लिए दोनों स्थापना में बदल दें, pg_upgrad को / प्राइवेट / टेंडर में न चलाएं ~ के sudo mkdir /foobarसाथ काम नहीं किया chmod 777 /foobarऔर इसे वहाँ चलाया। आख़िर में pg_upgrad कमांड:/Library/PostgreSQL/9.5/bin/pg_upgrade -b /Library/PostgreSQL/9.2/bin -B /Library/PostgreSQL/9.5/bin -d /Library/PostgreSQL/9.2/data -D /Library/PostgreSQL/9.5/data -o -cconfig_file=/Library/PostgreSQL/9.2/data/postgresql.conf -O -cconfig_file=/Library/PostgreSQL/9.5/data/postgresql.conf
Jarno Argillander

1
मैं 9.5 से 11.5 तक सफलतापूर्वक अपग्रेड करने में सक्षम था, ubuntu के लिए पोस्टेड रिपॉजिटरी को जोड़ना था। और फिर बस उन चरणों का पालन करें: tecadmin.net/install-postgresql-server-on-ubuntu
shakee93

14

यदि आप homebrew और homebrew सेवाओं का उपयोग कर रहे हैं, तो आप शायद कर सकते हैं:

brew services stop postgresql
brew upgrade postgresql
brew postgresql-upgrade-database
brew services start postgresql

मुझे लगता है कि यह पूरी तरह से काम नहीं कर सकता है यदि आप उन्नत पोस्टग्रेज सुविधाओं का उपयोग कर रहे हैं, लेकिन यह मेरे लिए पूरी तरह से काम करता है।


1
MacOS Mojave 10.14.2 के लिए पूरी तरह से काम किया - धन्यवाद!
8bithero

13

उपयोगकर्ता पुस्तिका गहराई में इस विषय को शामिल किया गया। आप ऐसा कर सकते हैं:

  • pg_upgradeजगह में; या

  • pg_dumpऔर pg_restore

यदि संदेह है, तो इसे डंप के साथ करें। पुरानी डेटा निर्देशिका को न हटाएं, बस इसे ऐसे ही रखें जब कुछ गलत हो जाए / आप गलती करें; इस तरह आप बस अपने अपरिवर्तित 9.3 स्थापित पर वापस जा सकते हैं।

विवरण के लिए, मैनुअल देखें।

यदि आप फंस गए हैं, तो यह बताते हुए एक विस्तृत प्रश्न पोस्ट करें कि आप कैसे अटके हैं, कहाँ, और आपने पहले क्या प्रयास किया है। यह इस बात पर थोड़ा निर्भर करता है कि आपने PostgreSQL को कैसे स्थापित किया है, क्योंकि OS X (दुर्भाग्य से) के लिए PostgreSQL के कई अलग-अलग "वितरण" हैं। इसलिए आपको वह जानकारी प्रदान करनी होगी।


8

इस बत्तख से टकराते हुए अन्य गरीब जीवों के कंधों पर खड़े होकर, मैं योसेमाइट में अपग्रेड के बाद वापस आने और चलने के लिए इन चरणों का पालन करने में सक्षम था:

पोस्टग्रेज को स्थापित करने और अपग्रेड करने के लिए आपने घर का काढ़ा इस्तेमाल किया है, यह मानकर आप निम्न चरणों का पालन कर सकते हैं।

  1. वर्तमान पोस्टग्रैज सर्वर बंद करें:

    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  2. एक नया 9.4 डेटाबेस शुरू करें:

    initdb /usr/local/var/postgres9.4 -E utf8

  3. 9.3 पोस्टग्रेज स्थापित करें (क्योंकि यह अब मेरी मशीन पर मौजूद नहीं था):

    brew install homebrew/versions/postgresql93

  4. Yosemite अपग्रेड के दौरान निकाली गई निर्देशिकाओं को जोड़ें:

    mkdir -p /usr/local/var/postgres/{pg_tblspc,pg_twophase,pg_stat_tmp}/touch /usr/local/var/postgres/{pg_tblspc,pg_twophase,pg_stat_tmp}/.keep

  5. चलाएं pg_upgrade:

    pg_upgrade -v -d /usr/local/var/postgres -D /usr/local/var/postgres9.4 -b /usr/local/Cellar/postgresql93/9.3.5/bin/ -B /usr/local/Cellar/postgresql/9.4.0/bin/

  6. नए डेटा को यहां ले जाएं:

    cd /usr/local/var
    mv postgres postgres9.3
    mv postgres9.4 postgres
  7. पुनः आरंभ पोस्टग्रेट्स:

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  8. /usr/local/var/postgres/server.logविवरण के लिए जाँच करें और सुनिश्चित करें कि नया सर्वर ठीक से शुरू हुआ।

  9. अंत में, संबंधित पुस्तकालयों को फिर से स्थापित करें?

    pip install --upgrade psycopg2
    gem uninstall pg
    gem install pg

1
pg_upgrade -v -d / usr / local / var / postgres -D /usr/local/var/postgres9.4 -b /usr/local/Cellar/postgresqn9393/9.3.*/bin/Br/ usr / स्थानीय / तहखाना। /postgresql/9.4.*/bin/ # लघु संस्करण भिन्न हो सकते हैं।
एरॉन मैकमिलिन

1
इसके लिए धन्यवाद। मैं गलती brew cleanupसे डेटा माइग्रेट करने से पहले भागा था और इससे पोस्टग्रेज 9.3 की स्थापना रद्द हो गई थी। इससे मदद मिली। :)
मार्कक्वेजडा

5

ऐसा लगता है कि समाधान अब होमब्रे में बेक किया गया है:

$ brew info postgresql
...
==> Caveats
To migrate existing data from a previous major version of PostgreSQL run:
  brew postgresql-upgrade-database
....

1

इसने मेरे लिए यह किया।

https://gist.github.com/dideler/60c9ce184198666e5ab4

संक्षिप्त एवं सटीक। मैं ईमानदारी से PostgreSQL की हिम्मत को समझने का लक्ष्य नहीं रखता, मैं सामान प्राप्त करना चाहता हूं।


1
यह Ubuntu के pg_upgradecluster टूल का उपयोग करता है जो PostgreSQL के pg_upgrad टूल की तुलना में बहुत धीमा हो सकता है और केवल उबंटू पर उपलब्ध है।
alfonx

@alfonx सच नहीं है। मैं अपने डेबियन पर है jessie। 10 + DBs और ~ 400MB डेटाबेस डेटा की मात्रा को पलक झपकते ही बदल दिया जाता था। फिर, मैं एक एसएसडी पर एक आभासी डेबियन का उपयोग कर रहा हूं।
22

मुझे अपने आप को ठीक करने दें: pg_upgradecluster "डेबियन पोस्टग्रेक्यूएल इन्फ्रास्ट्रक्चर" का हिस्सा है, इसलिए केवल डेबियन-आधारित डिस्ट्रोस पर उपलब्ध है। गति के बारे में pg_upgrad "--link" विकल्प प्रदान करता है, जो जहाँ संभव हो डेटा की प्रतिलिपि न बनाना लिंक करता है: postgresql.org/docs/9.4/static/pgupgrad.html
alfonx

1
शायद हम विभिन्न परिणामों के लिए लक्ष्य रखते हैं। डिस्ट्रो-वाइड सॉफ़्टवेयर अपग्रेड के बाद मैंने PostgreSQL के 2 संस्करण के साथ समाप्त किया और मेरे द्वारा उपयोग किए गए डेटा पुराने संस्करण (9.3) पर अटक गए थे। इसलिए मैंने बस ऊपर दिए गए लिंक (मेरे उत्तर में) का शिकार किया और इसे उन्नत किया, पुराने "क्लस्टर" और पुराने पीजी संस्करण से छुटकारा पाया।
dimitarvp

मैंने 9.4 से 11 के साथ अपग्रेड करने की कोशिश की, pg_upgradecluster 9.4 mainलेकिन मुझे त्रुटि मिलती है: specified cluster does not exist... मुझे लगता है, मुझे पहले इस गाइड के साथ फिर से postgresql-9.4 स्थापित करना होगा: wiki.postgresql.org/wiki/Apt#Quickartart
rubo77

1

पर विंडोज मैं अलग त्रुटियों संदेशों का सामना करना पड़ जब उपयोग करने की कोशिश कर रखा pg_upgrade

मेरे लिए अभी बहुत समय बचा है:

  1. बैकअप डीबी
  2. PostgreSQL की सभी प्रतियों को अनइंस्टॉल करें
  3. 9.5 स्थापित करें
  4. DB पुनर्स्थापित करें

9.5 से 9.6 के लिए यह किया और पूरी तरह से काम किया। "नवीनतम" के बजाय आसान सटीक उन्नयन करने में सक्षम होने के लिए अच्छा है। मैंने सही इंस्टॉलर प्राप्त करने के लिए बिग एसक्यूएल का उपयोग किया है ( ओपनसीजीबीजीबीजीसीएल /पोस्टग्रेसकल / इंस्टॉकर्स.जेएसपी )।
कोडर

0

मेरा समाधान इन दो संसाधनों का एक संयोजन करना था:

https://gist.github.com/tamoyal/2ea1fcdf99c819b4e07d

तथा

http://www.gab.lc/articles/migration_postgresql_9-3_to_9-4

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

इसके अलावा, लिंक: https://help.ubuntu.com/stable/serverguide/postgresql.html एन्क्रिप्ट किए गए पासवर्ड को सेट करने में मदद की और md5 को पोस्ट करने वाले उपयोगकर्ता को प्रमाणित करने के लिए सेट किया।

सब कुछ हो जाने के बाद, serverटर्मिनल में पोस्टग्रेज वर्जन चलाने के लिए:

sudo -u postgres psql postgres

पोस्टग्रेज टर्मिनल में पासवर्ड चलाने के बाद:

SHOW SERVER_VERSION;

यह कुछ इस तरह उत्पादन होगा:

 server_version 
----------------
 9.4.5

पोस्टग्रेज की स्थापना और शुरुआत के लिए मैंने कमांड का उपयोग किया है:

> sudo bash # root
> su postgres # postgres

> /etc/init.d/postgresql start
> /etc/init.d/postgresql stop

और फिर एक फ़ाइल से डेटाबेस को पुनर्स्थापित करने के लिए:

> psql -f /home/ubuntu_username/Backup_93.sql postgres

या अगर यह एक के साथ काम नहीं करता है:

> pg_restore --verbose --clean --no-acl --no-owner -h localhost -U postgres -d name_of_database ~/your_file.dump

और यदि आप रेल का उपयोग कर रहे हैं तो bundle exec rake db:migrateकोड खींचने के बाद करें :)


0

मैक के लिए homebrew के माध्यम से:

brew tap petere/postgresql,

brew install <formula>(जैसे: brew install petere/postgresql/postgresql-9.6)

पुराने पोस्टग्रैज हटाएं:

brew unlink postgresql

brew link -f postgresql-9.6

यदि कोई त्रुटि होती है, तो प्रत्येक चरण में काढ़ा निर्देश पढ़ना और उसका पालन करना न भूलें।

इसे और देखें: https://github.com/petere/homebrew-postgresql


0

विंडोज 10 पर जब से मेरे पास एनपीएम था, मैंने रिम्राफ पैकेज स्थापित किया। npm install rimraf -g

कमांड का उपयोग करके अपने सभी डेटाबेस को एक-एक करके बैकअप लें pg_dump -U $username --format=c --file=$mydatabase.sqlc $dbname

फिर नवीनतम पोस्टग्रेसीक्यूएल संस्करण यानी 11.2 स्थापित किया जिसने मुझे इस समय पोर्ट 5433 का उपयोग करने के लिए प्रेरित किया।

PostgreSQL खदान के पुराने संस्करणों की स्थापना द्वारा पीछा किया गया था 10. नोट करें कि अनइंस्टॉलर फ़ोल्डर को न हटाने की चेतावनी दे सकता है C:\PostgreSQL\10\data। यही कारण है कि हमारे पास फ़ोल्डर को स्थायी रूप से हटाने के लिए रिम्राफ का उपयोग करके अगला चरण है और यह उप-फ़ोल्डर है।

PostgreSQL में डायरेक्टरी इंस्टॉल करें और कमांड चलाएं rimraf 10। 10 एक निर्देशिका नाम है। नोट PostgreSQL के अपने पुराने संस्करण का उपयोग करें 9.5 या कुछ।

अब C:\PostgreSQL\pg11\bin, C:\PostgreSQL\pg11\libविंडोज पर्यावरण चर में जोड़ें । ध्यान दें कि मेरा नया स्थापित संस्करण 11 है इसलिए मैं उपयोग कर रहा हूं pg11

C:\PostgreSQL\data\pg11फिर postgresql.confसंपादित करें port = 5433पर खोलें पर नेविगेट करेंport = 5432

बस। Cmd खोलें और टाइप करेंpsql -U postgres

अब आप कमांड का उपयोग करके अपने सभी समर्थित डेटाबेस को एक-एक करके पुनर्स्थापित कर सकते हैं pg_restore -U $username --dbname=$databasename $filename


0

Windows 10 पर Postgresql 11 से Postgresql 12 में अपग्रेड करने का मेरा समाधान निम्नलिखित है।

पहली टिप्पणी के रूप में आपको पोस्टग्रैस्कल सेवा को रोकने और शुरू करने में सक्षम होना चाहिए। आप Powershell में निम्न आदेशों द्वारा ऐसा कर सकते हैं।

शुरू: pg_ctl start -D “d:\postgresql\11\data”

रुकें: pg_ctl stop -D “d:\postgresql\11\data”

स्थिति: pg_ctl status -D “d:\postgresql\11\data”

अपग्रेड करने से पहले बैकअप बनाना बुद्धिमानी होगी। Postgresql 11 इंस्टेंस चलना चाहिए। फिर ग्लोबल्स को कॉपी करना है

pg_dumpall -U postgres -g -f d:\bakup\postgresql\11\globals.sql

और फिर प्रत्येक डेटाबेस के लिए

pg_dump -U postgres -Fc <database> > d:\backup\postgresql\11\<database>.fc

या

pg_dump -U postgres -Fc -d <database> -f d:\backup\postgresql\11\<database>.fc

यदि पहले से ही स्थापित नहीं किया जाता है तो Postgresql 12 (जैसा कि Postgresql 11 भी स्थापित है यह पोर्ट 5433 पर होगा)

फिर उन्नयन निम्नानुसार करना है:

1) स्टॉप Postgresql 11 सेवा (ऊपर देखें)

2) संपादित postgresql.confमें फ़ाइल d:\postgresql\12\dataऔर परिवर्तन port = 5433करने के लिएport = 5432

3) विंडोज़ उपयोगकर्ता पर्यावरण पथ संपादित करें ( windows startतब टाइप करेंenv Postgresql 12 के बजाय Postresql 11 को इंगित करने के

4) निम्नलिखित कमांड दर्ज करके अपग्रेड रन करें।

pg_upgrade `
-b c:\program files\postgresql\11\bin `
-B c:\program files\postgresql\12\bin `
-d d:\postgresql\11\data `
-D d:\postgresql\12\data --username=postgres

(अगली पंक्ति में कमांड को जारी रखने के लिए शक्तिके रूप में backtick (या backquote) का उपयोग करें)

5) और अंत में नई Postgresql 12 सेवा शुरू करें

pg_ctl start -D “d:\postgresql\12\data”


-1

मुझे लगता है कि यह आपके समाधान के लिए सबसे अच्छा लिंक है

https://sandymadaan.wordpress.com/2017/02/21/upgrade-postgresql9-3-9-6-in-ubuntu-retaining-the-databases/
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.