将MySQL迁移到ClickHouse 本页为使用数据传输服务DTS将MySQL数据迁移到ClickHouse的详细介绍,包括数据迁移支持的源库、目标库,支持的迁移对象及SQL,数据库账号权限说明,操作须知,操作步骤等。 支持的源和目标数据库 支持的源和目标数据库,如下表: 源数据库 目标数据库 RDS for MySQL 自建 MySQL 5.6部分版本/5.7/8.0 云数据库ClickHouse 22.8.9.24 说明 源库为自建MySQL数据库时,支持的版本为5.6部分版本/5.7/8.0。 支持的迁移对象及SQL 迁移对象 当前DTS支持表级(指定的表对象)迁移。 支持表的结构迁移。 数据迁移仅针对数据源中的用户数据库,而系统库会被自动过滤。例如:MySQL 数据源中的 informationschema、mysql、performanceschema、sys 库不会出现在可迁移列表当中。 若源库为空库(该库下未创建任何表),不支持作为待迁移对象。 增量迁移支持的SQL操作 DML INSERT、UPDATE、DELETE。 DDL 增量迁移的DDL操作仅支持ALTER TABLE下的ADD COLUMN、MODIFY COLUMN、RENAME COLUMN、DROP COLUMN操作,以及TRUNCATE TABLE、DROP TABLE操作。如果是整库迁移,也支持CREATE TABLE。 注意 暂不支持 CREATE TABLE 表名 AS SELECT 语句和 CREATE TABLE表名LIKE语句。 MySQLClickHouse数据类型映射 数据类型映射关系如下表: 类型 源实例中的数据类型 数值范围 ClickHouse 整数类型 BIT[(M)] 1 ~ 64 UInt64 整数类型 整数类型 整数类型 整数类型 整数类型 整数类型 整数类型 整数类型 整数类型 整数类型 TINYINT[(M)] 128 ~ 127 Int8 TINYINT[(M)] UNSIGNED 0 ~ 255 UInt8 SMALLINT[(M)] 32768 ~ 32767 Int16 SMALLINT[(M)] UNSIGNED 0 ~ 65535 UInt16 MEDIUMINT[(M)] 8388608 ~ 8388607 Int32 MEDIUMINT[(M)] UNSIGNED 0 ~ 16777215 UInt32 INT[(M)] 2147483648 ~ 2147483647 Int32 INT[(M)] UNSIGNED 0 ~ 4294967295 UInt32 BIGINT[(M)] 9223372036854775808 ~ 9223372036854775807 Int64 BIGINT[(M)] UNSIGNED 0 ~ 18446744073709551615 UInt64 DECIMAL(M) DECIMAL(M, 0) DECIMAL(M, D) DECIMAL(M, D) DEC[(M[,D])] M:0~65 ; D:0~30 DEC DECIMAL(10, 0) DEC[(M[,D])] M:0~65 ; D:0~30 DEC(M) DECIMAL(M, 0) DEC[(M[,D])] M:0~65 ; D:0~30 DEC(M, D) DECIMAL(M, D) NUMERIC[(M[,D])] M:0~65 ; D:0~30 NUMERIC DECIMAL(10, 0) NUMERIC[(M[,D])] M:0~65 ; D:0~30 NUMERIC(M) DECIMAL(M, 0) NUMERIC[(M[,D])] M:0~65 ; D:0~30 NUMERIC(M, D) DECIMAL(M, D) FIXED[(M[,D])] M:0~65 ; D:0~30 FIXED DECIMAL(10, 0) FIXED[(M[,D])] M:0~65 ; D:0~30 FIXED(M) DECIMAL(M, 0) FIXED[(M[,D])] M:0~65 ; D:0~30 FIXED(M, D) DECIMAL(M, D) FLOAT[(M,[D])] 1.175494351E38 ~ 3.402823466E+38 Float32 DOUBLE[(M,D)] 2.2250738585072014E308 ~ 1.7976931348623157E+308 Float64 REAL[(M,D)] 1.175494351E38 ~ 3.402823466E+38 Float32 DATETIME[(fsp)] 10000101 00:00:00.000000 ~ 99991231 23:59:59.999999 说明 格式为YYYYMMDD hh:mm:ss[.fraction](UTC时间)。 DATETIME DateTime64(0) DATETIME[(fsp)] 10000101 00:00:00.000000 ~ 99991231 23:59:59.999999 说明 格式为YYYYMMDD hh:mm:ss[.fraction](UTC时间)。 DATETIME(fsp) DateTime64(fsp) TIMESTAMP[(fsp)] 19700101 00:00:01.000000 ~ 20380119 03:14:07.999999 说明 格式为YYYYMMDD hh:mm:ss[.fraction](UTC时间)。 DateTime64[(fsp)]说明: 不包含时区信息,clickhouse的时区建议和源库MySQL的时区保持一致。 TIME[(fsp)] 838:59:59.000000 ~ 838:59:59.000000 说明 格式为hh:mm:ss[.fraction](UTC时间)。 STRING YEAR[(4)] 1901 ~ 2155,或0000. Int16 VARCHAR(M) 0 ~ 65,535 字符 STRING BINARY[(M)] 0 ~ 255 字节 BINARY FixedString(1) BINARY[(M)] 0 ~ 255 字节 BINARY(M) FixedString(M) VARBINARY(M) 0 ~ 65,535 字节 STRING TINYBLOB 255 (2^8 − 1) 字节 STRING TINYTEXT 255 (2^8 − 1) 字符 STRING BLOB 65,535 (2^16 − 1) 字节 STRING TEXT 65,535 (2^16 − 1) 字符 STRING MEDIUMBLOB 16,777,215 (2^24 − 1) 字节 STRING MEDIUMTEXT 16,777,215 (2^24 − 1) 字符 STRING LONGBLOB 4,294,967,295 or 4GB (2^32 − 1) 字节 STRING LONGTEXT 4,294,967,295 or 4GB (2^32 − 1) 字符 STRING ENUM('value1','value2',...) 最多可包含65,535枚举值 ENUM('value1','value2',...) SET('value1','value2',...) 最多可包含64个元素 STRING POINT 无 STRING LINESTRING 无 STRING POLYGON 无 STRING MULTIPOINT 无 STRING MULTILINESTRING 无 STRING MULTIPOLYGON 无 STRING GEOMETRYCOLLECTION 任何几何类型的值的集合 STRING ClickHouse的时间类型数据存在范围限制,若MySQL中的时间不在该范围内,会导致迁移到云数据库ClickHouse的时间不正确。 MySQL数据类型 最小值 最大值 映射到ClickHouse数据类型 最小值 最大值 Date 10000101 99991231 Date 19700101 00:00:00 21490606 00:00:00 Date 10000101 99991231 Date32 19250101 00:00:00 22831111 00:00:00 Date 10000101 99991231 DateTime 19700101 08:00:00 21060207 14:28:15 TimeStamp 19700101 00:00:01.000000 20380119 03:14:07.999999 DateTime64 19250101 08:00:00 22831112 07:59:59 DateTime 10000101 00:00:00.000000 99991231 23:59:59.999999 DateTime64 同上 同上