אתם צופים במסמכי התיעוד של Apigee Edge.
אפשר לעבור אל מסמכי התיעוד של Apigee X. מידע
תיאור הבעיה
מופיעה שגיאה כשמעדכנים את מסד הנתונים של PostgreSQL.
הודעת השגיאה
ERROR: PostgreSQL Upgrade FAILED
סיבות אפשריות
| סיבה | תיאור | ההוראות לפתרון בעיות רלוונטיות ל |
|---|---|---|
| הגדרות רפליקציה שגויות בקובץ תצורה של PostgreSQL | השדרוג של PostgreSQL נכשל בגלל הגדרות שכפול שגויות במהלך השדרוג. | משתמשים ב-Edge Private Cloud |
| התקנת 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
אם שיניתם את המארח המשני, אתם צריכים לעדכן את המאפיין הבא ב-
/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
כדי לוודא שהקובץ לא יעודכן בהגדרות שגויות במהלך השדרוג של PostgreSQL, צריך להפוך את קובץ התצורה
pg_hba.confלבלתי ניתן לשינוי באמצעות הפקודה הבאה: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לגרסאות המשודרגות. אחרת, הקבצים הבינאריים יצביעו על הגרסה הישנה יותר, מה שעלול לגרום לבעיות.