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:
PostgreSQL veri klasörünü yeniden adlandırın:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
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/Aşağıdaki komutu kullanarak
/opt/apigee/data/apigee-postgresql/pgdata-version.old/içindeki yedekleme verilerini/opt/apigee/data/apigee-postgresql/pgdatakonumuna 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
db_upgradekomutunu yeniden çalıştırın:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
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.olddosyasınıpg_contrololarak yeniden adlandırın:mv /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control.old /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control
db_upgradekomutunu 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
- PostgreSQL yapılandırma dosyasında
/opt/apigee/apigee-postgresql/conf/pg_hba.confistediğiniz çoğaltma ayarlarının olup olmadığını kontrol edin. - 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.
- Değilse Çözüm bölümüne gidin.
Çözüm
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
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/Aşağıdaki komutu kullanarak yedekleme verilerini
/opt/apigee/data/apigee-postgresql/pgdata-version.old/konumundan/opt/apigee/data/apigee-postgresql/pgdatakonumuna 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
Hiçbir zaman slave ana makinesini değiştirmediyseniz yapılandırma dosyasını güncellemek için
/opt/apigee/customer/application/postgresql.propertiesbölümünde aşağıdaki özelliği 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 trustYukarıdaki 4. adımda ayarlanan özelliğin yapılandırma dosyasına
pg_hba.confgüncellendiğinden emin olmak içinapigee-postgresqlhizmetini yeniden başlatın:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
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.confdeğiştirilemez hale getirin:chattr +i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
db_upgradekomutunu yeniden çalıştırın:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
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
Aşağıdaki adımları uygulayarak rolesuper değeri true olarak ayarlanmış başka bir kullanıcı olup olmadığını kontrol edin:
PostgreSQL düğümünde aşağıdaki komutu kullanarak PostgreSQL'e giriş yapın:
psql -h $(hostname -i) -U apigee
Aşağıdaki SQL sorgusunu çalıştırın:
select * from pg_authid;
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
Aşağıdaki komutu kullanarak PostgreSQL'e giriş yapın:
psql -h $(hostname -i) -U apigee
Eski veritabanındaki mevcut
apigeerolünü geçici bir kullanıcı olarak yeniden adlandırın (örneğin:apigee2):update pg_authid set rolname ='apigee2' where rolname = 'apigee';
Başka bir yükleme kullanıcısı
srcapigeolduğunu varsayalım.srcapigerolünüapigeeolarak yeniden adlandırın:update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
apigee2kullanıcısınısrcapigekullanıcısı olarak yeniden adlandırın:update pg_authid set rolname ='secapigee' where rolname = 'apigee2';
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>';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
/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/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
db_upgradekomutunu yeniden çalıştırın:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Tüm
apigee-qpiddveedge-qpid-serverhizmetlerini 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:
/opt/apigee/apigee-postgresql/lib/actions/db_upgradedosyasının ikinci satırınaset -xekleyin.Genel teşhis adımlarını uygulayın ve
db_upgradekomutunun konsol çıkışını destek ekibine iletin:opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
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.logAlternatiflerin
autoolarak 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 pgsqlupdate-alternatives --listAlternatifler
manualolarak ayarlanmışsa aşağıdaki komutu kullanarak bunlarıautoolarak ayarlayabilirsiniz:update-alternatives --auto psql
Alternatifleri
autoolarak ayarlamak,psqlvepostgresikili 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.