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