Sobre a extensão pglogical

Esta página fornece uma visão geral da extensão pglogical, os benefícios e as limitações dela.

Visão geral

A extensão pglogical é uma ferramenta de replicação lógica robusta e flexível projetada para o PostgreSQL. Ela também oferece suporte a alta disponibilidade (HA) e recuperação de desastres (DR).

A replicação binária tradicional, comumente conhecida como replicação física, replica as mudanças no sistema de arquivos e no nível de bloco, resultando em um espelho físico no sistema de destino. Embora a replicação física seja robusta e proteja todo o cluster de banco de dados, ela é unidirecional e exige acesso ao arquivo de dados do banco de dados e aos arquivos de registro prévio de escrita (WAL, na sigla em inglês).

Já a extensão pglogical extrai alterações SQL de um banco de dados do provedor, as replica e as reproduz em um ou mais bancos de dados de assinantes. Essa replicação é conhecida como replicação lógica.

Ao usar a extensão pglogical, é possível fazer o seguinte:

  • Replique dados entre vários bancos de dados do AlloyDB Omni.
  • Replique dados entre o AlloyDB Omni e o Google Cloud AlloyDB.
  • Replique dados entre o AlloyDB Omni e outras distribuições do PostgreSQL que incluem muitos serviços em nuvem de terceiros.

Vantagens

A replicação lógica com a extensão pglogical oferece os seguintes benefícios:

  • Replicação seletiva:oferece a flexibilidade de definir filtros e regras para determinar quais dados você quer replicar e para onde. Você pode escolher quais tabelas são incluídas e como as novas tabelas são processadas, independentemente de serem incluídas ou não. Também é possível adicionar filtros de coluna e linha. Um apply delay opcional pode ser adicionado para situações em que você quer que o assinante represente algum ponto final no tempo do provedor.

  • Replicação bidirecional e multiprimária:todos os bancos de dados de membros são abertos em um estado de leitura/gravação e totalmente utilizáveis. Cada banco de dados de endpoint atua como provedor e assinante, permitindo a criação de cenários avançados de replicação e possibilitando a possibilidade de atualizações de dados feitas em endpoints diferentes.

  • Suporte do provedor de nuvem:provedores de nuvem, como o Google, reconhecem o valor da extensão pglogical e a integram aos serviços de nuvem, como o Google Cloud SQL para PostgreSQL e o AlloyDB. Outros provedores de nuvem também incluem a extensão pglogical como uma opção, permitindo configurações multinuvem ou híbridas.

  • Replicação entre versões:como o pglogical replica as instruções SQL reais, ele permite a replicação entre as versões principais do PostgreSQL. Principalmente quando o banco de dados de origem do provedor é uma versão anterior à do banco de dados de destino do assinante, a replicação entre versões pode ser implementada com confiabilidade.

    A extensão pglogical oferece suporte a muitas versões mais antigas do PostgreSQL, como a versão 9.4 e mais recentes. Isso a torna a escolha ideal para cenários em que você lida com sistemas legados e quer replicar dados em versões mais modernas do PostgreSQL, como as usadas no AlloyDB Omni e no Google Cloud AlloyDB.

Em resumo, a extensão pglogical oferece uma solução de replicação lógica com muitos recursos, com compatibilidade para versões mais antigas do PostgreSQL e serviços gerenciados pelo Cloud, incluindo o Google Cloud SQL para PostgreSQL e o AlloyDB.

Limitações da replicação lógica

Todas as tecnologias de replicação lógica, incluindo aquelas usadas com outras plataformas de banco de dados relacionais, têm algumas limitações, e qualquer gerenciamento inadequado pode interromper o processo de replicação.

Considere os seguintes pontos para uma implementação confiável:

  • Consideração sobre como processar objetos com escopo de cluster e de banco de dados que estão fora do escopo de replicação. A extensão pglogical funciona no nível do banco de dados e apenas em um conjunto especificado de tabelas e sequências. Outros tipos de objetos, como funções e procedimentos, precisam ser replicados usando outro método.
  • É recomendável que todas as tabelas de replicação tenham uma chave primária. É possível usar o recurso REPLICA IDENTITY da tabela para informar à extensão pglogical quais colunas identificam exclusivamente as linhas. Isso precisa ser evitado sempre que possível. As tabelas que não têm chaves primárias são estáticas por natureza e nunca são UPDATED ou DELETED, e oferecem suporte apenas a INSERTS. Esses tipos de tabelas não precisam de chaves primárias.
  • Gerenciamento de gatilhos e sequências em bancos de dados de assinantes. Por padrão, os acionadores são definidos como ORIGIN ou LOCAL e não são acionados no banco de dados do assinante quando as linhas são replicadas. Todos os acionadores precisam ser verificados para garantir que a opção REPLICA esteja definida para qualquer acionador, para que ele não seja acionado no lado do assinante, a menos que seja necessário.
  • Lidar com a resolução de conflitos manualmente ou automaticamente usando regras who wins.
  • Execução de comandos da linguagem de definição de dados (DDL) por implementação manual em todos os endpoints ou pela replicação automática de DDL para bancos de dados de assinantes usando a função de API pglogical adequada no banco de dados do provedor.
  • Garantir que as tabelas e sequências recém-criadas sejam adicionadas manualmente ou automaticamente aos conjuntos de replicação nos bancos de dados principais.
  • Garantir que uma rede TCP robusta, confiável, segura e com bom desempenho exista entre todos os endpoints na topologia de replicação.

Outras restrições e limitações da extensão pglogical incluem as seguintes:

  • No momento, as permissões de superusuário são necessárias para a versão 2.4.3 do pglogical.
  • Embora a maioria das tabelas e sequências possa ser replicada, outros tipos de objeto não são replicados pela extensão pglogical, e as tabelas TEMPORARY e UNLOGGED não são replicadas.
  • Para replicar o DDL, é necessário usar a função da API pglogical. Comandos DDL nativos não são replicados, exceto o comando TRUNCATE.
  • Opera em um nível de objeto por tabela e por sequência e é implantado por banco de dados. Isso significa que alguns objetos, incluindo objetos no escopo do cluster, como users e roles, são excluídos da replicação e precisam ser gerenciados separadamente.

A seguir