คุณกำลังดูเอกสารประกอบ 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.confconf_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เปลี่ยนแปลงไม่ได้โดยใช้คำสั่งต่อไปนี้เพื่อ ตรวจสอบว่าไม่มีการอัปเดตด้วยการตั้งค่าที่ไม่ถูกต้องระหว่างการอัปเกรด PostgreSQLchattr +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ในบรรทัดที่ 2 ของไฟล์/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ระบุเอาต์พุตของคำสั่งของระบบปฏิบัติการต่อไปนี้เพื่อตรวจสอบว่า มีการตั้งค่าตัวเลือกอื่นเป็น
autoupdate-alternatives --display psql
หรือ
update-alternatives --display pgsqlupdate-alternatives --list psqlหรือ
update-alternatives --list pgsql
หากตั้งค่าทางเลือกเป็น
manualคุณตั้งค่าเป็นautoได้โดยใช้รายการต่อไปนี้ คำสั่ง:update-alternatives --auto psql
การตั้งค่าทางเลือกเป็น
autoจะกำหนดไบนารีpsqlและpostgresให้ไปที่เวอร์ชันที่อัปเกรด ไม่เช่นนั้น ไบนารีจะชี้ไปยังเวอร์ชันเก่า ซึ่งอาจทำให้เกิดปัญหาได้