Esta secção contém informações sobre:
- O comportamento da forma como o Datastream processa os dados extraídos de uma base de dados PostgreSQL de origem
- As versões da base de dados PostgreSQL suportadas pelo Datastream
- Uma vista geral de como configurar uma base de dados PostgreSQL de origem para que os dados possam ser transmitidos a partir da mesma para um destino
- Limitações conhecidas da utilização da base de dados PostgreSQL como origem
Comportamento
A base de dados PostgreSQL de origem baseia-se na respetiva funcionalidade de descodificação lógica. A descodificação lógica expõe todas as alterações confirmadas na base de dados e permite consumir e processar estas alterações num formato fácil de usar através de um plug-in de saída. O Datastream usa o plug-in pgoutput, que é o plug-in de descodificação lógica padrão do PostgreSQL para o PostgreSQL 10 e posterior.
- Pode selecionar todos os esquemas ou esquemas específicos de uma determinada origem PostgreSQL, bem como todas as tabelas do esquema ou tabelas específicas.
- Todos os dados do histórico são replicados.
- Todas as alterações da linguagem de manipulação de dados (DML), como inserções, atualizações e eliminações das bases de dados e tabelas especificadas, são replicadas.
- Apenas as alterações confirmadas são replicadas.
- Se definir uma REPLICA IDENTITY numa tabela, o Datastream trata as colunas especificadas como chaves primárias.
- O fluxo de dados envia periodicamente mensagens de sinal de vida à base de dados de origem. Como resultado, os eventos de mensagens de descodificação lógica (
op:"m") são inseridos diretamente no ficheiro WAL. Estas mensagens são necessárias para o fluxo de dados para garantir a disponibilidade da origem e calcular a atualidade. Recomendamos que tenha isso em consideração se outras configurações de replicação lerem a partir da mesma base de dados de origem.
Versões
O Datastream suporta o PostgreSQL versão 10 e posteriores.
O Datastream suporta os seguintes tipos de base de dados PostgreSQL:
- PostgreSQL autoalojado
- Cloud SQL para PostgreSQL
- AlloyDB para PostgreSQL
- AlloyDB Omni
- Amazon RDS para PostgreSQL
- Amazon Aurora PostgreSQL
Práticas recomendadas
Esta secção descreve as práticas recomendadas para configurar a sua origem do PostgreSQL para utilização com o Datastream.
Use várias streams para evitar o bloqueio de cabeça de fila
Para origens do PostgreSQL, o Datastream usa um único espaço de replicação lógica para uma stream inteira. Uma transação grande ou várias atualizações numa tabela de volume elevado podem atrasar a replicação de dados para todas as outras tabelas na mesma stream.
Para evitar o bloqueio de cabeça de fila, crie streams separadas para diferentes conjuntos de tabelas. Por exemplo, pode criar uma stream para tabelas de volume elevado e outra para tabelas de volume baixo. Isto isola as tabelas com elevada rotatividade e impede que atrasem a replicação de outras tabelas.
Recomendação: identifique tabelas com taxas de gravação excecionalmente elevadas (INSERT/UPDATE/DELETE) e coloque-as na sua própria stream do Datastream dedicada com um intervalo de replicação separado.
Evite transações de longa duração
As transações de longa duração podem levar à acumulação do registo de gravação antecipada (WAL). Uma vez que o WAL é sequencial, o PostgreSQL não pode esvaziar o WAL até que a transação longa seja concluída, mesmo que outras transações estejam a ser consumidas. Isto pode aumentar o tamanho do espaço de replicação e abrandar a descodificação lógica, porque as alterações de transações de longa duração que se sobrepõem à transação atual têm de ser descodificadas repetidamente.
Recomendação: na base de dados de origem, configure os parâmetros statement_timeout
e idle_in_transaction_session_timeout para evitar transações de execução prolongada. Para mais informações, consulte a documentação do PostgreSQL.
Use a filtragem de tabelas quando criar publicações
Se estiver a replicar alterações apenas de algumas tabelas, certifique-se de que cria um
PUBLICATION que inclua apenas essas tabelas. Quando uma publicação é limitada a tabelas específicas, o PostgreSQL persiste de forma eficiente as alterações apenas para essas tabelas no espaço de replicação. Isto ajuda a reduzir o tamanho do espaço de replicação e melhora o desempenho da descodificação lógica.
Faça a gestão proativa dos espaços de replicação
O Datastream usa um espaço de replicação lógica na sua instância principal do PostgreSQL, o que garante que os ficheiros WAL são retidos até o Datastream confirmar que foram processados. Se uma stream falhar, for pausada ou eliminada sem eliminar o espaço de replicação, o PostgreSQL continua a reter ficheiros WAL indefinidamente. Isto pode encher o disco do servidor da base de dados e provocar uma interrupção da produção.
Recomendação: configure alertas eficientes e monitorize a utilização do disco WAL no servidor PostgreSQL de origem.
Configure corretamente a identidade da réplica
A definição REPLICA IDENTITY indica ao PostgreSQL que dados escrever no WAL para eventos UPDATE e DELETE, o que permite ao Datastream identificar que linhas foram alteradas.
Se usar o BigQuery como destino, evite definir REPLICA IDENTITY
como FULL. O fluxo de dados usa as colunas registadas como uma chave lógica para operações do BigQuery MERGE.
Se REPLICA IDENTITY estiver definido como FULL e uma tabela tiver mais de 16 colunas,
isto excede o limite de 16 colunas do BigQuery para chaves primárias em operações MERGE
e interrompe a stream.