شما در حال مشاهده مستندات 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" انجام شده است، بروید.
- اگر اینطور نیست، به قسمت وضوح بروید.
وضوح تصویر
پوشه داده 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
اگر تا به حال میزبان slave را تغییر دادهاید، باید ویژگی زیر را در
/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
علت: نصب 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موجود در پایگاه داده قدیمی را به یک کاربر موقت تغییر دهید (برای مثال: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اگر گزینههای جایگزین روی
manualتنظیم شدهاند، میتوانید با استفاده از دستور زیر آنها را رویautoتنظیم کنید:update-alternatives --auto psql
تنظیم گزینههای جایگزین روی
auto، فایلهای باینریpsqlوpostgresرا به نسخههای ارتقا یافته ارجاع میدهد. در غیر این صورت، فایلهای باینری به نسخه قدیمیتر اشاره میکنند که میتواند باعث بروز مشکل شود.