Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं. जानकारी
समस्या का ब्यौरा
PostgreSQL डेटाबेस को अपडेट करते समय, आपको गड़बड़ी का मैसेज मिलता है.
गड़बड़ी संदेश
ERROR: PostgreSQL Upgrade FAILED
संभावित वजहें
वजह | ब्यौरा | समस्या हल करने के निर्देश इन पर लागू होते हैं |
---|---|---|
PostgreSQL कॉन्फ़िगरेशन फ़ाइल में गलत प्रतिरूप सेटिंग | अपग्रेड के दौरान, गलत रेप्लिकेशन सेटिंग की वजह से PostgreSQL अपग्रेड नहीं हो सका. | Edge के प्राइवेट क्लाउड उपयोगकर्ता |
apigee उपयोगकर्ता के अलावा, किसी दूसरे इंस्टॉल उपयोगकर्ता ने PostgreSQL इंस्टॉल किया | शुरुआत में 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
इस एसक्यूएल क्वेरी को चलाएं:
select * from pg_authid;
देखें कि क्या कई उपयोगकर्ता rolesuper को true पर सेट कर रहे हैं. अगर ऐसा है, तो PostgreSQL अपग्रेड नहीं हो पा रहा है, क्योंकि दूसरे उपयोगकर्ता को apigee उपयोगकर्ता के बजाय इंस्टॉल उपयोगकर्ता के तौर पर सेट किया गया है. rolesuper की भूमिका वाले और कम ओआईडी वाले किसी भी उपयोगकर्ता को इंस्टॉल किया गया उपयोगकर्ता माना जाता है.
भूमिका से जुड़ी इस तरह की समस्या की जांच करने के लिए, नीचे दी गई एसक्यूएल क्वेरी चलाएं:
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
बाइनरी को अपग्रेड किए गए वर्शन पर सेट कर दिया जाता है. ऐसा न होने पर, बाइनरी पुराने वर्शन पर ले जाएंगी. इससे समस्याएं हो सकती हैं.