PostgreSQL अपग्रेड नहीं किया जा सका

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

समस्या का ब्यौरा

PostgreSQL डेटाबेस को अपडेट करते समय, आपको गड़बड़ी का मैसेज मिलता है.

गड़बड़ी संदेश

ERROR: PostgreSQL Upgrade FAILED 

संभावित वजहें

वजह ब्यौरा समस्या हल करने के निर्देश इन पर लागू होते हैं
PostgreSQL कॉन्फ़िगरेशन फ़ाइल में गलत प्रतिरूप सेटिंग अपग्रेड के दौरान, गलत रेप्लिकेशन सेटिंग की वजह से PostgreSQL अपग्रेड नहीं हो सका. Edge के प्राइवेट क्लाउड उपयोगकर्ता
apigee उपयोगकर्ता के अलावा, किसी दूसरे इंस्टॉल उपयोगकर्ता ने PostgreSQL इंस्टॉल किया शुरुआत में PostgreSQL को किसी अन्य उपयोगकर्ता के साथ, इंस्टॉल करने वाले उपयोगकर्ता के तौर पर इंस्टॉल किया गया था. इस वजह से, ऐप्लिकेशन को अपग्रेड नहीं किया जा सका. Edge के प्राइवेट क्लाउड उपयोगकर्ता

गड़बड़ी का पता लगाने का सामान्य तरीका

अगर आपको 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. अगर आपने कभी स्लेव होस्ट बदला है, तो कॉन्फ़िगरेशन फ़ाइल को अपडेट करने के लिए, आपको /opt/apigee/customer/application/postgresql.properties में इस प्रॉपर्टी को अपडेट करना होगा pg_hba.conf:

    conf_pg_hba_replication.connection=host replication apigee
    existing_slave_ip/32 trust\ \nhost replication apigee new_slave_ip/32 trust 
    
  5. apigee-postgresql सेवा को रीस्टार्ट करें, ताकि यह पक्का किया जा सके कि ऊपर दिए गए चौथे चरण में सेट की गई प्रॉपर्टी, कॉन्फ़िगरेशन फ़ाइल pg_hba.conf में अपडेट हो जाए:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
    
  6. नीचे दिए गए निर्देश का इस्तेमाल करके, कॉन्फ़िगरेशन फ़ाइल pg_hba.conf को नहीं बदले जा सकने वाला बनाएं. इससे यह पक्का किया जा सकेगा कि PostgreSQL अपग्रेड के दौरान, उसे गलत सेटिंग में अपडेट न किया जाए:

    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. इस एसक्यूएल क्वेरी को चलाएं:

      select * from pg_authid;
      
    3. देखें कि क्या कई उपयोगकर्ता rolesuper को true पर सेट कर रहे हैं. अगर ऐसा है, तो PostgreSQL अपग्रेड नहीं हो पा रहा है, क्योंकि दूसरे उपयोगकर्ता को apigee उपयोगकर्ता के बजाय इंस्टॉल उपयोगकर्ता के तौर पर सेट किया गया है. rolesuper की भूमिका वाले और कम ओआईडी वाले किसी भी उपयोगकर्ता को इंस्टॉल किया गया उपयोगकर्ता माना जाता है.

      भूमिका से जुड़ी इस तरह की समस्या की जांच करने के लिए, नीचे दी गई एसक्यूएल क्वेरी चलाएं:

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

रिज़ॉल्यूशन

  1. इस निर्देश का इस्तेमाल करके, PostgreSQL में लॉगिन करें:

    psql -h $(hostname -i)  -U apigee
    
  2. पुराने DB में मौजूद 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 psql
    

    या

    update-alternatives --list pgsql
    

    अगर विकल्पों को manual पर सेट किया गया है, तो इस निर्देश का इस्तेमाल करके उन्हें auto पर सेट किया जा सकता है:

    update-alternatives --auto psql
    

    विकल्पों को auto पर सेट करने से, psql और postgres बाइनरी को अपग्रेड किए गए वर्शन पर सेट कर दिया जाता है. ऐसा न होने पर, बाइनरी पुराने वर्शन पर ले जाएंगी. इससे समस्याएं हो सकती हैं.