当您需要优化数据管理、提高数据访问性能和降低数据库维护成本时,您可以将自建数据库迁移至云数据库ClickHouse企业版。云数据库ClickHouse企业版通过ClickHouse-Local工具为您的迁移任务提供了简便且可靠的解决方案。
什么是ClickHouse-Local?
通常ClickHouse以集群的形式运行,ClickHouse数据库引擎的多个实例以分布式方式运行在不同的服务器上。在单个服务器上,ClickHouse数据库引擎作为clickhouse-server程序的一部分运行。数据库访问路径、用户和安全性等通过服务器配置文件进行配置。
而ClickHouse-Local工具支持以命令行方式使用ClickHouse数据库引擎,而无需配置和启动云数据库ClickHouse集群。
背景信息
如果ClickHouse中提供了您自建数据库系统对应的集成引擎或表函数,或者您自建数据库系统提供了JDBC驱动程序或ODBC驱动程序,您就可以使用ClickHouse-Local作为ETL工具,将数据从当前的数据库系统迁移到云数据库ClickHouse企业版。关于ClickHouse-Local、集成引擎和表函数的详细信息,请参见ClickHouse-Local、集成引擎和表函数。
其中ClickHouse为MySQL、PostgreSQL、MongoDB和SQLite提供了集成引擎和表函数(可以即时创建集成引擎)。对于所有其他流行的数据库系统提供了JDBC驱动程序或ODBC驱动程序。关于MySQL、PostgreSQL、MongoDB和 SQLite的详细信息,请参见MySQL、PostgreSQL、MongoDB和SQLite。
前提条件
安装ClickHouse-Local
您需要一个托管ClickHouse-Local的主机机器(例如ECS服务器或本地服务器),该主机机器可以访问您当前的源数据库系统和云数据库ClickHouse企业版目标服务。
下载ClickHouse-Local。
curl https://clickhouse.com/ | sh
运行ClickHouse-Local。
./clickhouse local
示例1:使用集成引擎从MySQL迁移到云数据库ClickHouse企业版
您可以使用集成表引擎(通过MySQL表函数动态创建)从源MySQL数据库读取数据,并使用remoteSecure表函数将数据写入云数据库ClickHouse企业版集群上的目标表。
在目标云数据库ClickHouse企业版集群上执行以下操作:
创建目标库。
CREATE DATABASE db
创建目标表,且目标表的结构与MySQL表的结构一致。
CREATE TABLE db.table ...
在安装ClickHouse-Local的主机机器上运行ClickHouse-Local。
./clickhouse local --query "INSERT INTO FUNCTION remoteSecure('HOSTNAME.clickhouse.cloud:9440', 'db.table', 'default', 'PASS') SELECT * FROM mysql('host:port', 'database', 'table', 'user', 'password');"
说明在ClickHouse-Local主机机器上不会存储任何数据。数据都是从源MySQL表中读取,然后立即写入云数据库ClickHouse企业版服务上的目标表中。
示例2:使用JDBC从MySQL迁移到云数据库ClickHouse企业版
您可以使用JDBC集成表引擎、ClickHouse JDBC birdge及MySQL JDBC驱动程序,从源MySQL数据库中读取数据,并使用remoteSecure表函数将数据写入云数据库ClickHouse企业版集群的目标表中。JDBC集成表引擎、ClickHouse JDBC bridge和remoteSecure表函数的详细信息,请参见JDBC集成表引擎、ClickHouse JDBC birdge和remoteSecure表函数。
在目标云数据库ClickHouse企业版集群上执行以下操作:
创建目标库。
CREATE DATABASE db
创建目标表,且目标表的结构与MySQL表的结构一致。
CREATE TABLE db.table ...
在安装ClickHouse-Local的主机机器上安装配置运行ClickHouse JDBC Bridge。具体操作,请参见操作指南。
在安装ClickHouse-Local的主机机器上运行ClickHouse-Local。
./clickhouse local --query " INSERT INTO FUNCTION remoteSecure('HOSTNAME.clickhouse.cloud:9440', 'db.table', 'default', 'PASS') SELECT * FROM mysql('host:port', 'database', 'table', 'user', 'password');"
说明在ClickHouse-Local主机机器上不会存储任何数据。数据都是从源MySQL表中读取,然后立即写入云数据库ClickHouse企业版服务上的目标表中。
数据类型映射
RDS MySQL或PolarDB MySQL类型 | 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 |
其他 | String |