คุณกำลังดูเอกสารประกอบของ 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
ทำให้ไฟล์การกำหนดค่า
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 ผู้ใช้ที่มีบทบาทผู้มีบทบาทและ 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
ระบุเอาต์พุตของคำสั่งระบบปฏิบัติการต่อไปนี้เพื่อตรวจสอบว่าตัวเลือกอื่นตั้งค่าเป็น
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
ไบนารีเป็นเวอร์ชันที่อัปเกรดแล้ว มิฉะนั้น ไบนารีจะชี้ไปที่เวอร์ชันเก่า ซึ่งอาจทำให้เกิดปัญหา