PostgreSQL yükseltme hatası

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Belirti

PostgreSQL veritabanını güncellerken hata alıyorsunuz.

Hata Mesajı

ERROR: PostgreSQL Upgrade FAILED 

Olası Nedenler

Neden Açıklama Sorun giderme talimatları şunlar için geçerlidir:
PostgreSQL yapılandırma dosyasında hatalı çoğaltma ayarları Yükseltme sırasında yanlış çoğaltma ayarları nedeniyle PostgreSQL yükseltmesi başarısız olur. Edge Özel Bulut Kullanıcıları
Apigee kullanıcısı dışındaki başka bir yükleme kullanıcısı tarafından gerçekleştirilen PostgreSQL yüklemesi PostgreSQL başlangıçta başka bir kullanıcı ile bir yükleme kullanıcısı olarak yüklendi ve bu durum yükseltme hatasına yol açıyor. Edge Özel Bulut Kullanıcıları

Genel Teşhis Adımları

PostgreSQL veritabanını yükseltirken hata alırsanız önce aşağıdaki teşhis adımlarını uygulayın:

  1. PostgreSQL veri klasörünü yeniden adlandırın:

    mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
    
  2. Orijinal yedekleme verilerinizin /opt/apigee/data/apigee-postgresql/pgdata-version.old/ adlı bir klasörde bulunduğundan emin olun

    Örneğin:

    /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
    
  3. Aşağıdaki komutu kullanarak /opt/apigee/data/apigee-postgresql/pgdata-version.old/ cihazındaki yedekleme verilerini /opt/apigee/data/apigee-postgresql/pgdata ürününe geri yükleyin:

    mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata 
    

    Örneğin:

    mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
  4. db_upgrade komutunu tekrar çalıştırın:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
    
  5. Aşağıdaki hatayı alırsanız...

    pg_resetxlog: could not open file "global/pg_control" for reading:
    No such file or directory
    

    ...ve ardından aşağıdaki komutu kullanarak pg_control.old dosyasını pg_control olarak yeniden adlandırın:

    mv /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control.old /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control 
    
  6. db_upgrade komutunu tekrar çalıştırın:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
    

    Sorun devam ederse Neden: PostgreSQL yapılandırma dosyasında yanlış çoğaltma ayarları bölümüne gidin.

Neden: PostgreSQL yapılandırma dosyasında yanlış çoğaltma ayarları

Teşhis

  1. PostgreSQL yapılandırma dosyasının /opt/apigee/apigee-postgresql/conf/pg_hba.conf istediğiniz çoğaltma ayarlarına sahip olup olmadığını kontrol edin.
  2. Bu dosya beklenen çoğaltma ayarlarına sahipse "Apigee" kullanıcısı dışındaki başka bir yükleme kullanıcısı tarafından gerçekleştirilen PostgreSQL yüklemesi bölümüne gidin.
  3. Görmüyorsanız Çözüm'e gidin.

Çözüm

  1. Aşağıdaki komutu kullanarak PostgreSQL veri klasörünü yeniden adlandırın:

    mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
    
  2. Orijinal yedekleme verilerinin /opt/apigee/data/apigee-postgresql/pgdata-version.old/ adlı bir klasörde bulunduğundan emin olun

    Örneğin:

    /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
    
  3. Aşağıdaki komutu kullanarak yedekleme verilerini /opt/apigee/data/apigee-postgresql/pgdata-version.old/ konumundan /opt/apigee/data/apigee-postgresql/pgdata konumuna geri yükleyin:

    mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata 
    

    Örneğin:

    mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata 
    
  4. Yardımcı ana makineyi daha önce değiştirdiyseniz pg_hba.conf yapılandırma dosyasını güncellemek için /opt/apigee/customer/application/postgresql.properties içinde aşağıdaki özelliği güncellemeniz gerekir:

    conf_pg_hba_replication.connection=host replication apigee
    existing_slave_ip/32 trust\ \nhost replication apigee new_slave_ip/32 trust 
    
  5. Yukarıdaki 4. adımda ayarlanan mülkün pg_hba.conf yapılandırma dosyasına güncellendiğinden emin olmak için apigee-postgresql hizmetini yeniden başlatın:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
    
  6. PostgreSQL yükseltmesi sırasında yanlış ayarlarla güncellenmediğinden emin olmak için aşağıdaki komutu kullanarak pg_hba.conf yapılandırma dosyasını sabit hale getirin:

    chattr +i /opt/apigee/apigee-postgresql/conf/pg_hba.conf 
    
  7. db_upgrade komutunu tekrar çalıştırın:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
    
  8. pg_hba.conf yapılandırma dosyasındaki sabit ayarı kaldırın:

    chattr -i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
    

Neden: PostgreSQL yüklemesi, apigee kullanıcısı dışındaki başka bir yükleme kullanıcısı tarafından gerçekleştirildi

Teşhis

  1. Aşağıdaki adımları uygulayarak, rolesuper olan bir kullanıcının true olarak ayarlanıp ayarlanmadığını kontrol edin:

    1. PostgreSQL düğümünde, aşağıdaki komutu kullanarak PostgreSQL'e giriş yapın:

      psql -h $(hostname -i)  -U apigee
      
    2. Aşağıdaki SQL sorgusunu çalıştırın:

      select * from pg_authid;
      
    3. rolesuper değerini true olarak ayarlanmış birden fazla kullanıcı olup olmadığını kontrol edin. Varsa PostgreSQL yükseltmesi, başka bir kullanıcı Apigee kullanıcısı yerine install user olarak ayarlandığı için başarısız olur. Rolsuper rolüne ve daha düşük bir OID'ye sahip olan tüm kullanıcılar, yükleme kullanıcısı olarak kabul edilir.

      Bu tür bir rol sorunlarını kontrol etmek için aşağıdaki SQL sorgularını çalıştırın:

      select oid,rolname,rolsuper from pg_roles;
      select * from pg_user;
      

Çözüm

  1. Aşağıdaki komutu kullanarak PostgreSQL'e giriş yapın:

    psql -h $(hostname -i)  -U apigee
    
  2. Eski veritabanındaki mevcut apigee rolünü geçici bir kullanıcı olarak yeniden adlandırın (örneğin: apigee2):

    update pg_authid set rolname ='apigee2' where rolname = 'apigee'; 
    
  3. Başka bir yükleme kullanıcısının (srcapige) olduğunu varsayalım. srcapige rolünü apigee olarak yeniden adlandırın:

    update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
    
  4. apigee2 öğesinin adını srcapige kullanıcısı olarak değiştirin:

    update pg_authid set rolname ='secapigee' where rolname = 'apigee2'; 
    
  5. Yeniden adlandırılan tüm kullanıcılar için şifreyi güncelleyin:

    ALTER ROLE apigee WITH PASSWORD '<secret>'; 
    ALTER ROLE srcapige WITH PASSWORD '<secret>'; 
    
  6. Aşağıdaki komutu kullanarak PostgreSQL veri klasörünü yeniden adlandırın:

    mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
    
  7. /opt/apigee/data/apigee-postgresql/pgdata-version.old/ adlı bir klasörde orijinal yedekleme verilerinin bulunduğundan emin olun

    Örneğin:

    /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
    
  8. Aşağıdaki komutu kullanarak /opt/apigee/data/apigee-postgresql/pgdata-version.old/ klasöründeki verileri /opt/apigee/data/apigee-postgresql/pgdata klasörüne geri yükleyin:

    mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata 
    

    Örneğin:

    mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata 
    
  9. db_upgrade komutunu tekrar çalıştırın:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade 
    
  10. Tüm apigee-qpidd ve edge-qpid-server hizmetlerini yeniden başlatın:

    /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd restart
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
    

Sorun devam ederse Teşhis bilgileri toplanmalı bölümüne gidin.

Teşhis bilgileri toplanmalıdır

Yukarıdaki sorun giderme talimatlarını uyguladıktan sonra sorun devam ederse aşağıdaki teşhis bilgilerini toplayın. Apigee Destek Ekibi ile iletişime geçin ve bu bilgileri destek ekibiyle paylaşın:

  1. /opt/apigee/apigee-postgresql/lib/actions/db_upgrade dosyasının ikinci satırına set -x kodunu ekleyin.
  2. Yaygın teşhis adımlarını uygulayın ve db_upgrade komutunun konsol çıkışını destek ekibine iletin:

    opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
    
  3. Destek ekibine aşağıdaki günlük dosyalarını sağlayın:

    /opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log
    /opt/apigee/var/log/apigee-postgresql/update.log
    
  4. Alternatiflerin auto olarak ayarlanıp ayarlanmadığını kontrol etmek için aşağıdaki işletim sistemi komutlarının çıkışını sağlayın.

    update-alternatives --display psql 
    

    VEYA

    update-alternatives --display pgsql
    update-alternatives --list psql
    

    VEYA

    update-alternatives --list pgsql
    

    Alternatifler manual olarak ayarlandıysa aşağıdaki komutu kullanarak bunları auto olarak ayarlayabilirsiniz:

    update-alternatives --auto psql
    

    Alternatifleri auto olarak ayarlamak, psql ve postgres ikililerini yükseltilmiş sürümlere yönlendirir. Aksi takdirde, ikili programlar eski sürüme işaret eder ve bu da sorunlara neden olabilir.