Índice
A replicação lógica é um método de replicar objetos de dados e suas alterações, com base em sua identidade de replicação (geralmente a chave primária). É usado o termo lógica em contraste com a replicação física, que usa endereços de bloco exatos e replicação byte a byte. O PostgreSQL suporta os dois mecanismos simultaneamente, veja Alta disponibilidade, balanceamento de carga e replicação. A replicação lógica permite um controle refinado sobre a replicação de dados e a segurança.
A replicação lógica usa o modelo publicador e subscritor, com um ou mais subscritores, subscrevendo uma ou mais publicações em um nó publicador. Os subscritores obtêm os dados das publicações que subscrevem, podendo em seguida republicar os dados para permitir a replicação em cascata, ou configurações mais complexas.
A replicação lógica de uma tabela geralmente começa com a obtenção de um instantâneo dos dados no banco de dados do publicador e a cópia para o subscritor. Feito isso, as alterações no publicador são enviadas ao subscritor à medida que ocorrem em tempo real. O subscritor aplica os dados na mesma ordem que o publicador, para que a consistência transacional seja garantida para publicações em uma única subscrição. Às vezes, esse método de replicação de dados é chamado de replicação transacional.
Os casos de uso típicos para replicação lógica são:
Envio de alterações incrementais em um único banco de dados, ou um subconjunto de um banco de dados, para os subscritores à medida que ocorrem.
Disparo de gatilhos para alterações individuais conforme chegam ao subscritor.
Consolidação de vários bancos de dados em um único (por exemplo, para fins analíticos).
Replicação entre diferentes versões principais do PostgreSQL.
Replicação entre instâncias do PostgreSQL em diferentes plataformas (por exemplo, Linux para Windows)
Dar acesso a dados replicados para diferentes grupos de usuários.
Compartilhar um subconjunto do banco de dados entre vários bancos de dados.
O banco de dados subscritor se comporta da mesma forma que qualquer outra instância do PostgreSQL, podendo ser usado como publicador para outros bancos de dados definindo suas próprias publicações. Quando o subscritor for tratado como de leitura apenas pela aplicação, não haverá conflitos em uma única subscrição. Por outro lado, se houver outras escritas feitas por uma aplicação, ou por outros subscritores, no mesmo conjunto de tabelas, poderão acontecer conflitos.