
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

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 é:
- Adicione um usuário somente leitura ao serviço de origem
- Duplique a estrutura da tabela de origem no serviço de destino
- Extraia os dados da origem para o destino ou envie os dados da origem, dependendo da conectividade de rede da origem
- Remova o servidor de origem da Lista de acesso por IP no destino (se aplicável)
- 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.tableneste 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
remoteSecurepara extrair os dados a partir da origem autogerenciada

INSERT INTO db.table SELECT * FROM
remoteSecure('source-hostname', db, table, 'exporter', 'password-here')- Use a função
remoteSecurepara enviar os dados para o serviço ClickHouse Cloud

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:

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.

INSERT INTO FUNCTION
remoteSecure('HOSTNAME.clickhouse.cloud:9440', 'db.table',
'default', 'PASS') SELECT * FROM db.tableMigração entre serviços do ClickHouse Cloud

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.

Há algumas etapas na migração:
- Identifique um serviço do ClickHouse Cloud como a origem e o outro como o destino
- Adicione um usuário somente leitura ao serviço de origem
- Duplique a estrutura da tabela de origem no serviço de destino
- Permita temporariamente o acesso por IP ao serviço de origem
- Copie os dados da origem para o destino
- Restabeleça a lista de acesso por IP no serviço de destino
- 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.tableneste 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
remoteSecurepara 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