Estou usando o Postgresql 14 e ele está configurado para replicação lógica. Tentando transmitir alterações com o debezium versão 1.8. Na verdade, tudo parece bem. Cada inserção, atualização, exclusão é transmitida, exceto as atualizações que atualizam um valor com o mesmo. De acordo com esta ótima resposta, esse tipo de atualização cria um registro WAL, mas é realmente tentado replicar na publicação?
Também preciso mencionar que fiz a mesma pergunta no bate-papo do debezium, mas eles me perguntaram de volta essas duas perguntas:
- A alteração é propagada para o slot de replicação
- A mudança é propagada na publicação
Eu ficaria feliz se você pudesse fornecer maneiras de validar esses dois.
Sim. Toda atualização será transferida, mesmo com o mesmo valor.
O
pg_recvlogical
(programa embutido) pode ser usado para provar o comportamento:(formatação de várias linhas para uma resposta com melhor aparência)
A invocação repetida da consulta
update am set k = 'hi' where n = 2;
com os mesmos argumentos gravará os dados passados em/tmp/recvlog
, por exemplo:Observe que a publicação usa o protocolo de dados binários e
pg_recvlogical
não decodifica mensagens específicas. Mas basta verificar se os dados estão sendo enviados por meio da publicação sobre atualizações de valores idênticos.