Estás viendo la documentación de Apigee Edge.
Ve a la
Documentación de Apigee X. información
Síntoma
Recibirás un error cuando actualices la base de datos de PostgreSQL.
Mensaje de error
ERROR: PostgreSQL Upgrade FAILED
Causas posibles
Causa | Descripción | Las instrucciones de solución de problemas se aplican a |
---|---|---|
Configuración de replicación incorrecta en el archivo de configuración de PostgreSQL | La actualización de PostgreSQL falla debido a una configuración de replicación incorrecta durante la actualización. | Usuarios de la nube privada de Edge |
La instalación de PostgreSQL la realizó otro usuario de instalación que no es el usuario de apigee | PostgreSQL se instaló inicialmente con otro usuario como usuario de instalación, lo que genera un error en la actualización. | Usuarios de la nube privada perimetral |
Pasos comunes de diagnóstico
Si ves un error cuando actualizas la base de datos de PostgreSQL, sigue estos pasos: los pasos del diagnóstico primero:
Cambia el nombre de la carpeta de datos de PostgreSQL:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Asegúrate de que los datos de la copia de seguridad original estén en una carpeta llamada
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
.Por ejemplo:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Restablece los datos de copia de seguridad en
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
a/opt/apigee/data/apigee-postgresql/pgdata
con el siguiente comando:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Por ejemplo:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Vuelve a ejecutar el comando
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Si recibes el siguiente error...
pg_resetxlog: could not open file "global/pg_control" for reading: No such file or directory
…Luego, cambia el nombre del archivo
pg_control.old
apg_control
con el siguiente comando:mv /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control.old /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control
Vuelve a ejecutar el comando
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Si el problema persiste, consulta Causa: Configuración de replicación incorrecta en el archivo de configuración de PostgreSQL.
Causa: Configuración de replicación incorrecta en el archivo de configuración de PostgreSQL
Diagnóstico
- Verifica si el archivo de configuración de PostgreSQL
/opt/apigee/apigee-postgresql/conf/pg_hba.conf
tenga la configuración de replicación que deseas. - Si este archivo tiene la configuración de replicación esperada, dirígete a Instalación de PostgreSQL realizada por otro usuario de instalación que no sea "apigee" usuario.
- De lo contrario, ve a Resolución.
Solución
Cambia el nombre de la carpeta de datos de PostgreSQL con el siguiente comando:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Asegúrate de que los datos de la copia de seguridad original estén en una carpeta llamada
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
.Por ejemplo:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Restablece los datos de la copia de seguridad de
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
a/opt/apigee/data/apigee-postgresql/pgdata
con el siguiente comando:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Por ejemplo:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Si alguna vez cambiaste el host secundario, debes actualizar la siguiente propiedad en
/opt/apigee/customer/application/postgresql.properties
para actualizar el archivo de configuraciónpg_hba.conf
:conf_pg_hba_replication.connection=host replication apigee existing_slave_ip/32 trust\ \nhost replication apigee new_slave_ip/32 trust
Reinicia el servicio
apigee-postgresql
para asegurarte de que la propiedad establecida en El paso 4 anterior se actualiza en el archivo de configuraciónpg_hba.conf
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
Haz que el archivo de configuración
pg_hba.conf
sea inmutable con el siguiente comando para asegúrate de que no se actualice con una configuración incorrecta durante la actualización de PostgreSQL:chattr +i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
Vuelve a ejecutar el comando
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Quita el parámetro de configuración inmutable del archivo de configuración
pg_hba.conf
:chattr -i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
Causa: Un usuario de instalación de PostgreSQL que no es el usuario apigee
realizó la instalación de PostgreSQL.
Diagnóstico
Comprueba si hay algún otro usuario que haya configurado rolesuper como true siguiendo estos pasos:
En el nodo de PostgreSQL, accede a PostgreSQL con el siguiente comando:
psql -h $(hostname -i) -U apigee
Ejecuta la siguiente consulta en SQL:
select * from pg_authid;
Comprueba si hay varios usuarios que tengan rolesuper configurado como true. Si la hay, entonces la actualización de PostgreSQL está fallando porque otro usuario Se configuró como install user, en lugar de apigee. Cualquier usuario con el rolesuper y un OID inferior se consideran usuarios de instalación.
Para verificar este tipo de problema de roles, ejecuta las siguientes consultas SQL:
select oid,rolname,rolsuper from pg_roles; select * from pg_user;
Solución
Accede a PostgreSQL con el siguiente comando:
psql -h $(hostname -i) -U apigee
Cambia el nombre del rol
apigee
existente en la base de datos anterior a un usuario temporal (por ejemplo,apigee2
):update pg_authid set rolname ='apigee2' where rolname = 'apigee';
Supongamos que hay otro usuario de instalación
srcapige
. Cambia el nombre del rol desrcapige
aapigee
:update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
Cambia el nombre de
apigee2
por el usuariosrcapige
:update pg_authid set rolname ='secapigee' where rolname = 'apigee2';
Actualiza la contraseña de todos los usuarios a los que se les cambió el nombre:
ALTER ROLE apigee WITH PASSWORD '<secret>'; ALTER ROLE srcapige WITH PASSWORD '<secret>';
Cambia el nombre de la carpeta de datos de PostgreSQL con el siguiente comando:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Asegúrate de que haya datos de copia de seguridad originales en una carpeta llamada
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
.Por ejemplo:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Restablece los datos en
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
a/opt/apigee/data/apigee-postgresql/pgdata
con el siguiente comando:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Por ejemplo:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Vuelve a ejecutar el comando
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Reinicia todos los servicios
apigee-qpidd
yedge-qpid-server
:/opt/apigee/apigee-service/bin/apigee-service apigee-qpidd restart
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
Si el problema persiste, consulta Recopila información de diagnóstico.
Se debe recopilar información de diagnóstico
Si el problema persiste después de seguir las instrucciones anteriores para solucionar problemas, recopilar la siguiente información de diagnóstico. Comunícate con el equipo de asistencia de Apigee y comparte esta información con el equipo de asistencia al cliente:
- Agrega
set -x
en la segunda línea del archivo/opt/apigee/apigee-postgresql/lib/actions/db_upgrade
. Sigue los pasos comunes de diagnóstico y proporciona el resultado de la consola del comando
db_upgrade
al equipo de asistencia al cliente:opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Proporciona los siguientes archivos de registro al equipo de asistencia al cliente:
/opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log /opt/apigee/var/log/apigee-postgresql/update.log
Proporciona el resultado de los siguientes comandos del sistema operativo para verificar si las alternativas están configuradas en
auto
.update-alternatives --display psql
O
update-alternatives --display pgsql
update-alternatives --list psql
O
update-alternatives --list pgsql
Si las alternativas están configuradas como
manual
, puedes establecerlas enauto
con el siguiente :update-alternatives --auto psql
Si configuras las alternativas en
auto
, los objetos binariospsql
ypostgres
apuntan a las versiones actualizadas. De lo contrario, los objetos binarios apuntarán a la versión anterior, lo que puede causar problemas.