pglogical
, das respetivas vantagens e limitações.
Vista geral
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 delay
opcionalmente 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ãopglogical
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ãopglogical
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ãoUPDATED
nemDELETED
, e suportam apenasINSERTS
. 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
ouLOCAL
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çãoREPLICA
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 tabelasTEMPORARY
eUNLOGGED
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
eroles
, são excluídos da replicação e têm de ser geridos separadamente.
O que se segue?
- Replique dados entre o AlloyDB for PostgreSQL e o AlloyDB Omni.
- Replique dados entre o AlloyDB Omni e outras bases de dados.