Postgresql pg_ * কমান্ডের (যেমন, পিজি_ডাম্প) নির্দিষ্ট সংস্করণ (8.4, 9.1) কীভাবে চালানো যায়


11

আমার পোস্টগ্র্যাস্কল সংস্করণ 8.4 এবং 9.1 ইনস্টল করা আছে। প্রদত্ত যে কোনও পোস্টগ্র্যাস্কিল কমান্ডের জন্য, আমি কমান্ডের একটি নির্দিষ্ট সংস্করণটি চালানোর জন্য কীভাবে নির্দিষ্ট করব? (যেমন, psql, pg_dump, pg_ctlcluster, pg_restore, ...)

আমার প্রশ্নটি 8.4 থেকে 9.1 পর্যন্ত আপগ্রেড করার প্রস্তুতিতে একটি পিজি_ডাম্প করার ইচ্ছা নিয়ে উদ্বুদ্ধ হয়েছে এবং আমি জানতে চাই যে আমি কোন pg_dump সংস্করণটি চালাচ্ছি।

আমি উবুন্টু 10.04 নেটিতে চলছে।

উত্তর:


15

আপনি উবুন্টুতে রয়েছেন এবং স্পষ্টতই মার্টিন পিট pg_wrapperইনস্টল করেছেন (যা বিচারক pg_ctlcluster) যা প্যাকেজটি সরবরাহ করে postgresql-commonএবং এটি স্ট্যান্ডার্ড দেবিয়ান প্যাকেজগুলির সাথে আসে। আমি দেবিয়ান একই ব্যবহার ।

একটি লিনাক্স সিস্টেমে whichশেলটি চালান যা বাস্তবায়নের জন্য কার্যকর হয় তা দেখার জন্য:

postgres@db:~$ which pg_dump
/usr/bin/pg_dump
postgres@db:~$ ls -l /usr/bin/pg_dump
lrwxrwxrwx 1 root root 37  4. Jun 18:57 /usr/bin/pg_dump -> ../share/postgresql-common/pg_wrapper

pg_dumpআসলে এটির জন্য একটি সিমিলিংক pg_wrapper, যা আপনার সাথে চালিত ডিবি ক্লাস্টারের জন্য ক্লায়েন্ট প্রোগ্রামের উপযুক্ত সংস্করণটিকে গতিশীলভাবে চয়ন pg_dumpকরে। আমি ম্যান পেজ উদ্ধৃত pg_wrapper:

এই প্রোগ্রামটি কেবল নামের সাথে একটি লিঙ্ক হিসাবে চালিত হয় যা পোস্ট /গ্রাইএসকিউএল প্রোগ্রামের সাথে / usr / lib / postgresql / version / bin এর সাথে সম্পর্কিত। এটি ব্যবহারকারীর জন্য কনফিগার করা ক্লাস্টার এবং ডাটাবেস নির্ধারণ করে এবং সেই ক্লাস্টার এবং ডাটাবেসের সাথে সংযোগ স্থাপনের জন্য কাঙ্খিত প্রোগ্রামের উপযুক্ত সংস্করণটিকে কল করে, সেই আদেশটিতে কোনও নির্দিষ্ট বিকল্প সরবরাহ করে।

   The target cluster is selected by the following means, in descending order of precedence:
   1.  explicit specification with the --cluster option
   2.  explicit specification with the PGCLUSTER environment variable
   3.  matching entry in ~/.postgresqlrc (see postgresqlrc(5)), if that file exists
   4.  matching entry in /etc/postgresql-common/user_clusters (see user_clusters(5)), if that file exists
   5.  If only one local cluster exists, that one will be selected.
   6.  If several local clusters exist, the one listening on the default port 5432 will be selected.

   If none of these rules match, pg_wrapper aborts with an error.

IOW, সঠিক সংস্করণটি স্বয়ংক্রিয়ভাবে বাছাই করা উচিত - যদি না আপনি কোনওভাবে ইনস্টলেশনটি স্ক্রু আপ করেন। আপনি সর্বদা --clusterসুনির্দিষ্ট বিকল্পটি যুক্ত করতে পারেন ।


1
কেবল একটি নোট: এটি দূরবর্তী সংযোগগুলিতে সহায়তা করে না। আমার কাছে 8.3 এবং 9.1 ক্লায়েন্ট সরঞ্জাম ইনস্টল আছে এবং এটি কোনও কারণে 8.3 এ ডিফল্ট হয়েছে। সঠিক সংস্করণটি ব্যবহার করতে আমাকে নিজেই / usr / lib এ পথটি নির্বাচন করতে হবে। আমি ভাবলাম যে নতুনটি ডিফল্টরূপে ব্যবহৃত হবে, তবে তা মনে হয় না।
সামি কুহমনেন

আপনার নতুনটির দরকার নেই, তবে এটি আপনার ডেটাবেসের সাথে মিলে যায়। জন্য কিছু উদ্দেশ্য pg_dump নতুন সংস্করণে ভালো বিকল্প, যদিও হতে পারে।
এরউইন ব্র্যান্ডসেটেটার

আপনি কি দয়া করে পরিষ্কার করতে পারেন যে। / .Postgreslqrc ফাইলটিতে ঠিক কী দরকার? আমার ক্লায়েন্ট আউটপুট -> পিএসকিএল (8.4.21, সার্ভার 9.1.13) সতর্কতা: পিএসকিএল সংস্করণ 8.4, সার্ভার সংস্করণ 9.1। কিছু পিএসকিএল বৈশিষ্ট্যগুলি কাজ নাও করতে পারে।
ক্রয়েডন ডায়াস

এটি আমার পক্ষে কাজ করবে বলে মনে হয় না। আমি 9.1 সহ একটি সার্ভারে একটি ডাম্প তৈরি করেছি এবং যখন আমি 9.1 এবং 8.4 দিয়ে অন্য সার্ভারে পুনরুদ্ধার করার চেষ্টা করেছি তখন এটি আমাকে বলে যে এটি ফাইলের ফর্ম্যাটটি সনাক্ত করতে পারে না। এছাড়াও, কোন --clusterকমান্ড লাইন বিকল্প নেই।
অ্যালেক্সিস উইলকে

4

আমি ব্যবহার করি

PGCLUSTER=8.4/main pg_dump ...
PGCLUSTER=9.1/main pg_dump ...
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.