Apigee Edge का दस्तावेज़ देखा जा रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
इस पेज पर जाएं
Apigee X दस्तावेज़. जानकारी
समस्या का ब्यौरा
PostgreSQL डेटाबेस को अपडेट करते समय, आपको गड़बड़ी का मैसेज मिलता है.
गड़बड़ी का मैसेज
ERROR: PostgreSQL Upgrade FAILED
संभावित वजहें
वजह | ब्यौरा | समस्या हल करने के निर्देश इन पर लागू होते हैं |
---|---|---|
PostgreSQL कॉन्फ़िगरेशन फ़ाइल में, डुप्लीकेट कॉपी बनाने की गलत सेटिंग | अपग्रेड के दौरान गलत रेप्लिकेशन सेटिंग की वजह से, PostgreSQL को अपग्रेड नहीं किया जा सका. | Edge Private Cloud के उपयोगकर्ता |
PostgreSQL इंस्टॉलेशन को apigee उपयोगकर्ता के अलावा, किसी अन्य उपयोगकर्ता ने इंस्टॉल किया है | शुरुआत में PostgreSQL को, किसी अन्य उपयोगकर्ता के साथ, 'इंस्टॉल उपयोगकर्ता' के तौर पर इंस्टॉल किया गया था. इस वजह से, आपका ऐप्लिकेशन अपग्रेड नहीं हो पाता. | Edge के प्राइवेट क्लाउड उपयोगकर्ता |
गड़बड़ी का पता लगाने के सामान्य तरीके
अगर PostgreSQL डेटाबेस को अपग्रेड करते समय आपको कोई गड़बड़ी मिलती है, तो पहले गड़बड़ी का पता लगाने के लिए यह तरीका अपनाएं:
PostgreSQL डेटा फ़ोल्डर का नाम बदलने के लिए:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
पक्का करें कि आपका ओरिजनल बैकअप डेटा,
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
नाम के फ़ोल्डर में होउदाहरण के लिए:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
/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
db_upgrade
कमांड को फिर से चलाएं:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
अगर आपको गड़बड़ी का यह मैसेज दिखता है...
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
db_upgrade
निर्देश को फिर से चलाएं:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
अगर समस्या बनी रहती है, तो वजह: PostgreSQL कॉन्फ़िगरेशन फ़ाइल में कॉपी करने की गलत सेटिंग पर जाएं.
कारण: PostgreSQL कॉन्फ़िगरेशन फ़ाइल में गलत प्रतिकृति सेटिंग
डायग्नोसिस
- देखें कि PostgreSQL कॉन्फ़िगरेशन फ़ाइल
/opt/apigee/apigee-postgresql/conf/pg_hba.conf
में, आपकी ज़रूरत के मुताबिक कॉपी करने की सेटिंग है या नहीं. - अगर इस फ़ाइल में, उम्मीद के मुताबिक डुप्लीकेट कॉपी बनाने की सेटिंग मौजूद हैं, तो "apigee" उपयोगकर्ता के अलावा किसी दूसरे उपयोगकर्ता ने PostgreSQL इंस्टॉल किया है पर जाएं.
- अगर ऐसा नहीं है, तो रिज़ॉल्यूशन पर जाएं.
रिज़ॉल्यूशन
नीचे दिए गए निर्देश का इस्तेमाल करके, PostgreSQL डेटा फ़ोल्डर का नाम बदलें:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
पक्का करें कि ओरिजनल बैकअप डेटा, इस नाम वाले फ़ोल्डर में हो:
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
उदाहरण के लिए:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
बैकअप डेटा को
/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
अगर आपने कभी स्लेव होस्ट बदला है, तो आपको कॉन्फ़िगरेशन फ़ाइल अपडेट करने के लिए,
/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
apigee-postgresql
सेवा को रीस्टार्ट करें, ताकि यह पक्का किया जा सके कि ऊपर चौथे चरण में सेट की गई प्रॉपर्टी, कॉन्फ़िगरेशन फ़ाइलpg_hba.conf
में अपडेट हो जाए:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
कॉन्फ़िगरेशन फ़ाइल
pg_hba.conf
को बदलाव के लिए उपलब्ध न कराने के लिए, नीचे दिए गए निर्देश का इस्तेमाल करें. इससे यह पक्का किया जा सकेगा कि PostgreSQL अपग्रेड के दौरान, यह गलत सेटिंग के साथ अपडेट न हो:chattr +i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
db_upgrade
निर्देश को फिर से चलाएं:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
कॉन्फ़िगरेशन फ़ाइल
pg_hba.conf
पर, ऐसी सेटिंग हटाएं जिनमें बदलाव नहीं किया जा सकता:chattr -i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
वजह: apigee
उपयोगकर्ता के अलावा, किसी दूसरे उपयोगकर्ता ने PostgreSQL इंस्टॉल किया है
डायग्नोसिस
यह देखें कि क्या कोई और उपयोगकर्ता है जिसके लिए rolesuper को true पर सेट किया गया है. इसके लिए, यह तरीका अपनाएं:
PostgreSQL नोड पर, इस कमांड का इस्तेमाल करके PostgreSQL में लॉग इन करें:
psql -h $(hostname -i) -U apigee
यहां दी गई SQL क्वेरी चलाएं:
select * from pg_authid;
देखें कि क्या एक से ज़्यादा उपयोगकर्ताओं के लिए rolesuper को true पर सेट किया गया है. अगर ऐसा होता है, तो किसी दूसरे उपयोगकर्ता की वजह से PostgreSQL अपग्रेड नहीं हो पा रहा है को apigee उपयोगकर्ता के बजाय इंस्टॉल उपयोगकर्ता के तौर पर सेट किया गया है. rolesuper भूमिका और कम OID वाले किसी भी उपयोगकर्ता को इंस्टॉल करने वाला उपयोगकर्ता माना जाता है.
इस तरह की भूमिका से जुड़ी समस्या की जांच करने के लिए, नीचे दी गई SQL क्वेरी चलाएं:
select oid,rolname,rolsuper from pg_roles; select * from pg_user;
रिज़ॉल्यूशन
इस कमांड का इस्तेमाल करके, PostgreSQL में लॉगिन करें:
psql -h $(hostname -i) -U apigee
पुराने DB में मौजूदा
apigee
भूमिका का नाम बदलकर, अस्थायी उपयोगकर्ता करें (उदाहरण के लिए:apigee2
):update pg_authid set rolname ='apigee2' where rolname = 'apigee';
मान लें कि इंस्टॉल करने वाला कोई दूसरा उपयोगकर्ता
srcapige
था.srcapige
की भूमिका का नाम बदलकरapigee
करें:update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
apigee2
का नाम बदलकर,srcapige
उपयोगकर्ता करें:update pg_authid set rolname ='secapigee' where rolname = 'apigee2';
बदले गए नाम वाले सभी उपयोगकर्ताओं के लिए पासवर्ड अपडेट करें:
ALTER ROLE apigee WITH PASSWORD '<secret>'; ALTER ROLE srcapige WITH PASSWORD '<secret>';
नीचे दिए गए निर्देश का इस्तेमाल करके, PostgreSQL डेटा फ़ोल्डर का नाम बदलें:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
पक्का करें कि इस नाम वाले फ़ोल्डर में ओरिजनल बैकअप डेटा मौजूद हो
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया हैउदाहरण के लिए:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
/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
db_upgrade
निर्देश को फिर से चलाएं:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
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 की सहायता टीम से संपर्क करें और सहायता टीम के साथ यह जानकारी शेयर करें:
/opt/apigee/apigee-postgresql/lib/actions/db_upgrade
फ़ाइल की दूसरी लाइन मेंset -x
जोड़ें.गड़बड़ी का पता लगाने के सामान्य तरीके अपनाएं और सहायता टीम को
db_upgrade
कमांड का कंसोल आउटपुट दें:opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
सहायता टीम को ये लॉग फ़ाइलें उपलब्ध कराएं:
/opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log /opt/apigee/var/log/apigee-postgresql/update.log
ऑपरेटिंग सिस्टम के इन निर्देशों का आउटपुट दें, ताकि यह पता लगाया जा सके कि वैकल्पिक विकल्प
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
बाइनरी, अपग्रेड किए गए वर्शन पर ले जाती हैं. अगर ऐसा नहीं होता है, तो बाइनरी फ़ाइलें पुराने वर्शन पर ले जाएंगी, इससे समस्याएं हो सकती हैं.