PostgreSQL yükseltme hatası

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

Belirti

PostgreSQL veritabanını güncellerken bir 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 yanlış çoğaltma ayarları PostgreSQL yükseltmesi, yükseltme sırasında yanlış çoğaltma ayarları nedeniyle başarısız olur. Edge Private Cloud 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 yükleme kullanıcısı olarak başka bir kullanıcıyla yüklendi Bu da yükseltmenin başarısız olmasına yol açar. Edge Private Cloud Kullanıcıları

Sık Kullanılan Teşhis Adımları

PostgreSQL veritabanını yükseltirken hata ile karşılaşırsanız aşağıdaki adımları uygulayın: ilk teşhis adımları:

  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 yedek 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/'teki yedek verileri /opt/apigee/data/apigee-postgresql/pgdata'e 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 yeniden çalıştırın:

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

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

    ...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 yeniden ç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 olup olmadığını kontrol edin istediğiniz çoğaltma ayarlarına sahip.
  2. Bu dosyada beklenen çoğaltma ayarları varsa "apigee" kullanıcısı dışında başka bir yükleme kullanıcısı tarafından gerçekleştirilen PostgreSQL yüklemesi bölümüne gidin.
  3. Görmezseniz Çözüm bölümüne gidin.

Çözüm

  1. PostgreSQL veri klasörünü aşağıdaki komutu kullanarak 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 /opt/apigee/data/apigee-postgresql/pgdata-version.old/ konumundaki yedek verileri /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. Köle ana makineyi değiştirdiyseniz yapılandırma dosyasını güncellemek için /opt/apigee/customer/application/postgresql.properties'te aşağıdaki mülkü güncellemeniz gerekirpg_hba.conf:

    conf_pg_hba_replication.connection=host replication apigee
    existing_slave_ip/32 trust\ \nhost replication apigee new_slave_ip/32 trust 
    
  5. Mülkün şurada ayarlandığından emin olmak için apigee-postgresql hizmetini yeniden başlatın: Yukarıdaki 4. adım, pg_hba.conf yapılandırma dosyasında güncellenir:

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

    chattr +i /opt/apigee/apigee-postgresql/conf/pg_hba.conf 
    
  7. db_upgrade komutunu yeniden ç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ışında başka bir yükleme kullanıcısı tarafından gerçekleştirildi

Teşhis

  1. Aşağıdaki adımları uygulayarak rolesuper özelliği true olarak ayarlanmış başka bir kullanıcı olup olmadığı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 özelliği true olarak ayarlanmış birden fazla kullanıcı olup olmadığını kontrol edin. Varsa PostgreSQL yükseltmesi, apigee kullanıcısı yerine başka bir kullanıcı yükleme kullanıcısı olarak ayarlandığı için başarısız oluyordur. rolesuper rolü ve daha düşük bir OID, yükleme kullanıcısı olarak kabul edilir.

      Bu tür bir rol sorununu 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'a giriş yapın:

    psql -h $(hostname -i)  -U apigee
    
  2. Eski VT'deki mevcut apigee rolünü geçici bir kullanıcı olarak değiştirin (örneğin: apigee2):

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

    update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
    
  4. apigee2 kullanıcısını srcapige olarak yeniden adlandırın:

    update pg_authid set rolname ='secapigee' where rolname = 'apigee2'; 
    
  5. Yeniden adlandırılan tüm kullanıcıların şifresini 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. Şu ada sahip bir klasör içinde orijinal yedek verilerin bulunduğundan emin olun: /opt/apigee/data/apigee-postgresql/pgdata-version.old/.

    Örneğin:

    /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
    
  8. /opt/apigee/data/apigee-postgresql/pgdata-version.old/ içindeki verileri geri yükleyin klasörünü /opt/apigee/data/apigee-postgresql/pgdata klasörüne taşımak için şu komutu kullanın:

    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 yeniden ç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ıdır bölümüne gidin.

Teşhis bilgilerini toplamalı

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

  1. /opt/apigee/apigee-postgresql/lib/actions/db_upgrade dosyasının ikinci satırına set -x ekleyin.
  2. Sık karşılaşılan 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 çıktısı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 ayarlanmışsa aşağıdaki komutu kullanarak auto olarak ayarlayabilirsiniz:

    update-alternatives --auto psql
    

    Alternatifler auto olarak ayarlandığında psql ve postgres ikili programları yükseltmeye çalışıyor. Aksi takdirde, ikili dosyalar eski sürümü işaret eder ve bu da sorunlara neden olabilir.