Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Migración entre ClickHouse autogestionado y ClickHouse Cloud con remoteSecure

Migración de ClickHouse autogestionado

Esta guía muestra cómo migrar de un servidor de ClickHouse autogestionado a ClickHouse Cloud, así como cómo migrar entre servicios de ClickHouse Cloud. La función remoteSecure se utiliza en consultas SELECT e INSERT para permitir el acceso a servidores remotos de ClickHouse, lo que simplifica la migración de tablas hasta el punto de que basta con escribir una consulta INSERT INTO con un SELECT incrustado.

Migración de ClickHouse autogestionado a ClickHouse Cloud

Migración de ClickHouse autogestionado

Independientemente de si la tabla de origen está segmentada y/o replicada, en ClickHouse Cloud solo necesita crear una tabla de destino (puede omitir el parámetro Engine de esta tabla; SharedMergeTree se seleccionará automáticamente como motor de tabla), y ClickHouse Cloud se encargará automáticamente del escalado vertical y horizontal. No necesita preocuparse por cómo replicar y segmentar la tabla.

En este ejemplo, el servidor ClickHouse autogestionado es el origen y el servicio de ClickHouse Cloud es el destino.

Descripción general

El proceso es:

  1. Añada un usuario de solo lectura al servicio de origen
  2. Duplique la estructura de la tabla de origen en el servicio de destino
  3. Extraiga los datos del origen al destino, o envíelos desde el origen, según la conectividad de red del origen
  4. Elimine el servidor de origen de la lista de acceso IP del destino (si corresponde)
  5. Elimine el usuario de solo lectura del servicio de origen

Migración de tablas de un sistema a otro:

Este ejemplo muestra cómo migrar una tabla desde un servidor de ClickHouse autogestionado a ClickHouse Cloud.

En el sistema ClickHouse de origen (el sistema que aloja actualmente los datos)

  • Añada un usuario de solo lectura con permiso para leer la tabla de origen (db.table en este ejemplo)
CREATE USER exporter
IDENTIFIED WITH SHA256_PASSWORD BY 'password-here'
SETTINGS readonly = 1;
GRANT SELECT ON db.table TO exporter;
  • Copie la definición de la tabla
SELECT create_table_query
FROM system.tables
WHERE database = 'db' AND table = 'table'

En el sistema ClickHouse Cloud de destino:

  • Cree la base de datos de destino:
CREATE DATABASE db
  • Use la sentencia CREATE TABLE del origen para crear el destino.
CREATE TABLE db.table ...
  • Usa la función remoteSecure para extraer los datos del origen autogestionado
Migración de ClickHouse autogestionado
INSERT INTO db.table SELECT * FROM
remoteSecure('source-hostname', db, table, 'exporter', 'password-here')
  • Use la función remoteSecure para enviar los datos al servicio de ClickHouse Cloud
Migración de ClickHouse autogestionado
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
INSERT INTO FUNCTION
remoteSecure('HOSTNAME.clickhouse.cloud:9440', 'db.table',
'default', 'PASS') SELECT * FROM db.table

Migración entre servicios de ClickHouse Cloud

Migración de ClickHouse autogestionado

Algunos casos de uso para migrar datos entre servicios de ClickHouse Cloud:

  • Migrar datos desde una copia de seguridad restaurada
  • Copiar datos de un servicio de desarrollo a un servicio de staging (o de staging a producción)

En este ejemplo hay dos servicios de ClickHouse Cloud, a los que nos referiremos como origen y destino. Los datos se extraerán del origen al destino. Aunque también podría usar push si lo prefiere, aquí se muestra pull porque utiliza un usuario de solo lectura.

Migración de ClickHouse autogestionado

La migración consta de varios pasos:

  1. Identifique un servicio de ClickHouse Cloud como origen y el otro como destino
  2. Añada un usuario de solo lectura al servicio de origen
  3. Duplique la estructura de la tabla de origen en el servicio de destino
  4. Permita temporalmente el acceso por IP al servicio de origen
  5. Copie los datos del origen al destino
  6. Restablezca la lista de acceso IP en el destino
  7. Elimine el usuario de solo lectura del servicio de origen

Añade un usuario de solo lectura al servicio de origen

  • Añade un usuario de solo lectura que pueda leer la tabla de origen (db.table en este ejemplo)

    CREATE USER exporter
    IDENTIFIED WITH SHA256_PASSWORD BY 'password-here'
    SETTINGS readonly = 1;
    GRANT SELECT ON db.table TO exporter;
  • Copia la definición de la tabla

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

Duplicar la estructura de la tabla en el servicio de destino

En el destino, cree la base de datos si todavía no existe:

  • Cree la base de datos de destino:

    CREATE DATABASE db
  • Usando la sentencia CREATE TABLE del origen, cree la tabla en el destino.

    En el destino, cree la tabla usando la salida de select create_table_query... del origen:

    CREATE TABLE db.table ...

Permita el acceso remoto al servicio de origen

Para poder transferir datos del origen al destino, el servicio de origen debe permitir las conexiones. Desactive temporalmente la funcionalidad "lista de acceso IP" en el servicio de origen.

Modifique la lista de acceso permitida y permita temporalmente el acceso desde Anywhere. Consulte la documentación de lista de acceso IP para obtener más información.

Copie los datos del servicio de origen al servicio de destino

  • Use la función remoteSecure para extraer los datos del servicio de ClickHouse Cloud de origen Conéctese al servicio de destino. Ejecute este comando en el servicio de ClickHouse Cloud de destino:

    INSERT INTO db.table SELECT * FROM
    remoteSecure('source-hostname', db, table, 'exporter', 'password-here')
  • Verifique los datos en el servicio de destino

Restablecer la lista de acceso IP en el origen

Si exportó antes la lista de acceso, puede volver a importarla con Share; de lo contrario, vuelva a añadir sus direcciones IP a la lista de acceso.

Eliminar el usuario exporter de solo lectura

DROP USER exporter
  • Cambie la lista de acceso IP del servicio para restringir el acceso
Navigation