Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Migrando entre ClickHouse autogerenciado e ClickHouse Cloud usando remoteSecure

Migrando ClickHouse autogerenciado

Este guia mostra como migrar de um servidor ClickHouse autogerenciado para o ClickHouse Cloud, além de como migrar entre serviços do ClickHouse Cloud. A função remoteSecure é usada em consultas SELECT e INSERT para permitir o acesso a servidores remotos do ClickHouse, o que torna a migração de tabelas tão simples quanto escrever uma consulta INSERT INTO com um SELECT embutido.

Migrando de ClickHouse autogerenciado para ClickHouse Cloud

Migrando ClickHouse autogerenciado

Independentemente de a tabela de origem estar em shards e/ou ser replicada, no ClickHouse Cloud você só precisa criar uma tabela de destino (pode omitir o parâmetro Engine dessa tabela; SharedMergeTree será selecionado automaticamente como o mecanismo da tabela), e o ClickHouse Cloud cuidará automaticamente do escalonamento vertical e horizontal. Você não precisa se preocupar com como replicar e dividir a tabela em shards.

Neste exemplo, o servidor ClickHouse autogerenciado é a origem e o serviço ClickHouse Cloud é o destino.

Visão geral

O processo é:

  1. Adicione um usuário somente leitura ao serviço de origem
  2. Duplique a estrutura da tabela de origem no serviço de destino
  3. Extraia os dados da origem para o destino ou envie os dados da origem, dependendo da conectividade de rede da origem
  4. Remova o servidor de origem da Lista de acesso por IP no destino (se aplicável)
  5. Remova o usuário somente leitura do serviço de origem

Migração de tabelas de um sistema para outro:

Este exemplo migra uma tabela de um servidor ClickHouse autogerenciado para o ClickHouse Cloud.

No sistema ClickHouse de origem (o sistema que atualmente armazena os dados)

  • Adicione um usuário com permissão somente de leitura para ler a tabela de origem (db.table neste exemplo)
CREATE USER exporter
IDENTIFIED WITH SHA256_PASSWORD BY 'password-here'
SETTINGS readonly = 1;
GRANT SELECT ON db.table TO exporter;
  • Copie a definição da tabela
SELECT create_table_query
FROM system.tables
WHERE database = 'db' AND table = 'table'

No sistema ClickHouse Cloud de destino:

  • Crie o banco de dados de destino:
CREATE DATABASE db
  • Usando a instrução CREATE TABLE da origem, crie o destino.
CREATE TABLE db.table ...
  • Use a função remoteSecure para extrair os dados a partir da origem autogerenciada
Migrando o ClickHouse autogerenciado
INSERT INTO db.table SELECT * FROM
remoteSecure('source-hostname', db, table, 'exporter', 'password-here')
  • Use a função remoteSecure para enviar os dados para o serviço ClickHouse Cloud
Migrando o ClickHouse autogerenciado
Gerenciar sua IP Access List

Na lista de serviços do ClickHouse Cloud, escolha o serviço com o qual você vai trabalhar e vá para Configurações. Se a IP Access List não incluir o endereço IP ou o intervalo de IPs do sistema remoto que precisa se conectar ao seu serviço do ClickHouse Cloud, você pode resolver o problema com Adicionar IPs:

Verifique se o serviço permite tráfego do seu endereço IP na IP Access List

Adicione o endereço IP individual ou o intervalo de endereços que precisam se conectar ao seu serviço do ClickHouse Cloud. Ajuste o formulário conforme necessário e depois clique em Salvar.

Adicione seu endereço IP atual à IP Access List no ClickHouse Cloud
INSERT INTO FUNCTION
remoteSecure('HOSTNAME.clickhouse.cloud:9440', 'db.table',
'default', 'PASS') SELECT * FROM db.table

Migração entre serviços do ClickHouse Cloud

Migração de ClickHouse autogerenciado

Alguns casos de uso para migrar dados entre serviços do ClickHouse Cloud:

  • Migrar dados de um backup restaurado
  • Copiar dados de um serviço Development para um serviço de staging (ou de staging para produção)

Neste exemplo, há dois serviços do ClickHouse Cloud, que serão chamados de origem e destino. Os dados serão extraídos da origem para o destino. Embora você também possa optar por enviar, a extração é mostrada porque usa um usuário somente leitura.

Migração de ClickHouse autogerenciado

Há algumas etapas na migração:

  1. Identifique um serviço do ClickHouse Cloud como a origem e o outro como o destino
  2. Adicione um usuário somente leitura ao serviço de origem
  3. Duplique a estrutura da tabela de origem no serviço de destino
  4. Permita temporariamente o acesso por IP ao serviço de origem
  5. Copie os dados da origem para o destino
  6. Restabeleça a lista de acesso por IP no serviço de destino
  7. Remova o usuário somente leitura do serviço de origem

Adicione um usuário somente leitura ao serviço de origem

  • Adicione um usuário somente leitura que possa ler a tabela de origem (db.table neste exemplo)

    CREATE USER exporter
    IDENTIFIED WITH SHA256_PASSWORD BY 'password-here'
    SETTINGS readonly = 1;
    GRANT SELECT ON db.table TO exporter;
  • Copie a definição da tabela

    select create_table_query
    from system.tables
    where database = 'db' and table = 'table'

Duplique a estrutura da tabela no serviço de destino

No destino, crie o banco de dados, caso ele ainda não exista:

  • Crie o banco de dados de destino:

    CREATE DATABASE db
  • Usando a instrução CREATE TABLE da origem, crie a tabela no destino.

    No destino, crie a tabela usando a saída de select create_table_query... da origem:

    CREATE TABLE db.table ...

Permita acesso remoto ao serviço de origem

Para extrair dados da origem para o destino, o serviço de origem precisa permitir conexões. Desative temporariamente a funcionalidade "lista de acesso por IP" no serviço de origem.

Modifique a lista de permissões e permita acesso de Anywhere temporariamente. Consulte a documentação de lista de acesso por IP para mais detalhes.

Copie os dados da origem para o destino

  • Use a função remoteSecure para extrair os dados do serviço de origem no ClickHouse Cloud Conecte-se ao destino. Execute este comando no serviço de destino no ClickHouse Cloud:

    INSERT INTO db.table SELECT * FROM
    remoteSecure('source-hostname', db, table, 'exporter', 'password-here')
  • Verifique os dados no serviço de destino

Restabeleça a lista de acesso por IP na origem

Se você exportou a lista de acesso antes, pode reimportá-la usando Share; caso contrário, adicione novamente os IPs à lista de acesso.

Remova o usuário somente leitura exporter

DROP USER exporter
  • Altere a lista de acesso por IP do serviço para restringir o acesso
Navigation