Você está lendo a documentação do Apigee Edge.
Acesse a documentação da
Apigee X. info
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 de 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 durante o processo. | 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 do Apigee | O PostgreSQL foi instalado inicialmente com outro usuário como usuário de instalação, o que causa falha no 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, siga estas 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...em seguida, renomeie o arquivo
pg_control.oldparapg_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 do PostgreSQL
/opt/apigee/apigee-postgresql/conf/pg_hba.conftem as configurações de replicação desejadas. - 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 o usuário "apigee".
- Caso contrário, acesse Resoluçã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, atualize 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 na Etapa 4 acima seja atualizada no arquivo de configuraçãopg_hba.conf:/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart
Use o comando a seguir para tornar o arquivo de configuração
pg_hba.confimutável e garantir 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 no arquivo de configuração
pg_hba.conf:chattr -i /opt/apigee/apigee-postgresql/conf/pg_hba.conf
Causa: instalação do PostgreSQL realizada por outro usuário de instalação que não seja o usuário apigee
Diagnóstico
Verifique se há outro usuário com rolesuper definido como true seguindo estas etapas:
No nó do PostgreSQL, faça login usando o seguinte comando:
psql -h $(hostname -i) -U apigee
Execute a seguinte consulta SQL:
select * from pg_authid;
Verifique se há vários usuários com rolesuper definido como true. Se houver, o upgrade do PostgreSQL está falhando porque outro usuário foi definido como usuário de instalação em vez do usuário apigee. Qualquer usuário com a função rolesuper e um OID menor é considerado um usuário de instalação.
Para verificar esse tipo de problema de função, 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 banco de dados antigo para um usuário temporário (por exemplo,apigee2):update pg_authid set rolname ='apigee2' where rolname = 'apigee';
Digamos que haja outro usuário de instalação
srcapige. Renomeie a funçãosrcapigeparaapigee:update pg_authid set rolname ='apigee' where rolname = 'srcapigee';
Renomeie o usuário
apigee2parasrcapige: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
Verifique se há dados de backup originais 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 na pasta
/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
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 -xna segunda linha do arquivo/opt/apigee/apigee-postgresql/lib/actions/db_upgrade. Siga as etapas comuns de diagnóstico e envie a saída do console do comando
db_upgradepara a 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 seguintes comandos do sistema operacional para verificar se as alternativas estão definidas como
auto.update-alternatives --display psql
OU
update-alternatives --display pgsqlupdate-alternatives --listSe as alternativas estiverem 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 vão apontar para a versão mais antiga, o que pode causar problemas.