Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
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 kończy się niepowodzeniem z powodu nieprawidłowych ustawień replikacji podczas uaktualniania. | Użytkownicy Edge Private Cloud |
| Instalacja PostgreSQL przeprowadzona przez innego użytkownika instalacji niż użytkownik apigee | PostgreSQL został początkowo zainstalowany przez innego użytkownika, co powoduje niepowodzenie uaktualnienia. | Użytkownicy Edge Private Cloud |
Typowe etapy diagnostyki
Jeśli podczas uaktualniania bazy danych PostgreSQL pojawi się błąd, wykonaj najpierw te 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 kopii zapasowej z
/opt/apigee/data/apigee-postgresql/pgdata-version.old/do/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…a następnie zmień nazwę pliku
pg_control.oldnapg_control, używając 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 nadal występuje, przejdź do sekcji Przyczyna: nieprawidłowe ustawienia replikacji w pliku konfiguracyjnym PostgreSQL.
Przyczyna: nieprawidłowe ustawienia replikacji w pliku konfiguracyjnym PostgreSQL
Diagnoza
- Sprawdź, czy plik konfiguracji PostgreSQL
/opt/apigee/apigee-postgresql/conf/pg_hba.confzawiera odpowiednie ustawienia replikacji. - Jeśli ten plik ma oczekiwane ustawienia replikacji, przejdź do sekcji Instalacja PostgreSQL przeprowadzona przez innego użytkownika niż „apigee”.
- Jeśli nie, przejdź do sekcji Rozwiązanie.
Rozdzielczość
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 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 kopii zapasowej z
/opt/apigee/data/apigee-postgresql/pgdata-version.old/do/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
Jeśli kiedykolwiek zmienisz hosta podrzędnego, musisz zaktualizować w pliku konfiguracyjnym następującą właściwość:
/opt/apigee/customer/application/postgresql.propertiespg_hba.confconf_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 upewnić się, że właściwość ustawiona wpg_hba.confkroku 4 powyżej została zaktualizowana w pliku konfiguracyjnym:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
Ustaw plik konfiguracji jako
pg_hba.confniezmienny, używając tego polecenia, aby mieć pewność, że podczas uaktualniania PostgreSQL nie zostaną w nim zapisane 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ń niezmienialne 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ż apigee.
Diagnoza
Sprawdź, czy inny użytkownik ma ustawioną wartość rolesuper na true. W tym celu wykonaj te czynności:
Na węźle PostgreSQL zaloguj się w PostgreSQL za pomocą tego polecenia:
psql -h $(hostname -i) -U apigee
Uruchom to zapytanie SQL:
select * from pg_authid;
Sprawdź, czy wielu użytkowników ma ustawioną wartość rolesuper na true. Jeśli tak jest, uaktualnienie PostgreSQL nie powiodło się, ponieważ inny użytkownik został ustawiony jako użytkownik instalacji zamiast użytkownika apigee. Każdy użytkownik z rolą rolesuper i niższym identyfikatorem OID jest uznawany za użytkownika instalacji.
Aby sprawdzić, czy występuje ten rodzaj problemu z rolą, uruchom te zapytania SQL:
select oid,rolname,rolsuper from pg_roles; select * from pg_user;
Rozdzielczość
Zaloguj się w PostgreSQL za pomocą tego polecenia:
psql -h $(hostname -i) -U apigee
Zmień nazwę istniejącej roli
apigeew starej bazie danych na tymczasową nazwę użytkownika (np.apigee2):update pg_authid set rolname ='apigee2' where rolname = 'apigee';
Załóżmy, że był jeszcze jeden użytkownik instalujący
srcapige. Zmień nazwę rolisrcapigenaapigee:update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
Zmień nazwę użytkownika
apigee2nasrcapige:update pg_authid set rolname ='secapigee' where rolname = 'apigee2';
Zaktualizuj hasło 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
Sprawdź, czy w folderze o nazwie
/opt/apigee/data/apigee-postgresql/pgdata-version.old/znajdują się oryginalne dane kopii zapasowej.Na przykład:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/Przywróć dane w folderze
/opt/apigee/data/apigee-postgresql/pgdata-version.old/do/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, przejdź do sekcji Informacje diagnostyczne, które musisz zebrać.
Musi zbierać informacje diagnostyczne
Jeśli po wykonaniu powyższych instrukcji problem nadal występuje, zbierz te informacje diagnostyczne: Skontaktuj się z zespołem pomocy Apigee i przekaż mu te informacje:
- W drugim wierszu pliku
/opt/apigee/apigee-postgresql/lib/actions/db_upgradedodajset -x. Wykonaj typowe czynności diagnostyczne i prześlij zespołowi pomocy dane wyjściowe z konsoli po wykonaniu 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.logPodaj dane wyjściowe tych poleceń systemu operacyjnego, aby sprawdzić, czy alternatywy są ustawione na
auto.update-alternatives --display psql
LUB
update-alternatives --display pgsqlupdate-alternatives --listJeśli alternatywne adresy URL są ustawione na
manual, możesz je ustawić naautoza pomocą tego polecenia:update-alternatives --auto psql
Ustawienie alternatyw na
autopowoduje, że pliki binarnepsqlipostgreswskazują uaktualnione wersje. W przeciwnym razie pliki binarne będą wskazywać starszą wersję, co może powodować problemy.