Kegagalan upgrade PostgreSQL

Anda sedang melihat dokumentasi Apigee Edge.
Buka Dokumentasi Apigee X.
info

ini.

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:

  1. Ganti nama folder data PostgreSQL:

    mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
    
  2. 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/
    
  3. 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
  4. Jalankan kembali perintah db_upgrade:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
    
  5. 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 menjadi pg_control menggunakan perintah berikut:

    mv /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control.old /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control 
    
  6. 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

  1. Periksa apakah file konfigurasi PostgreSQL /opt/apigee/apigee-postgresql/conf/pg_hba.conf memiliki setelan replikasi yang Anda inginkan.
  2. Jika file ini memiliki setelan replikasi yang diharapkan, buka Penginstalan PostgreSQL yang dilakukan oleh pengguna penginstalan lain selain "apigee" .
  3. Jika tidak, buka Resolusi.

Resolusi

  1. Ganti nama folder data PostgreSQL menggunakan perintah berikut:

    mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
    
  2. 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/
    
  3. 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 
    
  4. Jika Anda pernah mengubah host slave, Anda harus memperbarui properti berikut di /opt/apigee/customer/application/postgresql.properties untuk mengupdate file konfigurasi pg_hba.conf:

    conf_pg_hba_replication.connection=host replication apigee
    existing_slave_ip/32 trust\ \nhost replication apigee new_slave_ip/32 trust 
    
  5. Mulai ulang layanan apigee-postgresql untuk memastikan bahwa properti yang ditetapkan di Langkah 4 di atas diperbarui ke file konfigurasi pg_hba.conf:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
    
  6. 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 
    
  7. Jalankan kembali perintah db_upgrade:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
    
  8. 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

  1. Periksa apakah ada pengguna lain yang memiliki rolesuper yang ditetapkan ke true dengan mengikuti langkah-langkah berikut:

    1. Di node PostgreSQL, login ke PostgreSQL menggunakan perintah berikut:

      psql -h $(hostname -i)  -U apigee
      
    2. Jalankan kueri SQL berikut:

      select * from pg_authid;
      
    3. 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

  1. Login ke PostgreSQL menggunakan perintah berikut:

    psql -h $(hostname -i)  -U apigee
    
  2. Ganti nama peran apigee yang ada di DB lama menjadi pengguna sementara (misalnya: apigee2):

    update pg_authid set rolname ='apigee2' where rolname = 'apigee'; 
    
  3. Misalnya, ada pengguna penginstal lain srcapige. Ganti nama peran srcapige menjadi apigee:

    update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
    
  4. Ganti nama apigee2 menjadi pengguna srcapige:

    update pg_authid set rolname ='secapigee' where rolname = 'apigee2'; 
    
  5. Perbarui sandi untuk semua pengguna yang namanya diganti:

    ALTER ROLE apigee WITH PASSWORD '<secret>'; 
    ALTER ROLE srcapige WITH PASSWORD '<secret>'; 
    
  6. Ganti nama folder data PostgreSQL menggunakan perintah berikut:

    mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
    
  7. 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/
    
  8. 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 
    
  9. Jalankan kembali perintah db_upgrade:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade 
    
  10. Mulai ulang semua layanan apigee-qpidd dan edge-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:

  1. Tambahkan set -x di baris kedua file/opt/apigee/apigee-postgresql/lib/actions/db_upgrade.
  2. 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
    
  3. Berikan file log berikut kepada tim dukungan:

    /opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log
    /opt/apigee/var/log/apigee-postgresql/update.log
    
  4. 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 ke auto menggunakan perintah berikut:

    update-alternatives --auto psql
    

    Menyetel alternatif ke auto akan mengarahkan biner psql dan postgres ke versi yang telah ditingkatkan. Jika tidak, biner akan menunjuk ke versi yang lebih lama, yang dapat menyebabkan masalah.