Espero que isso ainda seja uma resposta para sua pergunta, mesmo que eu não tenha resolvido seu problema.
Should all of the replicas currently be "in recovery"? Running SELECT pg_is_in_recovery(); on all of > them returns true, which is concerning. We can run queries on them
Isso é normal. Seu escravo é na recuperação de um tipo, ainda que lento e perpétuo, enquanto ainda mastiga segmentos WAL (ou streaming) de outro servidor.
Just for some reason I'm unable to get our existing production replicas to stream/archive to any other server. Specifically the archive_command is NEVER run on any of the replicas (because it's stuck in recovery mode).
Você está recebendo erros em algum lugar? Lembre-se de que o streaming é iniciado pelos escravos a jusante: em que estado eles estão? Quais dados eles têm? E há algo interessante registrado quando a conexão de streaming é tentada? Lembre-se de que a replicação de streaming integrada do PostgreSQL é independente do sistema de arquivamento (supondo que a máquina de recebimento de dados esteja atualizada); você pode fazer uma conexão em nome do usuário de replicação?
Does anyone have any suggestions on how I can further debug/diagnose this?
Dadas as inconsistências entre a produção e o seu julgamento, parece um erro de configuração escondido em algum lugar, embora eu não saiba nada sobre o WAL-E. Um diff de postgresql.conf
, pg_hba.conf
(e recovery.conf
suponho) seria um início chato, mas bom. Entre seus escravos de produção e trabalhando, escravos de julgamento, isto é.
Você também pode verificar o conteúdo da tabela pg_settings
. Se estas são máquinas de produção de longa duração, talvez uma configuração simplesmente não tenha sido aplicada ainda? Sei que você examinou os documentos em replicação em cascata e seus requisitos, mas eu estou ligando-os apenas no caso.