আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
লক্ষণ
PostgreSQL ডাটাবেস আপডেট করার সময় আপনি একটি ত্রুটি পাচ্ছেন।
ত্রুটি বার্তা
ERROR: PostgreSQL Upgrade FAILED
সম্ভাব্য কারণসমূহ
| কারণ | বর্ণনা | সমস্যা সমাধানের নির্দেশাবলী প্রযোজ্য |
|---|---|---|
| PostgreSQL কনফিগারেশন ফাইলে ভুল রেপ্লিকেশন সেটিংস | আপগ্রেড চলাকালীন ভুল রেপ্লিকেশন সেটিংসের কারণে PostgreSQL আপগ্রেড ব্যর্থ হয়। | এজ প্রাইভেট ক্লাউড ব্যবহারকারীরা |
| apigee ব্যবহারকারী ব্যতীত অন্য কোনো ইনস্টল ব্যবহারকারী দ্বারা PostgreSQL ইনস্টলেশন সম্পন্ন করা হয়েছে। | PostgreSQL প্রাথমিকভাবে অন্য একজন ব্যবহারকারীকে ইনস্টল ব্যবহারকারী হিসেবে দিয়ে ইনস্টল করা হয়েছিল, যার ফলে আপগ্রেড ব্যর্থ হয়। | এজ প্রাইভেট ক্লাউড ব্যবহারকারীরা |
সাধারণ রোগ নির্ণয়ের ধাপসমূহ
PostgreSQL ডাটাবেস আপগ্রেড করার সময় কোনো ত্রুটি দেখা দিলে, প্রথমে নিম্নলিখিত ডায়াগনস্টিক পদক্ষেপগুলি সম্পাদন করুন:
PostgreSQL ডেটা ফোল্ডারটির নাম পরিবর্তন করুন:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
নিশ্চিত করুন যে আপনার মূল ব্যাকআপ ডেটা
/opt/apigee/data/apigee-postgresql/pgdata- version .old/উদাহরণস্বরূপ:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/নিম্নলিখিত কমান্ড ব্যবহার করে
/opt/apigee/data/apigee-postgresql/pgdata- version .old//opt/apigee/data/apigee-postgresql/pgdataতে ব্যাকআপ ডেটা পুনরুদ্ধার করুন:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
উদাহরণস্বরূপ:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
db_upgradeকমান্ডটি পুনরায় চালান:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
যদি আপনি নিম্নলিখিত ত্রুটিটি পান...
pg_resetxlog: could not open file "global/pg_control" for reading: No such file or directory...তারপর নিচের কমান্ডটি ব্যবহার করে
pg_control.oldফাইলটির নাম পরিবর্তন করেpg_controlরাখুন:mv /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control.old /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control
db_upgradeকমান্ডটি পুনরায় চালান:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
যদি সমস্যাটি অব্যাহত থাকে, তাহলে "কারণ: PostgreSQL কনফিগারেশন ফাইলে ভুল রেপ্লিকেশন সেটিংস" অংশে যান।
কারণ: PostgreSQL কনফিগারেশন ফাইলে ভুল রেপ্লিকেশন সেটিংস
রোগ নির্ণয়
- PostgreSQL কনফিগারেশন ফাইল
/opt/apigee/apigee-postgresql/conf/pg_hba.confএ আপনার কাঙ্ক্ষিত রেপ্লিকেশন সেটিংস আছে কিনা তা যাচাই করুন। - যদি এই ফাইলটিতে প্রত্যাশিত রেপ্লিকেশন সেটিংস থাকে, তাহলে 'apigee' ব্যবহারকারী ব্যতীত অন্য কোনো ইনস্টল ব্যবহারকারী দ্বারা সম্পাদিত PostgreSQL ইনস্টলেশনে যান।
- অন্যথায়, সমাধানে যান।
সমাধান
নিম্নলিখিত কমান্ড ব্যবহার করে PostgreSQL ডেটা ফোল্ডারটির নাম পরিবর্তন করুন:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
নিশ্চিত করুন যে মূল ব্যাকআপ ডেটা
/opt/apigee/data/apigee-postgresql/pgdata- version .old/নামের ফোল্ডারে আছে।উদাহরণস্বরূপ:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/নিম্নলিখিত কমান্ড ব্যবহার করে
/opt/apigee/data/apigee-postgresql/pgdata- version .old//opt/apigee/data/apigee-postgresql/pgdataব্যাকআপ ডেটা পুনরুদ্ধার করুন:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
উদাহরণস্বরূপ:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
যদি আপনি কখনো স্লেভ হোস্ট পরিবর্তন করে থাকেন, তাহলে
pg_hba.confকনফিগারেশন ফাইলটি আপডেট করার জন্য আপনাকে অবশ্যই/opt/apigee/customer/application/postgresql.propertiesএ নিম্নলিখিত প্রপার্টিটি আপডেট করতে হবে:conf_pg_hba_replication.connection=host replication apigee existing_slave_ip/32 trust\ \nhost replication apigee new_slave_ip/32 trustউপরের ধাপ ৪-এ সেট করা প্রপার্টিটি যাতে
pg_hba.confকনফিগারেশন ফাইলে আপডেট হয়, তা নিশ্চিত করতেapigee-postgresqlসার্ভিসটি রিস্টার্ট করুন।/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
PostgreSQL আপগ্রেডের সময় যাতে
pg_hba.confকনফিগারেশন ফাইলটি ভুল সেটিংস দ্বারা আপডেট না হয়, তা নিশ্চিত করতে নিম্নলিখিত কমান্ডটি ব্যবহার করে ফাইলটিকে অপরিবর্তনীয় (immutable) করুন:chattr +i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
db_upgradeকমান্ডটি পুনরায় চালান:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
pg_hba.confকনফিগারেশন ফাইল থেকে অপরিবর্তনীয় সেটিংটি সরিয়ে ফেলুন:chattr -i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
কারণ: apigee ব্যবহারকারী ব্যতীত অন্য কোনো ইনস্টল ব্যবহারকারী দ্বারা PostgreSQL ইনস্টলেশন করা হয়েছে।
রোগ নির্ণয়
এই ধাপগুলো অনুসরণ করে যাচাই করুন অন্য কোনো ব্যবহারকারীর rolesuper-এর মান true সেট করা আছে কিনা:
PostgreSQL নোডে, নিম্নলিখিত কমান্ড ব্যবহার করে PostgreSQL-এ লগ ইন করুন:
psql -h $(hostname -i) -U apigee
নিম্নলিখিত SQL কোয়েরিটি চালান:
select * from pg_authid;
একাধিক ব্যবহারকারীর rolesuper রোল true সেট করা আছে কিনা তা পরীক্ষা করুন। যদি থাকে, তাহলে PostgreSQL আপগ্রেড ব্যর্থ হচ্ছে কারণ apigee ব্যবহারকারীর পরিবর্তে অন্য কোনো ব্যবহারকারীকে ইনস্টল ব্যবহারকারী হিসেবে সেট করা হয়েছে। rolesuper রোল এবং একটি নিম্ন OID থাকা যেকোনো ব্যবহারকারীকে ইনস্টল ব্যবহারকারী হিসেবে বিবেচনা করা হয়।
এই ধরনের রোল সমস্যা পরীক্ষা করতে, নিম্নলিখিত SQL কোয়েরিগুলো চালান:
select oid,rolname,rolsuper from pg_roles; select * from pg_user;
সমাধান
নিম্নলিখিত কমান্ড ব্যবহার করে PostgreSQL-এ লগইন করুন:
psql -h $(hostname -i) -U apigee
পুরানো ডেটাবেসে বিদ্যমান
apigeeরোলটির নাম পরিবর্তন করে একটি অস্থায়ী ব্যবহারকারী রাখুন (উদাহরণস্বরূপ:apigee2):update pg_authid set rolname ='apigee2' where rolname = 'apigee';
ধরা যাক,
srcapigeনামে আরেকটি ইনস্টল ইউজার ছিল।srcapigeরোলটির নাম পরিবর্তন করেapigee:update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
apigee2কেsrcapigeব্যবহারকারী হিসেবে পুনঃনামকরণ করুন:update pg_authid set rolname ='secapigee' where rolname = 'apigee2';
নাম পরিবর্তন করা সকল ব্যবহারকারীর পাসওয়ার্ড আপডেট করুন:
ALTER ROLE apigee WITH PASSWORD '<secret>'; ALTER ROLE srcapige WITH PASSWORD '<secret>';নিম্নলিখিত কমান্ড ব্যবহার করে PostgreSQL ডেটা ফোল্ডারটির নাম পরিবর্তন করুন:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
নিশ্চিত করুন যে
/opt/apigee/data/apigee-postgresql/pgdata- version .old/উদাহরণস্বরূপ:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/নিম্নলিখিত কমান্ড ব্যবহার করে
/opt/apigee/data/apigee-postgresql/pgdata- version .old/ফোল্ডারের ডেটা //opt/apigee/data/apigee-postgresql/pgdataতে পুনরুদ্ধার করুন:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
উদাহরণস্বরূপ:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
db_upgradeকমান্ডটি পুনরায় চালান:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
সমস্ত
apigee-qpiddএবংedge-qpid-serverপরিষেবা পুনরায় চালু করুন:/opt/apigee/apigee-service/bin/apigee-service apigee-qpidd restart/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
যদি সমস্যাটি এখনও থেকে যায়, তাহলে 'অবশ্যই ডায়াগনস্টিক তথ্য সংগ্রহ করুন' অংশে যান।
রোগ নির্ণয়ের তথ্য অবশ্যই সংগ্রহ করতে হবে
উপরের সমস্যা সমাধানের নির্দেশাবলী অনুসরণ করার পরেও যদি সমস্যাটি থেকে যায়, তাহলে নিম্নলিখিত ডায়াগনস্টিক তথ্য সংগ্রহ করুন। Apigee সাপোর্টের সাথে যোগাযোগ করুন এবং এই তথ্যগুলো সাপোর্ট টিমের সাথে শেয়ার করুন:
-
/opt/apigee/apigee-postgresql/lib/actions/db_upgradeফাইলের দ্বিতীয় লাইনেset -xযোগ করুন। সাধারণ ডায়াগনোসিস ধাপগুলো অনুসরণ করুন এবং
db_upgradeকমান্ডের কনসোল আউটপুটটি সাপোর্ট টিমকে প্রদান করুন:opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
সাপোর্ট টিমকে নিম্নলিখিত লগ ফাইলগুলো প্রদান করুন:
/opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log /opt/apigee/var/log/apigee-postgresql/update.logঅল্টারনেটিভস
autoতে সেট করা আছে কিনা তা পরীক্ষা করতে নিম্নলিখিত অপারেটিং সিস্টেম কমান্ডগুলোর আউটপুট প্রদান করুন।update-alternatives --display psql
অথবা
update-alternatives --display pgsqlupdate-alternatives --listযদি বিকল্পগুলি
manualএ সেট করা থাকে, তাহলে আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করে সেগুলিকেautoতে সেট করতে পারেন:update-alternatives --auto psql
অল্টারনেটিভস
autoতে সেট করলেpsqlএবংpostgresবাইনারিগুলো আপগ্রেড করা ভার্সনগুলোকে নির্দেশ করে। অন্যথায়, বাইনারিগুলো পুরোনো ভার্সনটিকে নির্দেশ করবে, যা সমস্যা সৃষ্টি করতে পারে।