Esta é a documentação do Apigee Edge.
Acesse
Documentação da Apigee X. informações
Sintoma
Você recebe um erro ao atualizar o banco de dados PostgreSQL.
Mensagem de erro
ERROR: PostgreSQL Upgrade FAILED
Causas possíveis
Causa | Descrição | As instruções para solução de problemas se aplicam a |
---|---|---|
Configurações de replicação incorretas no arquivo de configuração do PostgreSQL | O upgrade do PostgreSQL falha devido a configurações de replicação incorretas. | Usuários da nuvem privada do Edge |
Instalação do PostgreSQL realizada por outro usuário de instalação que não seja o usuário da apigee | O PostgreSQL foi instalado inicialmente com outro usuário como usuário de instalação, o que leva ao fracasso do upgrade. | Usuários da nuvem privada do Edge |
Etapas comuns do diagnóstico
Se você receber um erro ao fazer upgrade do banco de dados PostgreSQL, faça o seguinte: etapas de diagnóstico primeiro:
Renomeie a pasta de dados do PostgreSQL:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Verifique se os dados de backup originais estão em uma pasta chamada
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
.Exemplo:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Restaure os dados de backup em
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
para/opt/apigee/data/apigee-postgresql/pgdata
usando o seguinte comando:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Exemplo:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Execute novamente o comando
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Se você receber o seguinte erro...
pg_resetxlog: could not open file "global/pg_control" for reading: No such file or directory
...e renomeie o arquivo
pg_control.old
comopg_control
usando o seguinte comando:mv /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control.old /apigee/apigeeinst/data/apigee-postgresql/pgdata/global/pg_control
Execute novamente o comando
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Se o problema persistir, acesse Causa: configurações de replicação incorretas no arquivo de configuração do PostgreSQL.
Causa: configurações de replicação incorretas no arquivo de configuração do PostgreSQL
Diagnóstico
- Verifique se o arquivo de configuração
/opt/apigee/apigee-postgresql/conf/pg_hba.conf
do PostgreSQL tem as configurações de replicação que você quer. - Se esse arquivo tiver as configurações de replicação esperadas, acesse Instalação do PostgreSQL realizada por outro usuário de instalação que não seja "apigee".
- Caso contrário, acesse Solução.
Resolução
Renomeie a pasta de dados do PostgreSQL usando o seguinte comando:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Verifique se os dados de backup originais estão em uma pasta chamada
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
.Exemplo:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Restaure os dados de backup de
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
para/opt/apigee/data/apigee-postgresql/pgdata
usando o seguinte comando:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Exemplo:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Se você já mudou o host escravo, então deve atualizar a seguinte propriedade em
/opt/apigee/customer/application/postgresql.properties
para atualizar o arquivo de configuraçãopg_hba.conf
:conf_pg_hba_replication.connection=host replication apigee existing_slave_ip/32 trust\ \nhost replication apigee new_slave_ip/32 trust
Reinicie o serviço
apigee-postgresql
para garantir que a propriedade definida em A etapa 4 acima é atualizada no arquivo de configuraçãopg_hba.conf
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
Torne o arquivo de configuração
pg_hba.conf
imutável usando o seguinte comando para Garanta que ele não seja atualizado com configurações incorretas durante o upgrade do PostgreSQL:chattr +i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
Execute novamente o comando
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Remova a configuração imutável do arquivo de configuração
pg_hba.conf
:chattr -i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
Causa: a instalação do PostgreSQL realizada por outro usuário instalado que não seja o usuário apigee
Diagnóstico
Verifique se há algum outro usuário com rolesuper definido como true, seguindo estas etapas:
No nó do PostgreSQL, faça login no PostgreSQL usando o seguinte comando:
psql -h $(hostname -i) -U apigee
Execute a seguinte consulta SQL:
select * from pg_authid;
Verifique se vários usuários têm rolesuper definido como true. Se houver, o upgrade do PostgreSQL está falhando porque outro usuário foi definido como install user em vez do usuário apigee. Qualquer usuário com a função rolesuper e um OID mais baixo é considerado um usuário de instalação.
Para verificar esse tipo de problema de papel, execute as seguintes consultas SQL:
select oid,rolname,rolsuper from pg_roles; select * from pg_user;
Resolução
Faça login no PostgreSQL usando o seguinte comando:
psql -h $(hostname -i) -U apigee
Renomeie a função
apigee
no DB antigo para um usuário temporário (por exemplo,apigee2
):update pg_authid set rolname ='apigee2' where rolname = 'apigee';
Digamos que houve outro usuário de instalação
srcapige
. Renomeie a funçãosrcapige
paraapigee
:update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
Renomeie
apigee2
para o usuáriosrcapige
:update pg_authid set rolname ='secapigee' where rolname = 'apigee2';
Atualize a senha de todos os usuários renomeados:
ALTER ROLE apigee WITH PASSWORD '<secret>'; ALTER ROLE srcapige WITH PASSWORD '<secret>';
Renomeie a pasta de dados do PostgreSQL usando o seguinte comando:
mv /opt/apigee/data/apigee-postgresql/pgdata /opt/apigee/data/apigee-postgresql/pgdata-bkp
Certifique-se de que haja dados de backup originais dentro de uma pasta chamada
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
Exemplo:
/opt/apigee/data/apigee-postgresql/pgdata-9.6.old/
Restaurar os dados no
/opt/apigee/data/apigee-postgresql/pgdata-version.old/
da pasta para/opt/apigee/data/apigee-postgresql/pgdata
usando o seguinte comando:mv /opt/apigee/data/apigee-postgresql/pgdata-version.old/ /opt/apigee/data/apigee-postgresql/pgdata
Exemplo:
mv /opt/apigee/data/apigee-postgresql/pgdata-9.6.old/ /opt/apigee/data/apigee-postgresql/pgdata
Execute novamente o comando
db_upgrade
:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Reinicie todos os serviços
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 o problema persistir, acesse Precisa de informações de diagnóstico.
É necessário coletar informações de diagnóstico
Se o problema persistir depois de seguir as instruções de solução de problemas acima, reúna as seguintes informações de diagnóstico. Entre em contato com o suporte da Apigee e compartilhe estas informações com a equipe de suporte:
- Adicione
set -x
à segunda linha do arquivo/opt/apigee/apigee-postgresql/lib/actions/db_upgrade
. Siga as Etapas comuns de diagnóstico e forneça a saída do console do comando
db_upgrade
à equipe de suporte:opt/apigee/apigee-service/bin/apigee-service apigee-postgresql db_upgrade
Envie os seguintes arquivos de registro para a equipe de suporte:
/opt/apigee/var/log/apigee-postgresql/apigee-postgresql.log /opt/apigee/var/log/apigee-postgresql/update.log
Forneça a saída dos comandos do sistema operacional a seguir para verificar se as alternativas estão definidas como
auto
.update-alternatives --display psql
OU
update-alternatives --display pgsql
update-alternatives --list psql
OU
update-alternatives --list pgsql
Se as alternativas forem definidas como
manual
, você poderá defini-las comoauto
usando o seguinte comando:update-alternatives --auto psql
Definir as alternativas como
auto
aponta os bináriospsql
epostgres
para as versões atualizadas. Caso contrário, os binários apontarão para a versão mais antiga, o que pode causar problemas.