Acontece que meu script falhou no reload
postgresql devido a um erro de autenticação. Então tudo abaixo é umproblema falsodo postgresql. Depois de corrigir o bug, o postgresql me permitiu escrever no servidor primário solo sem qualquer dificuldade. Agradeça a Nikita Kipriyanov pela ajuda, mas você pode omitir as palavras abaixo.
Meu objetivo é permitir que o servidor mestre ainda seja capaz de processar a solicitação de gravação enquanto o modo de espera falha. Percebi synchronous_commit =
que pode ser configurado manualmente off
e recarregar o servidor primário.
Outra configuração inclui repmgr.conf
para repmgr
:
use_replication_slots=yes
Portanto, o servidor standby criado por repmgr
solicita ao servidor primário que reserve wal-logs para ele enquanto estiver com falha. As coisas não acontecem exatamente como esperado - consigo confirmar a operação de gravação no primário e o modo de espera é capaz de cloná-la do primário, mas com um bug - o comando de gravação sempre fica preso aqui:
postgres=# CREATE DATABASE ANYTHING;
O prompt não apareceu novamente até que eu pressionei Ctrl
+ D
, com estas linhas:
^CCancel request sent
WARNING: canceling wait for synchronous replication due to user request
DETAIL: The transaction has already committed locally, but might not have been replicated to the standby.
CREATE DATABASE
postgres=#
Portanto, sempre travava sempre que eu tentava gravar no primário enquanto estava synchronous_commit = off
. ( psql -c ...
resultará em um congelamento no shell também) Isso significa que essa mudança temporária na configuração de replicação não atinge meu objetivo de evitar que o primário sofra um "ataque" enquanto o modo de espera encontra problemas!
Existe uma maneira de contornar esse congelamento? Obrigado.