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

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

पर क्लिक करें.

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

PostgreSQL डेटाबेस को अपडेट करते समय कोई गड़बड़ी होती है.

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

ERROR: PostgreSQL Upgrade FAILED 

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

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

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

अगर 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
    

वजह: PostgreSQL को apigee उपयोगकर्ता के अलावा, किसी अन्य इंस्टॉल उपयोगकर्ता ने इंस्टॉल किया है

गड़बड़ी का पता लगाना

  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. पुराने डेटाबेस में मौजूद 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 बाइनरी, अपग्रेड किए गए वर्शन पर रीडायरेक्ट हो जाती हैं. ऐसा न करने पर, बाइनरी पुराने वर्शन की ओर पॉइंट करेंगी. इससे समस्याएं हो सकती हैं.