Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. informacje
Krótki opis problemu
Podczas aktualizowania bazy danych PostgreSQL pojawia się błąd.
Komunikat o błędzie
ERROR: PostgreSQL Upgrade FAILED
Możliwe przyczyny
| Przyczyna | Opis | Instrukcje rozwiązywania problemów dotyczą |
|---|---|---|
| Nieprawidłowe ustawienia replikacji w pliku konfiguracyjnym PostgreSQL | Uaktualnienie PostgreSQL nie udaje się z powodu nieprawidłowych ustawień replikacji podczas uaktualniania. | Użytkownicy chmury prywatnej Edge |
| Instalacja PostgreSQL przeprowadzona przez innego użytkownika niż użytkownik apigee | PostgreSQL został początkowo zainstalowany z innym użytkownikiem jako użytkownikiem instalującym, co prowadzi do niepowodzenia aktualizacji. | Użytkownicy Edge Private Cloud |
Najczęstsze kroki diagnostyki
Jeśli podczas uaktualniania bazy danych PostgreSQL pojawi się błąd, wykonaj te czynności najpierw czynności diagnostyczne:
Zmień nazwę folderu danych PostgreSQL:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Upewnij się, że oryginalne dane kopii zapasowej znajdują się w folderze o nazwie
/opt/apigee/data/apigee-postgresql/pgdata-version.old/.Na przykład:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/Przywróć dane z kopii zapasowej z folderu
/opt/apigee/data/apigee-postgresql/pgdata-version.old/do folderu/opt/apigee/data/apigee-postgresql/pgdataza pomocą tego polecenia:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Na przykład:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Ponownie uruchom polecenie
db_upgrade:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Jeśli pojawi się ten błąd...
pg_resetxlog: could not open file "global/pg_control" for reading: No such file or directory...i zmień nazwę pliku
pg_control.oldnapg_controlza pomocą tego polecenia:mv /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control.old /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control
Ponownie uruchom polecenie
db_upgrade:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Jeśli problem będzie się powtarzał, przejdź do sekcji Przyczyna: nieprawidłowe ustawienia replikacji w pliku konfiguracji PostgreSQL.
Przyczyna: nieprawidłowe ustawienia replikacji w pliku konfiguracji PostgreSQL
Diagnostyka
- Sprawdź, czy plik konfiguracji PostgreSQL
/opt/apigee/apigee-postgresql/conf/pg_hba.confma odpowiednie ustawienia replikacji. - Jeśli ten plik zawiera oczekiwane ustawienia replikacji, przejdź do sekcji Instalacja PostgreSQL przeprowadzona przez innego użytkownika niż „apigee”.
- Jeśli nie, przejdź do sekcji Rozwiązanie.
Rozwiązanie
Zmień nazwę folderu danych PostgreSQL za pomocą tego polecenia:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Sprawdź, czy pierwotna kopia zapasowa danych znajduje się w folderze o nazwie
/opt/apigee/data/apigee-postgresql/pgdata-version.old/Na przykład:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/Przywróć dane kopii zapasowej z
/opt/apigee/data/apigee-postgresql/pgdata-version.old/do/opt/apigee/data/apigee-postgresql/pgdataprzy użyciu tego polecenia:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Na przykład:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Jeśli kiedykolwiek zmienisz hosta podrzędnego, musisz zaktualizować kolejną usługę w
/opt/apigee/customer/application/postgresql.properties, aby zaktualizować plik konfiguracyjnypg_hba.conf:conf_pg_hba_replication.connection=host replication apigee existing_slave_ip/32 trust\ \nhost replication apigee new_slave_ip/32 trustUruchom ponownie usługę
apigee-postgresql, aby mieć pewność, że właściwości ustawione naapigee-postgresqlkroku 4 powyżej zostaną zaktualizowane w pliku konfiguracjipg_hba.conf:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
Ustaw plik konfiguracyjny
pg_hba.confjako stały, używając tego polecenia, aby upewnij się, że podczas uaktualniania PostgreSQL nie zostaną zaktualizowane nieprawidłowe ustawienia:chattr +i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
Ponownie uruchom polecenie
db_upgrade:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Usuń niemodyfikowalne ustawienie w pliku konfiguracyjnym
pg_hba.conf:chattr -i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
Przyczyna: instalacja PostgreSQL została przeprowadzona przez innego użytkownika niż użytkownik apigee
Diagnostyka
Aby sprawdzić, czy inny użytkownik ma ustawioną wartość true dla parametru rolesuper:
Na węźle PostgreSQL zaloguj się w PostgreSQL za pomocą tego polecenia:
psql -h $(hostname -i) -U apigee
Wykonaj to zapytanie SQL:
select * from pg_authid;
Sprawdź, czy istnieje wielu użytkowników z wartością rolesuper równą true. Jeśli tak, oznacza to, że uaktualnienie PostgreSQL powoduje błąd, ponieważ inny użytkownik została ustawiona jako instalacja użytkownika, a nie użytkownika apigee. Każdy użytkownik z rolą rolesuper i niższym identyfikatorem OID jest uważany za użytkownika instalacji.
Aby sprawdzić tego rodzaju problem z rolami, uruchom te zapytania SQL:
select oid,rolname,rolsuper from pg_roles; select * from pg_user;
Rozwiązanie
Zaloguj się w PostgreSQL za pomocą tego polecenia:
psql -h $(hostname -i) -U apigee
Zmień nazwę istniejącej roli
apigeew starej bazie danych na użytkownika tymczasowego (na przykładapigee2):update pg_authid set rolname ='apigee2' where rolname = 'apigee';
Załóżmy, że był inny użytkownik instalujący
srcapige. Zmień nazwęsrcapigerolę użytkownikaapigee:update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
Zmień nazwę pola
apigee2na użytkownikasrcapige:update pg_authid set rolname ='secapigee' where rolname = 'apigee2';
Zaktualizuj hasła wszystkich użytkowników, których nazwy zostały zmienione:
ALTER ROLE apigee WITH PASSWORD '<secret>'; ALTER ROLE srcapige WITH PASSWORD '<secret>';Zmień nazwę folderu danych PostgreSQL za pomocą tego polecenia:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Upewnij się, że w folderze o nazwie
/opt/apigee/data/apigee-postgresql/pgdata-version.old/znajdują się dane z oryginalnej kopii zapasowej.Na przykład:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/Przywróć dane z folderu
/opt/apigee/data/apigee-postgresql/pgdata-version.old/do folderu/opt/apigee/data/apigee-postgresql/pgdataza pomocą tego polecenia:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Na przykład:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Ponownie uruchom polecenie
db_upgrade:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Ponownie uruchom wszystkie usługi
apigee-qpiddiedge-qpid-server:/opt/apigee/apigee-service/bin/apigee-service apigee-qpidd restart/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
Jeśli problem nadal występuje, przeczytaj artykuł Wymagane są informacje diagnostyczne.
Musi zbierać informacje diagnostyczne
Jeśli po wykonaniu powyższych czynności problem nie ustąpi, Zbierzesz poniższe informacje diagnostyczne. Skontaktuj się z zespołem pomocy Apigee i przekaż mu te informacje:
- Dodaj
set -xw 2. wierszu pliku/opt/apigee/apigee-postgresql/lib/actions/db_upgrade. Wykonaj standardowe czynności diagnostyczne i prześlij zespołowi pomocy dane z wyjścia konsoli dla polecenia
db_upgrade:opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Prześlij zespołowi pomocy te pliki dziennika:
/opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log /opt/apigee/var/log/apigee-postgresql/update.logAby sprawdzić, czy opcje są ustawione na
auto, podaj dane wyjściowe z tych poleceń systemu operacyjnego:update-alternatives --display psql
LUB
update-alternatives --display pgsqlupdate-alternatives --list psqlLUB
update-alternatives --list pgsql
Jeśli opcje alternatywne mają ustawienie
manual, możesz ustawić je naautoza pomocą tych instrukcji polecenie:update-alternatives --auto psql
Ustawienie alternatywnych opcji na
autopowoduje, że pliki binarnepsqlipostgressą kierowane na do nowszej wersji. W przeciwnym razie pliki binarne będą wskazywać starszą wersję, co może powodować problemy.