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/pgdatausando 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.oldcomopg_controlusando 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.confdo 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/pgdatausando 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.propertiespara 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 trustReinicie o serviço
apigee-postgresqlpara 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.confimutá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
apigeeno 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çãosrcapigeparaapigee:update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
Renomeie
apigee2para 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/pgdatausando 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-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 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.logForneç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 pgsqlupdate-alternatives --list psqlOU
update-alternatives --list pgsql
Se as alternativas forem definidas como
manual, você poderá defini-las comoautousando o seguinte comando:update-alternatives --auto psql
Definir as alternativas como
autoaponta os bináriospsqlepostgrespara as versões atualizadas. Caso contrário, os binários apontarão para a versão mais antiga, o que pode causar problemas.