Recomenda-se que os usuários do ClickHouse Cloud usem ClickPipes para a replicação do PostgreSQL para o ClickHouse. Isso oferece suporte nativo a Change Data Capture (CDC) de alto desempenho para PostgreSQL.
Este motor de tabela é experimental. Para usá-lo, defina
allow_experimental_materialized_postgresql_table como 1 em seus arquivos de configuração ou usando o comando SET:materialized_postgresql_tables_list, que especifica as tabelas a serem replicadas (também será possível adicionar o schema do banco de dados). Isso será muito melhor em termos de CPU, com menos conexões e menos slots de replicação no banco de dados PostgreSQL remoto.
Criando uma tabela
host:port— Endereço do servidor PostgreSQL.database— Nome do banco de dados remoto.table— Nome da tabela remota.user— Usuário do PostgreSQL.password— Senha do usuário.
TLS/SSL
libpq e podem ser fornecidos por meio de uma coleção nomeada ou como argumentos chave-valor finais do motor: sslmode (disable, allow, prefer, require, verify-ca ou verify-full; quando não definido, é usado o padrão prefer do libpq), além dos certificados e da chave, em uma de duas formas. sslrootcert (certificado da CA), sslcert (certificado do cliente) e sslkey (chave privada do cliente) são caminhos para arquivos locais do servidor e são aceitos apenas em uma coleção nomeada definida no arquivo de configuração do servidor. Já sslrootcert_pem, sslcert_pem e sslkey_pem aceitam o conteúdo literal do arquivo correspondente, podem ser especificados em SQL e são mascarados em logs e consultas SHOW, como uma senha.
Requisitos
-
A configuração wal_level deve ter o valor
logical, e o parâmetromax_replication_slotsdeve ter valor de pelo menos2no arquivo de configuração do PostgreSQL. -
Uma tabela com o motor
MaterializedPostgreSQLdeve ter uma chave primária — a mesma de um índice de identidade de réplica (por padrão, a chave primária) de uma tabela PostgreSQL (consulte detalhes sobre o índice de identidade de réplica). - Somente o banco de dados Atomic é permitido.
-
O motor de tabela
MaterializedPostgreSQLfunciona apenas com versões do PostgreSQL >= 11, pois a implementação exige a função do PostgreSQL pg_replication_slot_advance.
Colunas virtuais
-
_version— Contador de transações. Tipo: UInt64. -
_sign— Marca de exclusão. Tipo: Int8. Valores possíveis:1— A linha não foi excluída,-1— A linha foi excluída.
SELECT.
A coluna _version corresponde à posição de LSN no WAL, portanto pode ser usada para verificar o quão atualizada está a replicação.
A replicação de valores TOAST não é suportada. O valor padrão do tipo de dados será usado.