Stai visualizzando la documentazione di Apigee Edge.
Consulta la
documentazione di Apigee X. info
Sintomo
Si verifica 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 errate nel file di configurazione PostgreSQL | L'upgrade di PostgreSQL non riesce a causa di impostazioni di replica errate durante l'upgrade. | Utenti di Edge Private Cloud |
| Installazione di PostgreSQL eseguita da un altro utente di installazione diverso dall'utente apigee | PostgreSQL è stato inizialmente installato con un altro utente come utente di installazione, il che comporta un errore di upgrade. | Utenti di Edge Private Cloud |
Passaggi comuni per la diagnostica
Se ricevi un errore durante l'upgrade del database PostgreSQL, esegui prima i seguenti passaggi di diagnostica:
Rinomina la cartella dei 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 in
/opt/apigee/data/apigee-postgresql/pgdata-version.old/in/opt/apigee/data/apigee-postgresql/pgdatautilizzando 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 il seguente errore…
pg_resetxlog: could not open file "global/pg_control" for reading: No such file or directory...quindi rinomina il file
pg_control.oldinpg_controlutilizzando 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
- Controlla se il file di configurazione PostgreSQL
/opt/apigee/apigee-postgresql/conf/pg_hba.confcontiene le impostazioni di replica che ti interessano. - 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 dei 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/pgdatautilizzando 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 hai mai modificato l'host slave, devi aggiornare la seguente proprietà in
/opt/apigee/customer/application/postgresql.propertiesper 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 trustRiavvia il servizio
apigee-postgresqlper assicurarti che la proprietà impostata nel passaggio 4 sopra 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.confimmutabile 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 nel 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 un altro utente ha rolesuper impostato su true seguendo questi passaggi:
Sul nodo PostgreSQL, accedi a PostgreSQL utilizzando il comando seguente:
psql -h $(hostname -i) -U apigee
Esegui la seguente query SQL:
select * from pg_authid;
Controlla se più utenti hanno rolesuper impostato su true. In questo caso, l'upgrade di PostgreSQL non riesce perché un altro utente è stato impostato come utente di installazione anziché come utente apigee. Qualsiasi utente con il ruolo rolesuper e un OID inferiore viene 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
apigeeesistente nel vecchio database in un utente temporaneo (ad esempio:apigee2):update pg_authid set rolname ='apigee2' where rolname = 'apigee';
Supponiamo che ci sia un altro utente di installazione
srcapige. Rinomina il ruolosrcapigeinapigee:update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
Rinomina
apigee2con l'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 dei dati PostgreSQL utilizzando il seguente comando:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Assicurati che all'interno di una cartella denominata
/opt/apigee/data/apigee-postgresql/pgdata-version.old/siano presenti dati di backup originali.Ad esempio:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/Ripristina i dati nella cartella
/opt/apigee/data/apigee-postgresql/pgdata-version.old/in/opt/apigee/data/apigee-postgresql/pgdatautilizzando 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-qpiddeedge-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, vai a Informazioni diagnostiche da raccogliere.
Deve raccogliere informazioni diagnostiche
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 -xalla seconda riga del file/opt/apigee/apigee-postgresql/lib/actions/db_upgrade. Segui i passaggi di diagnosi comuni e fornisci l'output della console del comando
db_upgradeal 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.logFornisci 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 pgsqlupdate-alternatives --listSe le alternative sono impostate su
manual, puoi impostarle suautoutilizzando il seguente comando:update-alternatives --auto psql
Se imposti le alternative su
auto, i file binaripsqlepostgresvengono indirizzati alle versioni aggiornate. In caso contrario, i file binari punteranno alla versione precedente, il che può causare problemi.