شما در حال مشاهده اسناد 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 pgsql
update-alternatives --list psql
یا
update-alternatives --list pgsql
اگر گزینههای جایگزین روی
manual
تنظیم شدهاند، میتوانید با استفاده از دستور زیر آنها را رویauto
تنظیم کنید:update-alternatives --auto psql
تنظیم گزینه های جایگزین برای
auto
، باینری هایpsql
وpostgres
را به نسخه های ارتقا یافته هدایت می کند. در غیر این صورت، باینری ها به نسخه قدیمی تر اشاره می کنند که می تواند مشکلاتی را ایجاد کند.