Existe algum tipo de consulta/visualização/tabela disponível no PostgreSQL que possa refletir o status real de um processo de replicação mestre-escravo? Talvez o "grau" de sincronização entre os nós?
O acima é para monitorar periodicamente nossos servidores para garantir que eles estejam realmente "sincronizados" e que o escravo não tenha ficado à deriva.
No lado primário , você deve usar a visualização
pg_stat_replication
e comparar diferentes campos para ver o desvio. A funçãopg_xlog_location_diff
fornece o tamanho do desvio:Você pode usar o atraso nas ferramentas de monitoramento, como medidor, para monitorar sua replicação.
Se faltar um standby , você deve verificar no log do standby o porquê.
Se você usar slots de replicação, deverá verificar a
pg_replication_slots
exibição.Um dos métodos que uso (no 9.3) quando estou nos servidores de réplica é ter uma pequena função Bash no .bash_profile que pode ser invocada para mostrar o atraso da réplica. Isso funciona tanto para replicação de streaming quanto para servidores somente após a reprodução do arquivo WAL.
Essa função pode ser invocada na linha de comando da réplica com um
rep
comando simples. Este snippet pressupõe que você tenha um usuário no banco de dados mestre chamado "readonlyuser" (no meu caso, é literalmente um usuário com privs somente leitura) e que a conectividade entre os servidores pela porta 5432 está funcionando. Este é apenas um subconjunto dos detalhes que meurep()
comando emite, tenho algumas outras consultas que me mostram detalhes de integridade do mestre, mas são específicas dos meus dados.Para versões >= PostgreSQL 10: