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