使用 clickhouse-local 迁移到 ClickHouse

您可以使用 ClickHouse,更具体地说是 clickhouse-local 作为 ETL 工具,将数据从您当前的数据库系统迁移到 ClickHouse Cloud,只要您的当前数据库系统有 ClickHouse 提供的 集成引擎 或 表函数,或者有供应商提供的 JDBC 驱动程序或 ODBC 驱动程序可用。
我们有时将这种迁移方法称为“支点”方法,因为它使用一个中间支点或跳跃,将数据从源数据库迁移到目标数据库。例如,如果由于安全要求,仅允许从私有或内部网络进行外部连接,则可能需要这种方法,因此您需要使用 clickhouse-local 从源数据库拉取数据,然后将数据推送到目标 ClickHouse 数据库,而 clickhouse-local 充当支点。
ClickHouse 为 MySQL、PostgreSQL、MongoDB 和 SQLite 提供集成引擎和表函数(动态创建集成引擎)。对于所有其他流行的数据库系统,供应商提供了 JDBC 驱动程序或 ODBC 驱动程序。
什么是 clickhouse-local?

通常,ClickHouse 以集群的形式运行,其中多个 ClickHouse 数据库引擎的实例在不同的服务器上分布式运行。
在单台服务器上,ClickHouse 数据库引擎作为 clickhouse-server 程序的一部分运行。数据库访问(路径、用户、安全性等)通过服务器配置文件进行配置。
clickhouse-local 工具使您能够以命令行实用程序的方式,隔离使用 ClickHouse 数据库引擎,进行快速 SQL 数据处理,而无需配置和启动 ClickHouse 服务器。
安装 clickhouse-local
您需要一个用于 clickhouse-local 的主机,该主机可以访问当前的源数据库系统和您的 ClickHouse Cloud 目标服务。
在该主机上,下载适合您的计算机操作系统的 clickhouse-local 的适当版本:
- Linux
- macOS
- 下载
clickhouse-local的最简单方法是运行以下命令:
- 运行
clickhouse-local(它将仅打印其版本):
- 下载
clickhouse-local的最简单方法是运行以下命令:
- 运行
clickhouse-local(它将仅打印其版本):
本指南中的示例使用 Linux 命令运行 clickhouse-local (./clickhouse-local)。
要在 Mac 上运行 clickhouse-local,请使用 ./clickhouse local。
为了使 remoteSecure 函数能够连接到您的 ClickHouse Cloud 服务,远程系统的 IP 地址必须被 IP 访问列表允许。有关更多信息,请展开此提示下的 管理您的 IP 访问列表。
管理您的 IP 访问列表
从您的 ClickHouse Cloud 服务列表中选择您要使用的服务,并切换到 设置。如果 IP 访问列表中不包含需要连接到您的 ClickHouse Cloud 服务的远程系统的 IP 地址或范围,您可以通过 添加 IP 们 来解决此问题:

添加需要连接到您的 ClickHouse Cloud 服务的单个 IP 地址或地址范围。根据需要修改表单,然后 保存。

示例 1: 使用集成引擎将 MySQL 迁移到 ClickHouse Cloud
我们将使用 集成表引擎 (通过 mysql 表函数 动态创建)从源 MySQL 数据库读取数据,并将使用 remoteSecure 表函数 将数据写入 ClickHouse cloud 服务的目标表中。

在目标 ClickHouse Cloud 服务上:
创建目标数据库:
创建一个与 MySQL 表模式相等的目标表:
ClickHouse Cloud 的目标表模式与源 MySQL 表的模式必须对齐(列名和顺序必须相同,列数据类型必须兼容)。
在 clickhouse-local 主机上:
使用迁移查询运行 clickhouse-local:
在 clickhouse-local 主机上没有存储任何数据。相反,数据是从源 MySQL 表读取的,然后立即写入 ClickHouse Cloud 服务上的目标表。
示例 2: 使用 JDBC 桥将 MySQL 迁移到 ClickHouse Cloud
我们将使用 JDBC 集成表引擎 (通过 jdbc 表函数 动态创建),结合 ClickHouse JDBC 桥 和 MySQL JDBC 驱动程序,从源 MySQL 数据库读取数据,并将使用 remoteSecure 表函数 将数据写入 ClickHouse cloud 服务的目标表中。
