PostgreSQL yükseltme hatası

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

Belirti

PostgreSQL veritabanı güncellenirken hata alıyorsunuz.

Hata Mesajı

ERROR: PostgreSQL Upgrade FAILED 

Olası nedenler

Neden Açıklama Sorun giderme talimatları aşağıdaki durumlarda geçerlidir:
PostgreSQL yapılandırma dosyasındaki yanlış çoğaltma ayarları PostgreSQL yükseltmesi, yükseltme sırasında yanlış çoğaltma ayarları nedeniyle başarısız oluyor. Edge Private Cloud kullanıcıları
PostgreSQL kurulumu, apigee kullanıcısı dışında başka bir yükleme kullanıcısı tarafından gerçekleştirildi PostgreSQL başlangıçta yükleme kullanıcısı olarak başka bir kullanıcıyla yüklenmiş. Bu durum, yükseltmenin başarısız olmasına neden oluyor. Edge Private Cloud kullanıcıları

Sık Kullanılan 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 olduğ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/ içindeki yedekleme verilerini /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. 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ırsanı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ındaki yanlış çoğaltma ayarları bölümüne gidin.

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

Teşhis

  1. PostgreSQL yapılandırma dosyasında /opt/apigee/apigee-postgresql/conf/pg_hba.conf istediğiniz çoğaltma ayarlarının olup olmadığını kontrol edin.
  2. Bu dosya beklenen replikasyon ayarlarına sahipse PostgreSQL installation performed by another install user other than "apigee" user (PostgreSQL yüklemesi, "apigee" kullanıcısı dışında başka bir yükleme kullanıcısı tarafından gerçekleştirildi) bölümüne gidin.
  3. Değilse Çözüm bölümüne 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 şu ada sahip bir klasörde olduğundan emin olun: /opt/apigee/data/apigee-postgresql/pgdata-version.old/

    Ö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. Hiçbir zaman slave ana makinesini değiştirmediyseniz yapılandırma dosyasını güncellemek için /opt/apigee/customer/application/postgresql.properties bölümünde aşağıdaki özelliği güncellemeniz gerekir 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. Yukarıdaki 4. adımda ayarlanan özelliğin yapılandırma dosyasına pg_hba.conf 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üncellenmemesini sağlamak için aşağıdaki komutu kullanarak yapılandırma dosyasını pg_hba.conf değiştirilemez hale getirin:

    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. Yapılandırma dosyasındaki değiştirilemez ayarı kaldırın pg_hba.conf:

    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 değeri 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 değeri true olarak ayarlanmış birden fazla kullanıcı olup olmadığını kontrol edin. Bu durumda, 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 oluyor. rolesuper 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 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'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ı 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 kullanıcısını srcapige kullanıcısı 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. /opt/apigee/data/apigee-postgresql/pgdata-version.old/ adlı klasörde orijinal yedekleme verileri olduğ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'ye 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 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 Toplanması gereken teşhis bilgileri bölümüne gidin.

Teşhis bilgilerini toplamalı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 ekleyin.
  2. Genel 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 
    

    Alternatifler manual olarak ayarlanmışsa aşağıdaki komutu kullanarak bunları auto olarak ayarlayabilirsiniz:

    update-alternatives --auto psql
    

    Alternatifleri auto olarak ayarlamak, psql ve postgres ikili dosyalarını yükseltilmiş sürümlere yönlendirir. Aksi takdirde, ikililer eski sürümü işaret eder ve bu durum sorunlara neden olabilir.