Apigee Edge के दस्तावेज़ देखे जा रहे हैं.
Apigee X के दस्तावेज़ पर जाएं. जानकारी
समस्या का ब्यौरा
PostgreSQL डेटाबेस को अपडेट करते समय आपको कोई गड़बड़ी मिलती है.
गड़बड़ी का मैसेज
ERROR: PostgreSQL Upgrade FAILED
संभावित वजहें
| वजह | ब्यौरा | समस्या हल करने के निर्देश इन पर लागू होते हैं |
|---|---|---|
| PostgreSQL कॉन्फ़िगरेशन फ़ाइल में रेप्लिकेशन की सेटिंग गलत हैं | अपग्रेड के दौरान रेप्लिकेशन की सेटिंग गलत होने की वजह से, PostgreSQL अपग्रेड नहीं हो सका. | Edge Private Cloud के उपयोगकर्ताओं के लिए |
| apigee उपयोगकर्ता के अलावा, किसी दूसरे उपयोगकर्ता ने PostgreSQL इंस्टॉल किया हो | PostgreSQL को शुरू में किसी दूसरे उपयोगकर्ता के तौर पर इंस्टॉल किया गया था. इसलिए, अपग्रेड नहीं किया जा सका. | Edge Private Cloud के उपयोगकर्ताओं के लिए |
गड़बड़ी का पता लगाने के सामान्य तरीके
अगर 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
अगर आपने कभी स्लेव होस्ट बदला है, तो कॉन्फ़िगरेशन फ़ाइल
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 trustapigee-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
वजह: PostgreSQL को apigee उपयोगकर्ता के अलावा, किसी दूसरे इंस्टॉल उपयोगकर्ता ने इंस्टॉल किया है
गड़बड़ी की जानकारी
यह देखने के लिए कि क्या किसी अन्य उपयोगकर्ता के लिए rolesuper को true पर सेट किया गया है, यह तरीका अपनाएं:
PostgreSQL नोड पर, इस कमांड का इस्तेमाल करके PostgreSQL में लॉग इन करें:
psql -h $(hostname -i) -U apigee
यह एसक्यूएल क्वेरी चलाएं:
select * from pg_authid;
देखें कि क्या एक से ज़्यादा उपयोगकर्ताओं के लिए, rolesuper को true पर सेट किया गया है. अगर ऐसा है, तो PostgreSQL को अपग्रेड नहीं किया जा सकता. इसकी वजह यह है कि apigee उपयोगकर्ता के बजाय, किसी दूसरे उपयोगकर्ता को install user के तौर पर सेट किया गया है. rolesuper भूमिका वाले किसी भी उपयोगकर्ता और कम ओआईडी वाले उपयोगकर्ता को ऐप्लिकेशन इंस्टॉल करने वाला उपयोगकर्ता माना जाता है.
भूमिका से जुड़ी इस तरह की समस्या की जांच करने के लिए, यहां दी गई एसक्यूएल क्वेरी चलाएं:
select oid,rolname,rolsuper from pg_roles; select * from pg_user;
समाधान
नीचे दिए गए निर्देश का इस्तेमाल करके, PostgreSQL में लॉग इन करें:
psql -h $(hostname -i) -U apigee
पुराने डेटाबेस में मौजूद
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 pgsqlupdate-alternatives --listअगर विकल्प
manualपर सेट हैं, तो उन्हेंautoपर सेट करने के लिए, यहां दिया गया कमांड इस्तेमाल करें:update-alternatives --auto psql
विकल्पों को
autoपर सेट करने से,psqlऔरpostgresबाइनरी, अपग्रेड किए गए वर्शन पर रीडायरेक्ट हो जाती हैं. ऐसा न करने पर, बाइनरी पुराने वर्शन की ओर ले जाएंगी. इससे समस्याएं हो सकती हैं.