כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של
Apigee X. מידע
תיאור הבעיה
התקבלה שגיאה במהלך העדכון של מסד הנתונים של 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: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 pgsql
update-alternatives --list psql
או
update-alternatives --list pgsql
אם החלופות מוגדרות ל-
manual
, אפשר להגדיר אותן לערךauto
באמצעות הפקודה הבאה:update-alternatives --auto psql
אם מגדירים את החלופות כ-
auto
, המערכת מפנה את הקבצים הבינארייםpsql
ו-postgres
לגרסאות המשודרגות. אחרת, הקבצים הבינאריים יפנו לגרסה הקודמת, מה שעלול לגרום לבעיות.