Todos os produtos
Search
Central de documentação

ApsaraDB for ClickHouse:Migrar dados entre clusters Enterprise

Última atualização: Jun 28, 2026

Utilize a função remote para migrar dados entre clusters do ApsaraDB for ClickHouse Enterprise Edition. Essa função executa uma instrução INSERT INTO com um SELECT aninhado para replicar os dados diretamente, sem necessidade de armazenamento intermediário.

Casos de uso

  • Migrar dados de um backup restaurado para um cluster de destino.

  • Promover dados entre ambientes: de desenvolvimento para pré-produção ou de pré-produção para produção.

Como funciona

A migração é executada como uma única instrução SQL. Um cluster se conecta ao outro por meio da função remote, lê a tabela especificada e grava as linhas em uma tabela local.

O processo consiste nas seguintes etapas:

  1. Crie um usuário somente leitura no cluster de origem e obtenha o schema da tabela.

  2. Recrie a tabela no cluster de destino.

  3. Configure as listas de permissões para permitir a conexão entre os dois clusters.

  4. Execute a instrução de migração.

  5. (Opcional) Limpe as credenciais e as entradas da lista de permissões.

Pré-requisitos

Antes de começar, verifique se você possui:

  • Acesso aos clusters de origem e de destino

  • Privilégios de administrador em ambos os clusters (para criar usuários e modificar listas de permissões)

Etapa 1: Configurar o cluster de origem

Crie um usuário somente leitura no cluster de origem. Esse usuário será utilizado apenas durante a migração e deve ser removido posteriormente.

CREATE USER exporter
IDENTIFIED WITH SHA256_PASSWORD BY 'password-here'
SETTINGS readonly = 1;

Conceda ao usuário acesso de leitura à tabela que deseja migrar:

GRANT SELECT ON test_db.test_tb TO exporter;

Obtenha o schema da tabela, pois ele é necessário para recriá-la no cluster de destino:

SELECT create_table_query
FROM system.tables
WHERE database = 'test_db' AND TABLE = 'test_tb';

A saída será uma instrução CREATE TABLE semelhante a:

CREATE TABLE test_db.test_tb (`id` UInt32, `name` String, ...) ENGINE = MergeTree ORDER BY id;

Copie essa instrução. Você a utilizará na próxima etapa.

Etapa 2: Criar a tabela no cluster de destino

Crie o banco de dados de destino:

CREATE DATABASE test_db;

Cole a instrução CREATE TABLE obtida na Etapa 1 para criar a tabela:

CREATE TABLE test_db.test_tb ...

Etapa 3: Configurar listas de permissões

Os clusters de origem e de destino precisam ter conectividade mútua. Configure ambas as listas de permissões:

Para encontrar o endereço IP de um cluster, execute:

SELECT * FROM system.clusters;
Dica: Caso o cluster de destino já possua uma lista de permissões que precise ser restaurada após a migração, anote as entradas atuais antes de adicionar a entrada temporária. Isso facilita o retorno aos controles de acesso originais após a limpeza.

Etapa 4: Executar a migração

Execute a seguinte instrução no cluster de destino. Ela lê os dados do cluster de origem usando a função remote e os insere na tabela de destino.

INSERT INTO test_db.test_tb
SELECT *
FROM remote(
  'source-hostname:9000', -- Endpoint and port of the source cluster
  'test_db',              -- Source database name
  'test_tb',              -- Source table name
  'exporter',             -- Username
  'password-here'         -- User password
);

Substitua source-hostname pelo nome do host ou endereço IP do cluster de origem.

Etapa 5: Limpeza (opcional)

Após concluir a migração, remova o acesso temporário configurado para o processo:

  1. Se o cluster de destino passar a ser o novo ambiente de produção, configure sua lista de permissões para permitir apenas o tráfego de produção esperado.

  2. Exclua o usuário somente leitura do cluster de origem:

    DROP USER exporter;
  3. Remova o endereço IP do cluster de destino da lista de permissões do cluster de origem.

Próximos passos