Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Migración a ClickHouse con clickhouse-local

Migración de ClickHouse autogestionado

Puede usar ClickHouse o, más concretamente, clickhouse-local como herramienta ETL para migrar datos desde su sistema de base de datos actual a ClickHouse Cloud, siempre que para dicho sistema exista un motor de integración proporcionado por ClickHouse o una función de tabla, respectivamente, o bien un JDBC driver o un ODBC driver proporcionado por el proveedor.

A veces nos referimos a este método de migración como un método de "pivote", porque utiliza un punto de pivote o salto intermedio para mover los datos desde la base de datos de origen hasta la base de datos de destino. Por ejemplo, este método puede ser necesario si, por requisitos de seguridad, solo se permiten conexiones salientes desde una red privada o interna y, por lo tanto, necesita extraer los datos de la base de datos de origen con clickhouse-local y luego enviarlos a una base de datos ClickHouse de destino, actuando clickhouse-local como punto de pivote.

ClickHouse proporciona motores de integración y funciones de tabla (que crean motores de integración sobre la marcha) para MySQL, PostgreSQL, MongoDB y SQLite. Para todos los demás sistemas de bases de datos populares, el proveedor del sistema ofrece un JDBC driver o un ODBC driver.

¿Qué es clickhouse-local?

Migración de ClickHouse autogestionado

Normalmente, ClickHouse se ejecuta como un clúster, en el que varias instancias del motor de base de datos ClickHouse se ejecutan de forma distribuida en distintos servidores.

En un único servidor, el motor de base de datos ClickHouse se ejecuta como parte del programa clickhouse-server. El acceso a la base de datos (rutas, usuarios, seguridad, …) se configura mediante un archivo de configuración del servidor.

La herramienta clickhouse-local le permite usar el motor de base de datos ClickHouse de forma aislada, como una utilidad de línea de comandos, para procesar datos SQL a gran velocidad sobre un amplio volumen de entradas y salidas, sin tener que configurar ni iniciar un servidor ClickHouse.

Instalación de clickhouse-local

Necesita un host para clickhouse-local que tenga acceso de red tanto a su sistema actual de base de datos de origen como a su servicio de destino de ClickHouse Cloud.

En ese host, descargue la compilación adecuada de clickhouse-local según el sistema operativo de su equipo:

  1. La forma más sencilla de descargar clickhouse-local es ejecutar el siguiente comando:
curl https://clickhouse.com/ | sh
  1. Ejecute clickhouse-local (solo imprimirá su versión):
./clickhouse-local
Gestiona tu IP Access List

En la lista de servicios de ClickHouse Cloud, elige el servicio con el que vas a trabajar y ve a Settings. Si la IP Access List no incluye la dirección IP o el rango de direcciones del sistema remoto que necesita conectarse a tu servicio de ClickHouse Cloud, puedes solucionarlo con Add IPs:

Comprueba si el servicio permite tráfico desde tu dirección IP en la IP Access List

Agrega la dirección IP concreta o el rango de direcciones que deben conectarse a tu servicio de ClickHouse Cloud. Ajusta el formulario según sea necesario y luego haz clic en Save.

Agrega tu dirección IP actual a la IP Access List en ClickHouse Cloud

Ejemplo: Migración de MySQL a ClickHouse Cloud con un motor de integración

Usaremos el motor de tabla de integración (creado sobre la marcha por la función de tabla mysql) para leer datos de la base de datos MySQL de origen y usaremos la función de tabla remoteSecure para escribir los datos en una tabla de destino de su servicio de ClickHouse Cloud.

Migración de ClickHouse autogestionado

En el servicio de destino de ClickHouse Cloud:

Cree la base de datos de destino:

  CREATE DATABASE db

Cree una tabla de destino con un esquema equivalente al de la tabla de MySQL:

  CREATE TABLE db.table ...

En la máquina anfitriona de clickhouse-local:

Ejecuta clickhouse-local con la consulta de migración:

  ./clickhouse-local --query "
INSERT INTO FUNCTION
remoteSecure('HOSTNAME.clickhouse.cloud:9440', 'db.table', 'default', 'PASS')
SELECT * FROM mysql('host:port', 'database', 'table', 'user', 'password');"
Navigation