Anda sedang melihat dokumentasi Apigee Edge.
Buka
Dokumentasi Apigee X. info
Gejala
Anda mendapatkan error saat memperbarui database PostgreSQL.
Pesan Error
ERROR: PostgreSQL Upgrade FAILED
Kemungkinan Penyebab
Penyebab | Deskripsi | Petunjuk pemecahan masalah berlaku untuk |
---|---|---|
Setelan replikasi salah di file konfigurasi PostgreSQL | Upgrade PostgreSQL gagal karena setelan replikasi yang salah selama upgrade. | Pengguna Edge Private Cloud |
Penginstalan PostgreSQL dilakukan oleh pengguna penginstalan lain selain pengguna apigee | PostgreSQL awalnya diinstal dengan pengguna lain sebagai pengguna penginstal, yang menyebabkan kegagalan upgrade. | Pengguna Edge Private Cloud |
Langkah-Langkah Diagnosis Umum
Jika Anda mengalami error saat mengupgrade database PostgreSQL, lakukan tindakan berikut langkah diagnostik terlebih dahulu:
Ganti nama folder data PostgreSQL:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Pastikan data cadangan asli Anda berada di folder bernama
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
Contoh:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Pulihkan data cadangan di
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
ke/opt/apigee/data/apigee-postgresql/pgdata
menggunakan perintah berikut:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Contoh:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Jalankan kembali perintah
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Jika Anda mendapatkan pesan error berikut...
pg_resetxlog: could not open file "global/pg_control" for reading: No such file or directory
...lalu ganti nama file
pg_control.old
menjadipg_control
menggunakan perintah berikut:mv /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control.old /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control
Jalankan kembali perintah
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Jika masalah berlanjut, buka Penyebab: Setelan replikasi salah dalam file konfigurasi PostgreSQL.
Penyebab: Setelan replikasi salah pada file konfigurasi PostgreSQL
Diagnosis
- Periksa apakah file konfigurasi PostgreSQL
/opt/apigee/apigee-postgresql/conf/pg_hba.conf
memiliki setelan replikasi yang Anda inginkan. - Jika file ini memiliki setelan replikasi yang diharapkan, buka Penginstalan PostgreSQL yang dilakukan oleh pengguna penginstalan lain selain "apigee" .
- Jika tidak, buka Resolusi.
Resolusi
Ganti nama folder data PostgreSQL menggunakan perintah berikut:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Pastikan data cadangan asli berada di folder bernama:
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
Contoh:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Pulihkan data cadangan dari
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
ke/opt/apigee/data/apigee-postgresql/pgdata
menggunakan perintah berikut:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Contoh:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Jika Anda pernah mengubah host slave, Anda harus memperbarui properti berikut di
/opt/apigee/customer/application/postgresql.properties
untuk mengupdate file konfigurasipg_hba.conf
:conf_pg_hba_replication.connection=host replication apigee existing_slave_ip/32 trust\ \nhost replication apigee new_slave_ip/32 trust
Mulai ulang layanan
apigee-postgresql
untuk memastikan bahwa properti yang ditetapkan di Langkah 4 di atas diperbarui ke file konfigurasipg_hba.conf
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
Buat file konfigurasi
pg_hba.conf
tidak dapat diubah menggunakan perintah berikut untuk pastikan SDK tidak diperbarui dengan setelan yang salah selama upgrade PostgreSQL:chattr +i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
Jalankan kembali perintah
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Hapus setelan yang tidak dapat diubah pada file konfigurasi
pg_hba.conf
:chattr -i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
Penyebab: Penginstalan PostgreSQL dilakukan oleh pengguna instal lain selain pengguna apigee
Diagnosis
Periksa apakah ada pengguna lain yang memiliki rolesuper yang ditetapkan ke true dengan mengikuti langkah-langkah berikut:
Di node PostgreSQL, login ke PostgreSQL menggunakan perintah berikut:
psql -h $(hostname -i) -U apigee
Jalankan kueri SQL berikut:
select * from pg_authid;
Periksa apakah ada beberapa pengguna yang menetapkan rolesuper ke true. Jika ada, upgrade PostgreSQL akan gagal karena pengguna lain telah ditetapkan sebagai pengguna penginstalan, bukan pengguna apigee. Setiap pengguna dengan rolesuper dan OID yang lebih rendah dianggap sebagai pengguna penginstalan.
Untuk memeriksa masalah peran semacam ini, jalankan kueri SQL berikut:
select oid,rolname,rolsuper from pg_roles; select * from pg_user;
Resolusi
Login ke PostgreSQL menggunakan perintah berikut:
psql -h $(hostname -i) -U apigee
Ganti nama peran
apigee
yang ada di DB lama menjadi pengguna sementara (misalnya:apigee2
):update pg_authid set rolname ='apigee2' where rolname = 'apigee';
Misalnya, ada pengguna penginstal lain
srcapige
. Ganti nama peransrcapige
menjadiapigee
:update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
Ganti nama
apigee2
menjadi penggunasrcapige
:update pg_authid set rolname ='secapigee' where rolname = 'apigee2';
Perbarui sandi untuk semua pengguna yang namanya diganti:
ALTER ROLE apigee WITH PASSWORD '<secret>'; ALTER ROLE srcapige WITH PASSWORD '<secret>';
Ganti nama folder data PostgreSQL menggunakan perintah berikut:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Pastikan ada data cadangan asli di dalam folder bernama
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
Contoh:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Pulihkan data dalam folder
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
ke/opt/apigee/data/apigee-postgresql/pgdata
menggunakan perintah berikut:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Contoh:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Jalankan kembali perintah
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Mulai ulang semua layanan
apigee-qpidd
danedge-qpid-server
:/opt/apigee/apigee-service/bin/apigee-service apigee-qpidd restart
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
Jika masalah masih berlanjut, buka Harus mengumpulkan informasi diagnostik.
Harus mengumpulkan informasi diagnostik
Jika masalah berlanjut setelah mengikuti petunjuk pemecahan masalah di atas, kumpulkan informasi diagnostik berikut. Hubungi Dukungan Apigee dan bagikan informasi ini kepada tim dukungan:
- Tambahkan
set -x
di baris kedua file/opt/apigee/apigee-postgresql/lib/actions/db_upgrade
. Ikuti Langkah-langkah diagnosis umum dan berikan output konsol perintah
db_upgrade
kepada tim dukungan:opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Berikan file log berikut kepada tim dukungan:
/opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log /opt/apigee/var/log/apigee-postgresql/update.log
Berikan {i>output<i} dari perintah sistem operasi berikut untuk memeriksa apakah alternatif ditetapkan ke
auto
.update-alternatives --display psql
ATAU
update-alternatives --display pgsql
update-alternatives --list psql
ATAU
update-alternatives --list pgsql
Jika alternatif ditetapkan ke
manual
, Anda dapat menetapkannya keauto
menggunakan perintah berikut:update-alternatives --auto psql
Menyetel alternatif ke
auto
akan mengarahkan binerpsql
danpostgres
ke versi yang telah ditingkatkan. Jika tidak, biner akan menunjuk ke versi yang lebih lama, yang dapat menyebabkan masalah.