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