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ãopglogical
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 relacional, 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ãopglogical
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, nunca sãoUPDATED
ouDELETED
e oferecem suporte apenas aINSERTS
. 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
ouLOCAL
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çãoREPLICA
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 tabelasTEMPORARY
eUNLOGGED
não são replicadas. - Para replicar o DDL, a função da API pglogical precisa ser usada. 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
eroles
, são excluídos da replicação e precisam ser gerenciados separadamente.
A seguir
- Replicar dados entre Google Cloud AlloyDB e AlloyDB Omni
- Replicar dados entre o AlloyDB Omni e outros bancos de dados