PostgreSQL আপগ্রেড ব্যর্থতা

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

লক্ষণ

PostgreSQL ডাটাবেস আপডেট করার সময় আপনি একটি ত্রুটি পাচ্ছেন।

ত্রুটি বার্তা

ERROR: PostgreSQL Upgrade FAILED 

সম্ভাব্য কারণসমূহ

কারণ বর্ণনা সমস্যা সমাধানের নির্দেশাবলী প্রযোজ্য
PostgreSQL কনফিগারেশন ফাইলে ভুল রেপ্লিকেশন সেটিংস আপগ্রেড চলাকালীন ভুল রেপ্লিকেশন সেটিংসের কারণে PostgreSQL আপগ্রেড ব্যর্থ হয়। এজ প্রাইভেট ক্লাউড ব্যবহারকারীরা
apigee ব্যবহারকারী ব্যতীত অন্য কোনো ইনস্টল ব্যবহারকারী দ্বারা PostgreSQL ইনস্টলেশন সম্পন্ন করা হয়েছে। PostgreSQL প্রাথমিকভাবে অন্য একজন ব্যবহারকারীকে ইনস্টল ব্যবহারকারী হিসেবে দিয়ে ইনস্টল করা হয়েছিল, যার ফলে আপগ্রেড ব্যর্থ হয়। এজ প্রাইভেট ক্লাউড ব্যবহারকারীরা

সাধারণ রোগ নির্ণয়ের ধাপসমূহ

PostgreSQL ডাটাবেস আপগ্রেড করার সময় কোনো ত্রুটি দেখা দিলে, প্রথমে নিম্নলিখিত ডায়াগনস্টিক পদক্ষেপগুলি সম্পাদন করুন:

  1. PostgreSQL ডেটা ফোল্ডারটির নাম পরিবর্তন করুন:

    mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
    
  2. নিশ্চিত করুন যে আপনার মূল ব্যাকআপ ডেটা /opt/apigee/data/apigee-postgresql/pgdata- version .old/

    উদাহরণস্বরূপ:

    /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
    
  3. নিম্নলিখিত কমান্ড ব্যবহার করে /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
  4. db_upgrade কমান্ডটি পুনরায় চালান:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
    
  5. যদি আপনি নিম্নলিখিত ত্রুটিটি পান...

    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 
    
  6. db_upgrade কমান্ডটি পুনরায় চালান:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
    

    যদি সমস্যাটি অব্যাহত থাকে, তাহলে "কারণ: PostgreSQL কনফিগারেশন ফাইলে ভুল রেপ্লিকেশন সেটিংস" অংশে যান।

কারণ: PostgreSQL কনফিগারেশন ফাইলে ভুল রেপ্লিকেশন সেটিংস

রোগ নির্ণয়

  1. PostgreSQL কনফিগারেশন ফাইল /opt/apigee/apigee-postgresql/conf/pg_hba.conf এ আপনার কাঙ্ক্ষিত রেপ্লিকেশন সেটিংস আছে কিনা তা যাচাই করুন।
  2. যদি এই ফাইলটিতে প্রত্যাশিত রেপ্লিকেশন সেটিংস থাকে, তাহলে 'apigee' ব্যবহারকারী ব্যতীত অন্য কোনো ইনস্টল ব্যবহারকারী দ্বারা সম্পাদিত PostgreSQL ইনস্টলেশনে যান।
  3. অন্যথায়, সমাধানে যান।

সমাধান

  1. নিম্নলিখিত কমান্ড ব্যবহার করে PostgreSQL ডেটা ফোল্ডারটির নাম পরিবর্তন করুন:

    mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
    
  2. নিশ্চিত করুন যে মূল ব্যাকআপ ডেটা /opt/apigee/data/apigee-postgresql/pgdata- version .old/ নামের ফোল্ডারে আছে।

    উদাহরণস্বরূপ:

    /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
    
  3. নিম্নলিখিত কমান্ড ব্যবহার করে /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 
    
  4. যদি আপনি কখনো স্লেভ হোস্ট পরিবর্তন করে থাকেন, তাহলে 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 
    
  5. উপরের ধাপ ৪-এ সেট করা প্রপার্টিটি যাতে pg_hba.conf কনফিগারেশন ফাইলে আপডেট হয়, তা নিশ্চিত করতে apigee-postgresql সার্ভিসটি রিস্টার্ট করুন।

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
    
  6. PostgreSQL আপগ্রেডের সময় যাতে pg_hba.conf কনফিগারেশন ফাইলটি ভুল সেটিংস দ্বারা আপডেট না হয়, তা নিশ্চিত করতে নিম্নলিখিত কমান্ডটি ব্যবহার করে ফাইলটিকে অপরিবর্তনীয় (immutable) করুন:

    chattr +i /opt/apigee/apigee-postgresql/conf/pg_hba.conf 
    
  7. db_upgrade কমান্ডটি পুনরায় চালান:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
    
  8. pg_hba.conf কনফিগারেশন ফাইল থেকে অপরিবর্তনীয় সেটিংটি সরিয়ে ফেলুন:

    chattr -i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
    

কারণ: apigee ব্যবহারকারী ব্যতীত অন্য কোনো ইনস্টল ব্যবহারকারী দ্বারা PostgreSQL ইনস্টলেশন করা হয়েছে।

রোগ নির্ণয়

  1. এই ধাপগুলো অনুসরণ করে যাচাই করুন অন্য কোনো ব্যবহারকারীর rolesuper-এর মান true সেট করা আছে কিনা:

    1. PostgreSQL নোডে, নিম্নলিখিত কমান্ড ব্যবহার করে PostgreSQL-এ লগ ইন করুন:

      psql -h $(hostname -i)  -U apigee
      
    2. নিম্নলিখিত SQL কোয়েরিটি চালান:

      select * from pg_authid;
      
    3. একাধিক ব্যবহারকারীর rolesuper রোল true সেট করা আছে কিনা তা পরীক্ষা করুন। যদি থাকে, তাহলে PostgreSQL আপগ্রেড ব্যর্থ হচ্ছে কারণ apigee ব্যবহারকারীর পরিবর্তে অন্য কোনো ব্যবহারকারীকে ইনস্টল ব্যবহারকারী হিসেবে সেট করা হয়েছে। rolesuper রোল এবং একটি নিম্ন OID থাকা যেকোনো ব্যবহারকারীকে ইনস্টল ব্যবহারকারী হিসেবে বিবেচনা করা হয়।

      এই ধরনের রোল সমস্যা পরীক্ষা করতে, নিম্নলিখিত SQL কোয়েরিগুলো চালান:

      select oid,rolname,rolsuper from pg_roles;
      select * from pg_user;
      

সমাধান

  1. নিম্নলিখিত কমান্ড ব্যবহার করে PostgreSQL-এ লগইন করুন:

    psql -h $(hostname -i)  -U apigee
    
  2. পুরানো ডেটাবেসে বিদ্যমান apigee রোলটির নাম পরিবর্তন করে একটি অস্থায়ী ব্যবহারকারী রাখুন (উদাহরণস্বরূপ: apigee2 ):

    update pg_authid set rolname ='apigee2' where rolname = 'apigee'; 
    
  3. ধরা যাক, srcapige নামে আরেকটি ইনস্টল ইউজার ছিল। srcapige রোলটির নাম পরিবর্তন করে apigee :

    update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
    
  4. apigee2 কে srcapige ব্যবহারকারী হিসেবে পুনঃনামকরণ করুন:

    update pg_authid set rolname ='secapigee' where rolname = 'apigee2'; 
    
  5. নাম পরিবর্তন করা সকল ব্যবহারকারীর পাসওয়ার্ড আপডেট করুন:

    ALTER ROLE apigee WITH PASSWORD '<secret>'; 
    ALTER ROLE srcapige WITH PASSWORD '<secret>'; 
    
  6. নিম্নলিখিত কমান্ড ব্যবহার করে PostgreSQL ডেটা ফোল্ডারটির নাম পরিবর্তন করুন:

    mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
    
  7. নিশ্চিত করুন যে /opt/apigee/data/apigee-postgresql/pgdata- version .old/

    উদাহরণস্বরূপ:

    /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
    
  8. নিম্নলিখিত কমান্ড ব্যবহার করে /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 
    
  9. db_upgrade কমান্ডটি পুনরায় চালান:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade 
    
  10. সমস্ত 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 সাপোর্টের সাথে যোগাযোগ করুন এবং এই তথ্যগুলো সাপোর্ট টিমের সাথে শেয়ার করুন:

  1. /opt/apigee/apigee-postgresql/lib/actions/db_upgrade ফাইলের দ্বিতীয় লাইনে set -x যোগ করুন।
  2. সাধারণ ডায়াগনোসিস ধাপগুলো অনুসরণ করুন এবং db_upgrade কমান্ডের কনসোল আউটপুটটি সাপোর্ট টিমকে প্রদান করুন:

    opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
    
  3. সাপোর্ট টিমকে নিম্নলিখিত লগ ফাইলগুলো প্রদান করুন:

    /opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log
    /opt/apigee/var/log/apigee-postgresql/update.log
    
  4. অল্টারনেটিভস auto তে সেট করা আছে কিনা তা পরীক্ষা করতে নিম্নলিখিত অপারেটিং সিস্টেম কমান্ডগুলোর আউটপুট প্রদান করুন।

    update-alternatives --display psql 
    

    অথবা

    update-alternatives --display pgsql
    update-alternatives --list 
    

    যদি বিকল্পগুলি manual এ সেট করা থাকে, তাহলে আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করে সেগুলিকে auto তে সেট করতে পারেন:

    update-alternatives --auto psql
    

    অল্টারনেটিভস auto তে সেট করলে psql এবং postgres বাইনারিগুলো আপগ্রেড করা ভার্সনগুলোকে নির্দেশ করে। অন্যথায়, বাইনারিগুলো পুরোনো ভার্সনটিকে নির্দেশ করবে, যা সমস্যা সৃষ্টি করতে পারে।