شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید . اطلاعات
علامت
هنگام به روز رسانی پایگاه داده PostgreSQL با خطا مواجه می شوید.
پیغام خطا
ERROR: PostgreSQL Upgrade FAILED
علل احتمالی
| علت | توضیحات | دستورالعمل های عیب یابی اعمال می شود |
|---|---|---|
| تنظیمات تکرار نادرست در فایل پیکربندی PostgreSQL | ارتقا PostgreSQL به دلیل تنظیمات تکرار نادرست در طول ارتقا ناموفق است. | کاربران ابر خصوصی Edge |
| نصب 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تنظیمات تکراری مورد نظر شما را دارد یا خیر. - اگر این فایل تنظیمات تکرار مورد انتظار را دارد، به نصب PostgreSQL که توسط کاربر نصب دیگری غیر از کاربر "apigee" انجام شده است بروید.
- اگر نه، به Resolution بروید.
قطعنامه
با استفاده از دستور زیر نام پوشه داده 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را مجددا راه اندازی کنید تا مطمئن شوید که ویژگی تنظیم شده در مرحله 4 بالا در فایل پیکربندی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
پرس و جوی 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
نقش
apigeeموجود در DB قدیمی را به یک کاربر موقت تغییر نام دهید (به عنوان مثال: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 تماس بگیرید و این اطلاعات را با تیم پشتیبانی به اشتراک بگذارید:
-
set -xدر خط دوم فایل/opt/apigee/apigee-postgresql/lib/actions/db_upgradeاضافه کنید. مراحل تشخیص رایج را دنبال کنید و خروجی کنسول فرمان
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 psqlیا
update-alternatives --list pgsql
اگر گزینههای جایگزین روی
manualتنظیم شدهاند، میتوانید با استفاده از دستور زیر آنها را رویautoتنظیم کنید:update-alternatives --auto psql
تنظیم گزینه های جایگزین برای
auto، باینری هایpsqlوpostgresرا به نسخه های ارتقا یافته هدایت می کند. در غیر این صورت، باینری ها به نسخه قدیمی تر اشاره می کنند که می تواند مشکلاتی را ایجاد کند.