Stai visualizzando la documentazione di Apigee Edge.
Vai alla
documentazione di Apigee X. informazioni
Sintomo
Ricevi un errore durante l'aggiornamento del database PostgreSQL.
Messaggio di errore
ERROR: PostgreSQL Upgrade FAILED
Possibili cause
Causa | Descrizione | Le istruzioni per la risoluzione dei problemi si applicano a |
---|---|---|
Impostazioni di replica non corrette nel file di configurazione PostgreSQL | L'upgrade di PostgreSQL non va a buon fine a causa di impostazioni di replica errate durante l'upgrade. | Utenti del cloud privato perimetrale |
Installazione di PostgreSQL eseguita da un altro utente di installazione diverso dall'utente di Apigee | PostgreSQL è stato installato inizialmente con un altro utente come utente dell'installazione, il che porta a un errore dell'upgrade. | Utenti del cloud privato perimetrale |
Passaggi di diagnosi comuni
Se viene visualizzato un errore durante l'upgrade del database PostgreSQL, prima esegui questi passaggi di diagnostica:
Rinomina la cartella di dati PostgreSQL:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Assicurati che i dati di backup originali si trovino in una cartella denominata
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
Ad esempio:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Ripristina i dati di backup di
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
in/opt/apigee/data/apigee-postgresql/pgdata
utilizzando il seguente comando:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Ad esempio:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Esegui di nuovo il comando
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Se ricevi l'errore di seguito...
pg_resetxlog: could not open file "global/pg_control" for reading: No such file or directory
...quindi rinomina il file
pg_control.old
inpg_control
utilizzando il seguente comando:mv /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control.old /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control
Esegui di nuovo il comando
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Se il problema persiste, vai a Causa: impostazioni di replica errate nel file di configurazione PostgreSQL.
Causa: impostazioni di replica errate nel file di configurazione PostgreSQL
Diagnosi
- Verifica se il file di configurazione PostgreSQL
/opt/apigee/apigee-postgresql/conf/pg_hba.conf
dispone delle impostazioni di replica volute. - Se questo file ha le impostazioni di replica previste, vai a Installazione di PostgreSQL eseguita da un altro utente di installazione diverso dall'utente "apigee".
- In caso contrario, vai a Risoluzione.
Risoluzione
Rinomina la cartella di dati PostgreSQL utilizzando il seguente comando:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Assicurati che i dati di backup originali si trovino in una cartella denominata:
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
Ad esempio:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Ripristina i dati di backup da
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
a/opt/apigee/data/apigee-postgresql/pgdata
utilizzando il seguente comando:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Ad esempio:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Se cambi l'host slave, devi aggiornare la seguente proprietà in
/opt/apigee/customer/application/postgresql.properties
per aggiornare il file di configurazionepg_hba.conf
:conf_pg_hba_replication.connection=host replication apigee existing_slave_ip/32 trust\ \nhost replication apigee new_slave_ip/32 trust
Riavvia il servizio
apigee-postgresql
per assicurarti che la proprietà impostata nel passaggio 4 precedente venga aggiornata nel file di configurazionepg_hba.conf
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
Rendi il file di configurazione
pg_hba.conf
immutabile utilizzando il seguente comando per assicurarti che non venga aggiornato con impostazioni errate durante l'upgrade di PostgreSQL:chattr +i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
Esegui di nuovo il comando
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Rimuovi l'impostazione immutabile dal file di configurazione
pg_hba.conf
:chattr -i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
Causa: installazione di PostgreSQL eseguita da un altro utente di installazione diverso dall'utente apigee
Diagnosi
Controlla se esistono altri utenti che hanno rolesuper impostato su true seguendo questi passaggi:
Nel nodo PostgreSQL, accedi a PostgreSQL utilizzando il seguente comando:
psql -h $(hostname -i) -U apigee
Esegui la seguente query SQL:
select * from pg_authid;
Verifica se più utenti hanno rolesuper impostato su true. In caso contrario, l'upgrade di PostgreSQL non riesce perché un altro utente è stato impostato come utente installazione anziché come utente apigee. Qualsiasi utente con il ruolo rolesuper e un OID inferiore è considerato un utente di installazione.
Per verificare questo tipo di problema relativo ai ruoli, esegui le seguenti query SQL:
select oid,rolname,rolsuper from pg_roles; select * from pg_user;
Risoluzione
Accedi a PostgreSQL utilizzando il seguente comando:
psql -h $(hostname -i) -U apigee
Rinomina il ruolo
apigee
esistente nel database precedente in base a un utente temporaneo (ad esempio:apigee2
):update pg_authid set rolname ='apigee2' where rolname = 'apigee';
Supponiamo che ci sia stato un altro utente dell'installazione
srcapige
. Rinomina il ruolosrcapige
inapigee
:update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
Rinomina
apigee2
come utentesrcapige
:update pg_authid set rolname ='secapigee' where rolname = 'apigee2';
Aggiorna la password per tutti gli utenti rinominati:
ALTER ROLE apigee WITH PASSWORD '<secret>'; ALTER ROLE srcapige WITH PASSWORD '<secret>';
Rinomina la cartella di dati PostgreSQL utilizzando il seguente comando:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Assicurati che esistano dati di backup originali all'interno di una cartella denominata
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
Ad esempio:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Ripristina i dati della cartella
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
in/opt/apigee/data/apigee-postgresql/pgdata
utilizzando il seguente comando:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Ad esempio:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Esegui di nuovo il comando
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Riavvia tutti i servizi
apigee-qpidd
eedge-qpid-server
:/opt/apigee/apigee-service/bin/apigee-service apigee-qpidd restart
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
Se il problema persiste, consulta la pagina Devi raccogliere dati diagnostici.
Devi raccogliere dati diagnostici
Se il problema persiste dopo aver seguito le istruzioni per la risoluzione dei problemi riportate sopra, raccogli le seguenti informazioni diagnostiche. Contatta l'assistenza Apigee e condividi queste informazioni con il team di assistenza:
- Aggiungi
set -x
nella seconda riga del file/opt/apigee/apigee-postgresql/lib/actions/db_upgrade
. Segui la procedura di diagnostica comune e fornisci l'output della console del comando
db_upgrade
al team di assistenza:opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Fornisci i seguenti file di log al team di assistenza:
/opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log /opt/apigee/var/log/apigee-postgresql/update.log
Fornisci l'output dei seguenti comandi del sistema operativo per verificare se le alternative sono impostate su
auto
.update-alternatives --display psql
OPPURE
update-alternatives --display pgsql
update-alternatives --list psql
OPPURE
update-alternatives --list pgsql
Se le alternative sono impostate su
manual
, puoi impostarle suauto
utilizzando il seguente comando:update-alternatives --auto psql
L'impostazione delle alternative su
auto
indirizza i programmi binaripsql
epostgres
alle versioni aggiornate. In caso contrario, i programmi binari rimanderanno alla versione precedente, il che può causare problemi.