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

Apigee Edge का दस्तावेज़ देखा जा रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

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

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

गड़बड़ी का मैसेज

ERROR: PostgreSQL Upgrade FAILED 

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

वजह ब्यौरा समस्या हल करने के निर्देश इन पर लागू होते हैं
PostgreSQL कॉन्फ़िगरेशन फ़ाइल में, डुप्लीकेट कॉपी बनाने की गलत सेटिंग अपग्रेड के दौरान गलत रेप्लिकेशन सेटिंग की वजह से, PostgreSQL को अपग्रेड नहीं किया जा सका. Edge Private Cloud के उपयोगकर्ता
PostgreSQL इंस्टॉलेशन को apigee उपयोगकर्ता के अलावा, किसी अन्य उपयोगकर्ता ने इंस्टॉल किया है शुरुआत में 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. यहां दी गई 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. पुराने 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 बाइनरी, अपग्रेड किए गए वर्शन पर ले जाती हैं. अगर ऐसा नहीं होता है, तो बाइनरी फ़ाइलें पुराने वर्शन पर ले जाएंगी, इससे समस्याएं हो सकती हैं.