Para executar análises em tempo real sobre dados operacionais, utilize a função de tabela mysql(). Ela permite extrair dados diretamente do ApsaraDB RDS for MySQL para o ApsaraDB for ClickHouse em uma única instrução SQL. Este guia detalha todo o processo: preparação das tabelas em ambas as extremidades, execução da consulta de migração e verificação dos resultados.
Pré-requisitos
Antes de começar, certifique-se de que você possui:
Um cluster do ApsaraDB for ClickHouse. Caso ainda não tenha criado um, consulte Criar um cluster.
Uma conta de banco de dados com privilégios elevados para o cluster do ClickHouse. Consulte Criar uma conta.
A instância do ApsaraDB RDS for MySQL e o cluster do ApsaraDB for ClickHouse na mesma região e Virtual Private Cloud (VPC).
O endereço IP do cluster do ClickHouse adicionado à lista de permissões do RDS MySQL, e o endereço IP do RDS MySQL adicionado à lista de permissões do ClickHouse.
Execute SELECT * FROM system.clusters; no ClickHouse para obter o endereço IP do cluster. Para configurar a lista de permissões, consulte Configurar uma lista de permissões de endereços IP (ClickHouse) e Configurar lista de permissões de endereços IP (RDS MySQL). Se houver falha de conectividade, consulte o FAQ.
Etapa 1: Configurar a tabela source no ApsaraDB RDS for MySQL
Ignore esta etapa se a sua instância do RDS MySQL já contiver os dados que você deseja migrar.
Conecte-se à instância do ApsaraDB RDS for MySQL usando o Data Management (DMS). Consulte Usar o DMS para fazer login em uma instância do ApsaraDB RDS for MySQL.
-
Crie um banco de dados:
CREATE DATABASE testdb; -
Crie a tabela source:
CREATE TABLE testdb.mysql_test_table ( v1 Int NOT NULL, v2 Int DEFAULT NULL, v3 Float DEFAULT NULL ) ENGINE=InnoDB; -
Insira dados de exemplo:
INSERT INTO testdb.mysql_test_table VALUES (4,4,4.0),(1,1,2.0),(1,1,0.0),(4,1,2.0),(7,1,3.0);
Etapa 2: Criar uma tabela no ApsaraDB for ClickHouse
Conecte-se ao cluster do ApsaraDB for ClickHouse usando o DMS. Consulte Conectar-se a um cluster do ClickHouse usando o DMS.
-
Crie uma tabela local:
NotaMapeie cada tipo de coluna do MySQL para o tipo correspondente no ClickHouse. Colunas definidas sem
NOT NULLno MySQL tornam-seNullableno ClickHouse. Para o mapeamento completo, consulte Mapeamentos de tipos de dados.CREATE TABLE default.clickhouse_test_table ON CLUSTER default ( v1 Int32, v2 Nullable(Int32), v3 Nullable(Float32) ) ENGINE = MergeTree ORDER BY v1; -
(Opcional) Crie uma tabela distribuída para clusters com múltiplos nós:
CREATE TABLE clickhouse_test_table_distributed ON CLUSTER default AS clickhouse_test_table ENGINE = Distributed(default, default, clickhouse_test_table, rand());Tabelas distribuídas espalham os dados por todos os nós do cluster, permitindo leituras e gravações paralelas para maior throughput e disponibilidade. Recomendamos a criação de uma tabela distribuída para clusters com múltiplos nós.
Etapa 3: Importar dados do ApsaraDB RDS for MySQL
Conecte-se ao cluster do ApsaraDB for ClickHouse via DMS e execute uma instrução INSERT INTO ... SELECT utilizando a função de tabela mysql():
INSERT INTO <clickhouse_table>
SELECT * FROM mysql('<rds_endpoint>:<port>', '<database>', '<table>', '<user>', '<password>');
Parâmetros:
|
Parâmetro |
Descrição |
Exemplo |
|
|
Nome da tabela de destino no ClickHouse |
|
|
|
Endpoint interno da instância do RDS MySQL |
|
|
|
Porta da instância do RDS MySQL |
|
|
|
Nome do banco de dados de origem |
|
|
|
Nome da tabela de origem |
|
|
|
Conta do banco de dados do RDS MySQL |
|
|
|
Senha da conta do banco de dados |
|
Para obter o endpoint e a porta do RDS MySQL, consulte Visualize e gerencie endpoints e portas de instâncias.
Exemplo completo de importação:
INSERT INTO clickhouse_test_table_distributed
SELECT * FROM mysql('rm-bp16t9h3999xb****.mysql.rds.aliyuncs.com:3306', 'testdb', 'mysql_test_table', 'test', '123456Aa');
Etapa 4: Verificar os dados importados
Consulte a tabela de destino para confirmar que os dados foram importados corretamente:
SELECT * FROM clickhouse_test_table_distributed;
Clique em Execute(F8) no DMS para executar a consulta. O resultado deve corresponder aos dados inseridos na Etapa 1.
Se você importou para uma tabela local, substitua clickhouse_test_table_distributed por clickhouse_test_table na consulta.
Mapeamentos de tipos de dados
Ao criar a tabela no ClickHouse, utilize os seguintes mapeamentos de tipos. Caso os tipos de origem e destino não correspondam exatamente, o ClickHouse tentará realizar uma conversão automática.
Colunas que aceitam NULL no MySQL são mapeadas como Nullable no ClickHouse. Colunas definidas sem NOT NULL no MySQL tornam-se Nullable na tabela do ClickHouse.
|
Tipo no ApsaraDB RDS for MySQL / PolarDB for MySQL |
Tipo no ApsaraDB for ClickHouse |
|
Unsigned tinyint |
UInt8 |
|
Tinyint |
Int8 |
|
Unsigned smallint |
UInt16 |
|
Smallint |
Int16 |
|
Unsigned int, Unsigned mediumint |
UInt32 |
|
Int, Mediumint |
Int32 |
|
Unsigned bigint |
UInt64 |
|
Bigint |
Int64 |
|
Float |
Float32 |
|
Double |
Float64 |
|
Date |
Date |
|
Datetime, Timestamp |
DateTime |
|
Binary |
FixedString |
|
Outros |
String |