Pular para o conteúdo principal
O motor ExternalDistributed permite executar consultas SELECT em dados armazenados em servidores MySQL ou PostgreSQL remotos. Aceita os motores MySQL ou PostgreSQL como argumento, o que possibilita o sharding.

Criando uma tabela

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1],
    name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [TTL expr2],
    ...
) ENGINE = ExternalDistributed('engine', 'host:port', 'database', 'table', 'user', 'password');
Consulte uma descrição detalhada da consulta CREATE TABLE. A estrutura da tabela pode ser diferente da estrutura da tabela original:
  • Os nomes das colunas devem ser os mesmos da tabela original, mas você pode usar apenas algumas dessas colunas, em qualquer ordem.
  • Os tipos das colunas podem ser diferentes dos da tabela original. O ClickHouse tenta converter os valores para os tipos de dados do ClickHouse.
Parâmetros do motor
  • engine — O motor de tabela, MySQL ou PostgreSQL.
  • host:port — Endereço do servidor MySQL ou PostgreSQL.
  • database — Nome do banco de dados remoto.
  • table — Nome da tabela remota.
  • user — Nome do usuário.
  • password — Senha do usuário.

Detalhes da implementação

Oferece suporte a múltiplas réplicas, que devem ser listadas com |, e os shards devem ser listados com ,. Por exemplo:
CREATE TABLE test_shards (id UInt32, name String, age UInt32, money UInt32) ENGINE = ExternalDistributed('MySQL', `mysql{1|2}:3306,mysql{3|4}:3306`, 'clickhouse', 'test_replicas', 'root', 'clickhouse');
Ao especificar réplicas, uma das réplicas disponíveis é selecionada para cada shard durante a leitura. Se a conexão falhar, a próxima réplica será selecionada, e assim sucessivamente para todas as réplicas. Se a tentativa de conexão falhar para todas as réplicas, a tentativa será repetida da mesma forma várias vezes. Você pode especificar qualquer número de shards e qualquer número de réplicas para cada shard. Veja também
Última modificação em 10 de junho de 2026