Replicação de streaming simples e antiga. PostgreSQL: 9.2.7 Windows 8.1 64 bits
Meus clusters primários e secundários estão na mesma máquina Windows. Eu já fiz pg_start_backup() e tudo, então ambos os nós têm exatamente os mesmos dados.
Agora, o problema com a replicação é a "conexão de replicação" do servidor escravo, não se conecta ao servidor primário, mas posso conectar usando os mesmos parâmetros usando o shell do psql. O que eu acho culpado é a string de conexão no recovery.conf do slave:
primary_conninfo = 'host = 127.0.0.1 port = 5432 user = postgres password = postgres'
Eu tentei localhost, 0.0.0.0, lan IP tudo, mas pg log diz:
FATAL: could not connect to the primary server: FATAL: no pg_hba.conf entry for replication connection from host "127.0.0.1", user "postgres", SSL off
Agora veja o pg_hba.conf do meu Mestre:
host all all 0.0.0.0/0 trust
host all postgres 127.0.0.1/0 trust
# IPv6 local connections:
host all all ::1/128 md5
hostnossl all postgres 127.0.0.1/32 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#host replication postgres 127.0.0.1/32 md5
#host replication postgres ::1/128 md5
É como se eu permitisse todas as conexões possíveis, mas o escravo não pode se conectar. Você pode fazer alguma ajuda?
O nome do banco de dados deve ser
replication
, poisall
não abrange conexões de replicação.A documentação do PostgreSQL diz ainda:
Uma outra solução possível aqui que encontrei. Se você estiver fazendo replicação lógica e tiver o DATABASE configurado para replicação, não funcionará. Ele precisa apenas obter um parâmetro regular. O
replication
parâmetro é para replicação física, não para replicação lógica.Cara, esse deu trabalho para descobrir. Eu espero que isso ajude!
Adicionar a linha abaixo
pg_hba.conf
e recarregar funcionou para mim. Considerando que o tipo é 'local', não é necessário especificar explicitamente um endereço.E lembre-se de
pg_ctl reload