ডেটা না হারিয়ে PostgreSQL কীভাবে 9.6 সংস্করণ থেকে 10.1 সংস্করণে আপগ্রেড করবেন?


207

আমি আমার রুবি অন রেল অ্যাপ্লিকেশনটির জন্য পোস্টগ্র্রেএসকিউএল ডাটাবেস ব্যবহার করছি (ম্যাক ওএস এক্স ১০.৯-এ)।

পোস্টগ্রিএসকিউএল ডাটাবেস কীভাবে আপগ্রেড করা যায় সে সম্পর্কে কী কোনও বিশদ নির্দেশনা রয়েছে?

আমি ভয় করি যে আমি ডাটাবেসে থাকা ডেটাটি নষ্ট করে ফেলব বা এলোমেলো করব।


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

আমি হতাশা হ্রাস করতে উপরের পদক্ষেপগুলিতে ঠিক কী করছেন তা বোঝার জন্য PostgreSQL ডকুমেন্টেশন পড়ার জন্য আপনাকে কিছুটা সময় দেওয়ার পরামর্শ দিচ্ছি ।


8
আমি ডাটাবেস আরম্ভ করতে নিম্নলিখিত কমান্ডটি ব্যবহার করতে চাই:initdb /usr/local/var/postgres9.4 -E utf8 --lc-collate=C --lc-ctype=utf-8 --lc-monetary=C --lc-numeric=C
রোদ

এটি ধাপে ধাপে আপনার গাইড অনুসরণ করে। এবং সবকিছু কাজ! তোমাকে অনেক ধন্যবাদ.
ট্র্যান্টর লিউ

3
delete_old_cluster.shআদেশের সাথে সাবধানতা অবলম্বন করুন । এই কমান্ডটি চালানোর চেয়ে আমি প্রথমে আমি /usr/local/postgres9.3 ডিরেক্টরিগুলি নিজেই মুছে ফেলেছিলাম এবং মনে হয় আমি পুরো / usr / স্থানীয় / var / postgres ডিরেক্টরিটি হারিয়েছি (আমি টাইম মেশিন থেকে এটি পুনরুদ্ধার করতে সক্ষম
হয়েছি

1
আপনি Bundler ব্যবহার করেন, তাহলে আপনি ব্যবহার মণি মুছে ফেলা আবশ্যক gem uninstall pgকিন্তু তারপর দিন bundler কেবল চালিয়ে 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;
  • পুরানো সংস্করণ postgres উদাহরণ শুরু করুন;
  • একটি টার্মিনাল এবং cdনতুন সংস্করণ binফোল্ডারে খুলুন ;
  • চালান pg_dumpall -p 5433 -U <username> | psql -p 5432 -U <username>
  • পুরানো পোস্টগ্রিজ চলমান উদাহরণ বন্ধ করুন;

4
ধন্যবাদ খ্রিস্টান, এটি অবশ্যই একটি দুর্দান্ত এবং সহজ সমাধান, আমি সাফল্যের সাথে 9.3 থেকে 9.5 পর্যন্ত
চলেছি

3
একটি উইন্ডোজ 2012 সার্ভারে 9.1 থেকে 9.5 থেকে আপগ্রেড করার জন্য সুন্দরভাবে কাজ করেছেন।
রল্ফ

4
এই সমাধানটির একটি সমস্যা হ'ল আপনি যদি কিছু পোস্টগ্রিস কনফিগারেশন ফাইল (যেমন। postgresql.confবা pg_hba.conf) পরিবর্তন করে থাকেন তবে আপনাকে নতুন ইনস্টলেশনটিতে সেই পরিবর্তনগুলি ম্যানুয়ালি প্রতিলিপি করতে হবে। পরিবর্তে, আপনি যদি ব্যবহার করেন তবে pg_upgradeclusterকনফিগারেশন ফাইলগুলি নতুন ক্লাস্টারে অনুলিপি করা হবে: manpages.ubuntu.com/manpages/precise/man8/…
Alphaaa

1
নোট করুন যে আপনি কমান্ডটি শুরু করার ঠিক পরে আপনি একটি পাসওয়ার্ড প্রম্পট পাবেন, তবে আপনাকে এন্টার দ্বারা প্রতিটি নিশ্চিত করে একটি করে দুটি পাসওয়ার্ড লিখতে হবে। অথবা আপনি পাবেনpg_dumpall: could not connect to database "XXX": fe_sendauth: no password supplied
Lu55

2
প্রযুক্তিগতভাবে এটি কোনও-কোনও-কোনও সংস্করণের জন্য কাজ করবে না, কেবল উত্স সংস্করণগুলির জন্য 7.০ বা তার বেশি, যেমন ম্যানুয়ালটিতে বলা হয়েছে:Current releases of the dump programs can read data from any server version back to 7.0.
মার্ক টিলেম্যানস

56

উবুন্টুর সমাধান এখানে ব্যবহারকারীদের

প্রথমে আমাদের পোস্টগ্র্যাস্কল বন্ধ করতে হবে

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 এ চলবে below নীচের কমান্ড দিয়ে এটি পরীক্ষা করুন

sudo pg_lsclusters

2
দ্বিতীয় থেকে শেষ বাক্যে যেখানে আপনি বলছেন "বেশিরভাগ আপগ্রেড ক্লাস্টার পোর্ট নম্বর 5433 এ চলবে" সম্ভবত বলা উচিত "9.3 ক্লাস্টারটি পোর্ট নম্বর 5433 তে চলবে যাতে প্রয়োজনে আপনি ফিরে যেতে পারেন"।
অ্যান্ড্রু থাডিয়াস মার্টিন

3
দ্রষ্টব্য: উবুন্টু 14.04 এর জন্য ইউটোপিক-পিজিডিবির পরিবর্তে "বিশ্বাসযোগ্য-পিজিডিবি" ব্যবহার করুন
জনি

3
লক্ষ্য করুন এই আছে না একটি ইন-জায়গা আপগ্রেড না। এটি 1TB ভলিউমে আমার 700 গিগাবাইট ডিবি এর জন্য সম্পূর্ণ অকেজো।
ভুয়া নাম

16

আপডেট : কমপক্ষে 11.5 এর মধ্যে 9.5 আপগ্রেড করার জন্য এই প্রক্রিয়াটি সমান; কেবল কমান্ড সংস্করণ প্রতিফলিত সংশোধন 9.6এবং 10, যেখানে 9.6হয় পুরাতন সংস্করণ এবং 10হয় নতুন সংস্করণ। "পুরানো" এবং "নতুন" ডিরেক্টরিগুলিও সেই অনুসারে সামঞ্জস্য করতে ভুলবেন না।


আমি সবেমাত্র উবার্টুতে পোস্টগ্র্যাসএসকিউএল 9.5 থেকে 9.6 এ আপগ্রেড করেছি এবং ভেবেছিলাম যে আমি আমার অনুসন্ধানগুলি ভাগ করব, কারণ সচেতন হওয়ার জন্য বেশ কয়েকটি ওএস / প্যাকেজ-নির্দিষ্ট সূক্ষ্ম আছে।

( আমি ম্যানুয়ালি ডেটা ডাম্প এবং পুনরুদ্ধার করতে চাইনি , তাই এখানে অন্যান্য উত্তরগুলির বেশ কয়েকটি কার্যকর ছিল না))

সংক্ষেপে, প্রক্রিয়াটি পুরাতন সংস্করণ (যেমন, 9.5 এবং 9.6) এর সাথে পোস্টগ্র্রেএসকিউএল এর নতুন সংস্করণটি ইনস্টল করে এবং তারপরে pg_upgradeবাইনারি চালায় , যা https://www.postgresql.org/ এ (কিছু) বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে ডক্স / 9.6 / স্ট্যাটিক / পগআপগ্রেড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

ডেডিকেটেড পোস্টগ্রিসএসকিউএল সিস্টেম ব্যবহারকারীতে স্যুইচ করুন:

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"?

এটি ঘটে কারণ ডিফল্ট কনফিগারেশন বিকল্পগুলি এই স্যুইচের অনুপস্থিতিতে প্রয়োগ করা হয়, যার ফলস্বরূপ ভুল সংযোগ বিকল্প ব্যবহার করা হচ্ছে, সুতরাং সকেটের ত্রুটি।

সম্পাদন 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
আমাকে ম্যাক ইয়োসেমাইট, পোস্টগ্রি 9.2 এ জন্য -> 9.5: sudo su postgres, pg_upgrade সামনে ট্রাস্ট উভয় ইনস্টলেশন এর pg_hba.conf সমস্ত পদ্ধতি পরিবর্তন, ইন / ব্যক্তিগত / tmp -র পরিবর্তে pg_upgrade চালাচ্ছেন না ~ তাই কাজ করে নি sudo mkdir /foobarসঙ্গে chmod 777 /foobarএবং সেখানে স্থাপিত হয়। শেষ অবধি পিজি_আপগ্রেড কমান্ড:/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
জার্নো আরগিল্যান্ডার

1
আমি 9.5 থেকে 11.5 এ সাফল্যের সাথে আপগ্রেড করতে সক্ষম হয়েছি উবুন্টুতে পোস্টগ্রিজ অ্যাপ রিপোজিটরি যুক্ত করতে হয়েছিল। : এবং তারপর ঐ পদক্ষেপগুলি অনুসরণ করুন tecadmin.net/install-postgresql-server-on-ubuntu
shakee93

14

আপনি যদি হোমব্রিউ এবং হোমব্রিউ পরিষেবা ব্যবহার করছেন তবে আপনি সম্ভবত এটি করতে পারেন:

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

আমি মনে করি আপনি যদি উন্নত পোস্টগ্রিগ বৈশিষ্ট্যগুলি ব্যবহার করেন তবে এটি সম্পূর্ণরূপে কাজ করবে না, তবে এটি আমার পক্ষে নিখুঁতভাবে কাজ করেছে।


1
ম্যাকোস মোজাভেভ 10.14.2 এর জন্য নিখুঁতভাবে কাজ করেছেন - ধন্যবাদ!
8

13

ব্যবহারকারী ম্যানুয়াল গভীরতা এই বিষয়ে জুড়ে। আপনি পারেন:

  • pg_upgradeজায়গায়; অথবা

  • pg_dumpএবং pg_restore

যদি সন্দেহ হয় তবে ডাম্প দিয়ে এটি করুন। পুরানো ডেটা ডিরেক্টরিটি মুছবেন না, কিছু ভুল হয়ে যাওয়ার পরে / আপনার কোনও ভুল হয়ে যাওয়ার পরে রাখুন; এইভাবে আপনি কেবল আপনার অপরিবর্তিত 9.3 ইনস্টলটিতে ফিরে যেতে পারেন।

বিশদ জন্য, ম্যানুয়াল দেখুন।

আপনি যদি আটকে থাকেন তবে আপনি কীভাবে আটকেছেন, কোথায় এবং আপনি প্রথমে কী চেষ্টা করেছেন সে সম্পর্কে একটি বিশদ প্রশ্ন পোস্ট করুন। এটি আপনি পোস্টগ্র্রেএসকিউএলও কীভাবে ইনস্টল করেছেন তার উপর কিছুটা নির্ভর করে, কারণ ওএস এক্সের জন্য পোস্টগ্র্রেএসকিউএলের বিভিন্ন "বিতরণ" রয়েছে (দুর্ভাগ্যক্রমে)। সুতরাং আপনাকে সেই তথ্য সরবরাহ করতে হবে।


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
পিজি_আপগ্রেড-ভি -ডি / ইউএসআর / লোকাল / ভার / পোস্টগ্র্যাস -ডি / ওসিআর / লোকাল /vvar / পোষ্টগ্রেস 9.4 -বি / ইউএসআর / লোকাল / সেলার / পোস্টস্ট্রেসক্লিল 93/9.3.*/bin/-বি / ইউএসআর / লোকাল / সেলার /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

সংক্ষিপ্ত এবং বিন্দু। আমি সতর্কতার সাথে পোস্টগ্র্রেএসকিউএল এর সাহস বোঝার লক্ষ্য রাখি না, আমি জিনিস শেষ করতে চাই।


1
এটি উবুন্টুর pg_upgradecluster সরঞ্জাম ব্যবহার করে যা পোস্টগ্র্রেএসকিউএল এর পিজি_আপগ্রেড সরঞ্জামের চেয়ে অনেক ধীর হতে পারে এবং অবশ্যই উবুন্টুতে উপলভ্য।
alfonx

@alfonx সত্য নয় আমি আমার ডেবিয়ান আছে jessie। 10+ ডিবি ছিল এবং পরিমাণে in 400MB ডাটাবেস ডেটা একটি চোখের পলকে রূপান্তরিত হয়েছিল। তারপরে আবার, আমি একটি এসএসডি-তে ভার্চুয়াল ডেবিয়ান ব্যবহার করছি।
dititarvp

আমাকে নিজেকে সংশোধন করতে দাও: pg_upgradecluster "দেবিয়ান পোস্টগ্র্রেএসকিউএল অবকাঠামো" এর অংশ, সুতরাং কেবলমাত্র দেবিয়ান-ভিত্তিক ডিস্ট্রোজে উপলব্ধ। গতি সম্পর্কে পিজি_আপগ্রেড "- লিঙ্ক" বিকল্পটি উপলব্ধ করে, যেখানে লিঙ্কযুক্ত
লিঙ্কগুলি

1
সম্ভবত আমরা বিভিন্ন ফলাফল জন্য লক্ষ্য। একটি ডিসট্রো-ওয়াইড সফ্টওয়্যার আপগ্রেড করার পরে আমি পোস্টগ্রেএসকিউএল এর 2 সংস্করণ এবং আমার প্রকল্পগুলি ব্যবহার করা ডেটা পুরানো সংস্করণে আটকেছিল (9.3)। সুতরাং আমি কেবল উপরের লিঙ্কটি শিকার করেছি (আমার উত্তরে) এবং এটি আপগ্রেড করেছি, পুরানো "ক্লাস্টার" এবং পুরানো পিজি সংস্করণ থেকে মুক্তি পেয়েছি।
Dimitarvp

আমি 9.4 থেকে 11 এ আপগ্রেড করার চেষ্টা করেছি pg_upgradecluster 9.4 mainতবে আমি ত্রুটিটি পেয়েছি ত্রুটি: specified cluster does not exist... আমার ধারণা, আমাকে এই গাইডের সাথে প্রথমে পোস্টগ্র্যাসকিএল
রুবো

1

উপর উইন্ডোজ আমি বিভিন্ন ত্রুটি বার্তা মুখোমুখি যখন ব্যবহার করার চেষ্টা রাখা pg_upgrade

কেবলমাত্র আমার জন্য অনেক সময় বাঁচিয়েছে:

  1. ব্যাকআপ ডিবি
  2. PostgreSQL এর সমস্ত অনুলিপি আনইনস্টল করুন
  3. 9.5 ইনস্টল করুন
  4. ডিবি পুনরুদ্ধার করুন

9.5 থেকে 9.6 এ এটি করেছেন এবং পাশাপাশি পুরোপুরি কাজ করেছেন। "সর্বশেষ" এর চেয়ে সহজ সঠিক আপগ্রেড করতে সক্ষম হওয়া ভাল to সঠিক ইনস্টলার ( openscg.com/bigsql/postgresql/installers.jsp ) পেতে আমি বিগ এসকিউএল ব্যবহার করেছি ।
কোডার

0

আমার সমাধানটি ছিল এই দুটি সংস্থার সংমিশ্রণ করতে:

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

এবং

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

দ্বিতীয় এক সাহায্য করেছে আরো তারপর প্রথম এক। এছাড়াও না, কিছু যেমন প্রয়োজন হয় না তেমন ধাপগুলি অনুসরণ করবেন না। এছাড়াও, যদি আপনি পোস্টগ্রিস কনসোলের মাধ্যমে ডেটা ব্যাকআপ করতে সক্ষম না হন তবে আপনি বিকল্প পদ্ধতিটি ব্যবহার করতে পারেন এবং পিজএডমিন 3 বা অন্য কোনও প্রোগ্রামের সাথে এটি ব্যাকআপ নিতে পারেন, যেমন আমি আমার ক্ষেত্রে করেছি।

এছাড়াও, লিঙ্কটি: https://help.ubuntu.com/stable/serverguide/postgresql.html এনক্রিপ্ট করা পাসওয়ার্ড সেট করতে এবং পোস্টগ্রিজ ব্যবহারকারীকে প্রমাণীকরণের জন্য এমডি 5 সেট করতে সহায়তা করেছে।

সব শেষ হয়ে গেলে, 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

হোমব্রিউয়ের মাধ্যমে ম্যাকের জন্য:

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

কমান্ডটি ব্যবহার করে আপনার সমস্ত ডাটাবেসগুলিকে একে একে ব্যাকআপ করুন up pg_dump -U $username --format=c --file=$mydatabase.sqlc $dbname

তারপরে সর্বশেষ পোস্টগ্রিএসকিউএল সংস্করণ ইনস্টল করা হয়েছে অর্থাৎ ১১.২ যা আমাকে এই বারে 5433 পোর্টটি ব্যবহার করতে অনুরোধ করেছিল।

পোস্টগ্র্রেএসকিউএল খনিটি পুরানো সংস্করণগুলির আনইনস্টল অনুসারে 10 ছিল Note নোটটি আনইনস্টলারটি ফোল্ডারটি মোছা না দেওয়ার একটি সতর্কতা দিতে পারে তা নোট করুন C:\PostgreSQL\10\data। এই কারণেই ফোল্ডারটি স্থায়ীভাবে মুছে ফেলার জন্য রিম্রাফ ব্যবহার করে আমাদের পরবর্তী পদক্ষেপ রয়েছে এবং এটি উপ-ফোল্ডারগুলি রয়েছে।

PostgreSQL ইনস্টল ডিরেক্টরিতে পরিবর্তন করুন এবং কমান্ডটি চালিয়ে গেল rimraf 10। 10 একটি ডিরেক্টরি নাম। নোট আপনার পোস্টগ্রিএসকিউএল এর পুরানো সংস্করণ অর্থাত্ 9.5 বা কিছু ব্যবহার করুন।

এখন C:\PostgreSQL\pg11\bin, C:\PostgreSQL\pg11\libউইন্ডোজ পরিবেশগত পরিবর্তনশীলগুলিতে যুক্ত করুন। নোট করুন আমার নতুন ইনস্টল করা সংস্করণটি 11 তাই আমি কেন ব্যবহার করছি pg11

নেভিগেট করতে C:\PostgreSQL\data\pg11তারপর ওপেন postgresql.confসম্পাদন করা port = 5433থেকেport = 5432

এটাই. খুলুন সিএমডি এবং টাইপ করুনpsql -U postgres

আপনি এখন কমান্ডটি ব্যবহার করে আপনার সমস্ত ব্যাকড ডাটাবেস একে একে পুনরুদ্ধার করতে পারেন pg_restore -U $username --dbname=$databasename $filename


0

উইন্ডোজ 10-এ পোস্টগ্রেস্কেল 11 থেকে পোস্টগ্র্যাস্কেল 12-তে আপগ্রেড করার জন্য আমার সমাধানটি নীচে রয়েছে।

প্রথম মন্তব্য হিসাবে আপনাকে পোস্টগ্রেস্কেল পরিষেবা বন্ধ করতে এবং শুরু করতে হবে। আপনি পাওয়ারশেলের নিম্নলিখিত কমান্ডগুলি দ্বারা এটি করতে পারেন।

শুরু করুন: 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

যদি ইতিমধ্যে পোস্টগ্র্যাস্কল 12 ইনস্টল না করা হয় (পোস্টগ্র্যাসকিএল 11 ইনস্টল করা হয় এটি পোর্টেও হবে 5433)

তারপরে নিম্নোক্তভাবে আপগ্রেড করতে:

1) Postgresql 11 পরিষেবা বন্ধ করুন (উপরে দেখুন)

2) postgresql.confফাইলটি সম্পাদনা করুন d:\postgresql\12\dataএবং এতে পরিবর্তন port = 5433করুনport = 5432

3) উইন্ডোজ ব্যবহারকারীর পরিবেশের পথটি সম্পাদনা করুন ( windows startতারপরে টাইপ করুন env) পোস্টগ্র্যাসেল 11 এর পরিবর্তে পোস্টগ্র্যাস্কেল 12-এ নির্দেশ করুন

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

(পাওয়ারশেলে ব্যাকটিক (বা ব্যাককোট) ব্যবহার করুন - পরবর্তী লাইনে কমান্ড চালিয়ে যেতে)

5) এবং অবশেষে নতুন পোস্টগ্র্যাস্কল 12 পরিষেবা শুরু করুন

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


-1

আমি মনে করি পোস্টগ্রাগেসগুলি 9.6 এ আপডেট করার জন্য এটি আপনার সমাধানের জন্য সেরা লিঙ্ক

https://sandymadaan.wordpress.com/2017/02/21/upgrade-postgresql9-3-9-6-in-ubuntu-retaining-the-databases/
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.