আপডেট : কমপক্ষে 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