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

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান
তথ্য

লক্ষণ

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
    

    যদি সমস্যাটি থেকে যায়, তাহলে "Case: Incorrect replication settings in PostgreSQL configuration file" বিভাগে যান।

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

রোগ নির্ণয়

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

রেজোলিউশন

  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 কনফিগার ফাইলটিকে অপরিবর্তনীয় করুন:

    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 ব্যবহারকারীর পরিবর্তে অন্য একজন ব্যবহারকারীকে install user হিসেবে সেট করা হয়েছে। rolesuper ভূমিকা এবং কম OID সহ যেকোনো ব্যবহারকারীকে install ব্যবহারকারী হিসেবে বিবেচনা করা হবে।

      এই ধরণের ভূমিকা সমস্যা পরীক্ষা করতে, নিম্নলিখিত 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 বাইনারিগুলি আপগ্রেড করা সংস্করণগুলিতে নির্দেশিত হয়। অন্যথায়, বাইনারিগুলি পুরানো সংস্করণগুলিতে নির্দেশিত হবে, যা সমস্যার সৃষ্টি করতে পারে।