אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X. מידע
תיאור הבעיה
מופיעה שגיאה כשמעדכנים את מסד הנתונים של 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
כדי לוודא שהקובץ לא יעודכן בהגדרות שגויות במהלך השדרוג של 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לגרסאות המשודרגות. אחרת, הקבצים הבינאריים יצביעו על הגרסה הישנה יותר, מה שעלול לגרום לבעיות.