أنت تطّلع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
المشكلة
ظهور خطأ عند تعديل قاعدة بيانات PostgreSQL
رسالة الخطأ
ERROR: PostgreSQL Upgrade FAILED
الأسباب المحتملة
السبب | الوصف | تنطبق إرشادات استكشاف الأخطاء وإصلاحها على |
---|---|---|
إعدادات النسخ المتماثل غير صحيحة في ملف إعداد PostgreSQL | تعذُّر ترقية PostgreSQL بسبب إعدادات النسخ غير الصحيحة أثناء الترقية. | مستخدمو Edge Private Cloud |
تم إجراء تثبيت PostgreSQL من خلال مستخدم تثبيت آخر غير مستخدم واجهة برمجة التطبيقات API | تم تثبيت 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
يحتوي على إعدادات النسخ التي تريدها. - إذا كان هذا الملف يتضمّن إعدادات النسخ المتطابق المتوقّعة، انتقِل إلى عملية تثبيت 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
إذا غيّرت المضيف الثانوي، عليك تعديل السمة التالية في
/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
الحالي في قاعدة البيانات القديمة ليصبح مستخدمًا مؤقتًا (على سبيل المثال: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
إلى الإصدارات التي تمت ترقيتها. وبخلاف ذلك، ستشير الملفات الثنائية إلى الإصدار الأقدم، ما قد يتسبب في حدوث مشاكل.