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

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

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

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

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