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/pgdata
za 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.old
napg_control
za 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.conf
ma 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/pgdata
przy 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 trust
Uruchom ponownie usługę
apigee-postgresql
, aby mieć pewność, że właściwości ustawione naapigee-postgresql
kroku 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.conf
jako 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
apigee
w 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ęsrcapige
rolę użytkownikaapigee
:update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
Zmień nazwę pola
apigee2
na 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/pgdata
za 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-qpidd
iedge-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 -x
w 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.log
Aby sprawdzić, czy opcje są ustawione na
auto
, podaj dane wyjściowe z tych poleceń systemu operacyjnego:update-alternatives --display psql
LUB
update-alternatives --display pgsql
update-alternatives --list psql
LUB
update-alternatives --list pgsql
Jeśli opcje alternatywne mają ustawienie
manual
, możesz ustawić je naauto
za pomocą tych instrukcji polecenie:update-alternatives --auto psql
Ustawienie alternatywnych opcji na
auto
powoduje, że pliki binarnepsql
ipostgres
są kierowane na do nowszej wersji. W przeciwnym razie pliki binarne będą wskazywać starszą wersję, co może powodować problemy.