Acerca da extensão pglogical

Selecione uma versão da documentação:

Esta página oferece uma vista geral da extensão pglogical, das respetivas vantagens e limitações.

Vista geral

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

A replicação binária tradicional, comummente conhecida como replicação física, replica as alterações ao nível do sistema de ficheiros e dos blocos, o que resulta num espelho físico no sistema de destino. Embora a replicação física seja robusta e proteja todo o cluster da base de dados, é apenas unidirecional e requer acesso ao ficheiro de dados da base de dados subjacente e aos ficheiros de registo de gravação antecipada (WAL).

Por outro lado, a extensão pglogical extrai alterações SQL de uma base de dados do fornecedor e replica-as, e, em seguida, repete-as em uma ou mais bases de dados do subscritor. Esta replicação é conhecida como replicação lógica.

Ao usar a extensão pglogical, pode fazer o seguinte:

  • Replique dados entre várias bases 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 muitas em serviços na nuvem de terceiros.

Vantagens

A replicação lógica com a extensão pglogical oferece as seguintes vantagens:

  • Replicação seletiva: oferece a flexibilidade de definir filtros e regras para determinar que dados quer replicar e onde. Pode escolher as tabelas a incluir e como as novas tabelas são processadas, quer sejam incluídas ou não. Também pode adicionar filtros de colunas e linhas. Pode adicionar um apply delayopcionalmente para situações em que quer que o subscritor represente um ponto no tempo posterior do fornecedor.

  • Replicação bidirecional e com vários elementos principais: todas as bases de dados de membros estão abertas num estado de leitura/escrita e são totalmente utilizáveis. Cada base de dados de pontos finais atua como fornecedor e subscritor, o que permite a criação de cenários de replicação avançados e a possibilidade de atualizações de dados feitas em diferentes pontos finais.

  • Suporte do fornecedor de nuvem: os fornecedores de nuvem, como a Google, reconhecem o valor da extensão pglogical e integram-na nos respetivos serviços de nuvem, como o Google Cloud SQL para PostgreSQL e o AlloyDB. Outros fornecedores de nuvem também incluem a extensão pglogical como opção, o que permite configurações de várias nuvens ou nuvem híbrida.

  • Replicação entre versões: como o pglogical replica as declarações SQL reais, permite a replicação entre versões principais do PostgreSQL. Especialmente quando a base de dados de origem do fornecedor é uma versão inferior à base de dados de destino do subscritor, a replicação entre versões pode ser implementada com fiabilidade.

    A extensão pglogical oferece suporte para muitas versões anteriores do PostgreSQL, como a versão 9.4 e superiores. Isto torna-o uma escolha ideal para cenários em que está a lidar com sistemas antigos 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 rica em funcionalidades, com compatibilidade para versões mais antigas do PostgreSQL e serviços geridos na nuvem que incluem 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 as usadas com outras plataformas de bases de dados relacionais, têm algumas limitações, e qualquer má gestão pode interromper o processo de replicação.

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

  • Considerações sobre como processar objetos com âmbito de base de dados e âmbito de cluster que estão fora do âmbito da replicação. A extensão pglogical funciona ao nível da base de dados e apenas em relação a um conjunto especificado de tabelas e sequências. Outros tipos de objetos, como funções e procedimentos, têm de ser replicados através de outro método.
  • Recomendamos que todas as tabelas de replicação tenham uma chave primária. É possível usar a funcionalidade REPLICA IDENTITY da tabela para informar a extensão pglogical sobre as colunas que identificam exclusivamente as linhas. Isto deve ser evitado sempre que possível. Tabelas que não têm chaves primárias, são estáticas por natureza e nunca são UPDATED nem DELETED, e suportam apenas INSERTS. Estes tipos de tabelas não precisam de chaves primárias.
  • Gestão de acionadores e sequências em bases de dados de subscritores. Por predefinição, os acionadores são definidos como acionadores ORIGIN ou LOCAL e não são acionados na base de dados de subscritores quando as linhas são replicadas. Todos os acionadores devem ser verificados para garantir que a opção REPLICA está definida para qualquer acionador, de modo que não seja acionado no lado do subscritor, a menos que seja necessário.
  • Lidar com a resolução de conflitos manual ou automaticamente através de who wins regras.
  • Replicação de comandos da linguagem de definição de dados (DDL) através da implementação manual em todos os pontos finais ou da replicação automática da DDL para bases de dados de subscritores através da função de API pglogical adequada na base de dados do fornecedor.
  • Garantir que as tabelas e as sequências criadas recentemente são adicionadas manual ou automaticamente aos conjuntos de replicação nas bases de dados primárias.
  • Garantir que existe uma rede TCP robusta, com bom desempenho, fiável e segura entre todos os pontos finais na topologia de replicação.

As restrições e as limitações adicionais da extensão pglogical incluem o seguinte:

  • São necessárias autorizações de superutilizador para a versão 2.4.3 do pglogical.
  • Embora a maioria das tabelas e sequências possa ser replicada, outros tipos de objetos não são replicados pela extensão pglogical, e as tabelas TEMPORARY e UNLOGGED não são replicadas.
  • Para replicar DDL, tem de usar a função da API pglogical. Os comandos DDL nativos não são replicados, exceto o comando TRUNCATE.
  • Opera ao nível do objeto por tabela e por sequência, e é implementada por base de dados. Isto significa que alguns objetos, incluindo objetos com âmbito de cluster, como users e roles, são excluídos da replicação e têm de ser geridos separadamente.

O que se segue?