Errore di upgrade PostgreSQL

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione 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 errate 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 Edge Private Cloud
Installazione di PostgreSQL eseguita da un altro utente di installazione diverso dall'utente apigee PostgreSQL era installato inizialmente con un altro utente come utente installatore, il che porta a un errore di upgrade. Utenti di Edge Private Cloud

Passaggi diagnostici comuni

Se ricevi un errore durante l'upgrade del database PostgreSQL, esegui prima i seguenti passaggi di diagnostica:

  1. Rinomina la cartella dei dati PostgreSQL:

    mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
    
  2. 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/
    
  3. Ripristina i dati di backup in /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
  4. Esegui di nuovo il comando db_upgrade:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
    
  5. Se ricevi un messaggio di errore di tipo "Segui"...

    pg_resetxlog: could not open file "global/pg_control" for reading:
    No such file or directory
    

    ...quindi rinomina il file pg_control.old in pg_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 
    
  6. 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

  1. Verifica che il file di configurazione PostgreSQL /opt/apigee/apigee-postgresql/conf/pg_hba.conf abbia le impostazioni di replica che intendi utilizzare.
  2. Se questo file contiene le impostazioni di replica previste, vai a Installazione di PostgreSQL eseguita da un altro utente di installazione diverso dall'utente "apigee".
  3. In caso contrario, vai a Risoluzione.

Risoluzione

  1. Rinomina la cartella di dati PostgreSQL utilizzando il seguente comando:

    mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
    
  2. 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/
    
  3. 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 
    
  4. Se hai mai cambiato host secondario, devi aggiornare la seguente proprietà in /opt/apigee/customer/application/postgresql.properties per aggiornare il file di configurazione pg_hba.conf:

    conf_pg_hba_replication.connection=host replication apigee
    existing_slave_ip/32 trust\ \nhost replication apigee new_slave_ip/32 trust 
    
  5. Riavvia il servizio apigee-postgresql per assicurarti che la proprietà impostata nel passaggio 4 qui sopra venga aggiornata nel file di configurazione pg_hba.conf:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
    
  6. Rendi immutabile il file di configurazione pg_hba.conf utilizzando il seguente comando per assicurati che non venga aggiornato con impostazioni errate durante l'upgrade di PostgreSQL:

    chattr +i /opt/apigee/apigee-postgresql/conf/pg_hba.conf 
    
  7. Esegui di nuovo il comando db_upgrade:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
    
  8. Rimuovi l'impostazione immutabile sul 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

  1. Controlla se esiste un altro utente con rolesuper impostato su true seguendo questi passaggi:

    1. Sul nodo PostgreSQL, accedi a PostgreSQL utilizzando il seguente comando:

      psql -h $(hostname -i)  -U apigee
      
    2. Esegui questa query SQL:

      select * from pg_authid;
      
    3. Verifica se più utenti hanno il ruolo rolesuper impostato su true. In questo caso, l'upgrade di PostgreSQL non va a buon fine perché è stato impostato un altro utente come utente di installazione anziché l'utente apigee. Qualsiasi utente con il ruolo rolesuper e un OID inferiore è considerato un utente di installazione.

      Per verificare questo tipo di problema relativo al ruolo, esegui le seguenti query SQL:

      select oid,rolname,rolsuper from pg_roles;
      select * from pg_user;
      

Risoluzione

  1. Accedi a PostgreSQL utilizzando il seguente comando:

    psql -h $(hostname -i)  -U apigee
    
  2. Rinomina il ruolo apigee esistente nel database precedente in un utente temporaneo (ad esempio: apigee2):

    update pg_authid set rolname ='apigee2' where rolname = 'apigee'; 
    
  3. Supponiamo che ci sia stato un altro utente di installazione srcapige. Rinomina il ruolo srcapige in apigee:

    update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
    
  4. Rinomina l'utente apigee2 in srcapige:

    update pg_authid set rolname ='secapigee' where rolname = 'apigee2'; 
    
  5. Aggiorna la password per tutti gli utenti rinominati:

    ALTER ROLE apigee WITH PASSWORD '<secret>'; 
    ALTER ROLE srcapige WITH PASSWORD '<secret>'; 
    
  6. Rinomina la cartella di dati PostgreSQL utilizzando il seguente comando:

    mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
    
  7. Assicurati che siano presenti dati di backup originali in una cartella denominata /opt/apigee/data/apigee-postgresql/pgdata-version.old/

    Ad esempio:

    /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
    
  8. Ripristina i dati in /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 
    
  9. Esegui di nuovo il comando db_upgrade:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade 
    
  10. Riavvia tutti i servizi apigee-qpidd e edge-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 l'articolo È necessario raccogliere i dati diagnostici.

Deve raccogliere informazioni di diagnostica

Se il problema persiste dopo aver seguito le istruzioni per la risoluzione dei problemi riportate sopra, raccoglie le seguenti informazioni di diagnostica. Contatta l'assistenza Apigee e condividi queste informazioni con il team di assistenza:

  1. Aggiungi set -x nella seconda riga del file /opt/apigee/apigee-postgresql/lib/actions/db_upgrade.
  2. Segui i passaggi di diagnosi comuni e fornisci al team di assistenza l'output della console del comando db_upgrade:

    opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
    
  3. 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
    
  4. 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 su auto utilizzando il seguente comando:

    update-alternatives --auto psql
    

    Impostando le alternative su auto, i file binari psql e postgres vengono indirizzati a le versioni aggiornate. Altrimenti, i file binari rimanderanno alla versione precedente, il che può causare problemi.