ClickHouse
必须先选择 MySQL 的表后,再选择 ClickHouse 插件,再选择 ClickHouse 库表的时候,如果ClickHouse表字段和MySQL表字段一致的情况下会自动填充
ClickHouse 对应用MySQL里的存储类型
括号里的代表是ClickHouse里的存储类型
TINYINT ( Int8 | UInt8 ) , SMALLINT ( Int16 | UInt16 ) , MEDIUMINT ( Int32 | UInt32 ), INT ( Int32 | UInt32 ) , BIGINT ( Int64 | UInt64 )
FLOAT ( Float64 ) , DOUBLE ( Float64 ) ,REAL ( Float64 )
NUMERIC( Float64 )
DECIMAL( String )
DATE ( Date )
TIME ( String )
YEAR ( Int16 )
DATETIME , TIMESTAMP ( DateTime )
CHAR , VARCHAR ( String )
TEXT , TINYTEXT , MEDIUMINTTEXT , LONGTEXT ( String )
BLOB, TINYBLOB , MEDIUMINTBLOB , LONGBLOB ( String )
ENUM ( String )
SET ( String )
BIT ( Int64 )
BOOL ( Int8 )
连接配置
eg : tcp://127.0.0.1:9000?Database=test&username=&compress=true
同步方式
Normal :
普通同步,MySQL新增一条,删除一条, ClickHouse 里也对应删除一条
InsertAll :
将DELETE ,UPDATE 转成 INSERT 语句往 ClickHouse 新增一条记录
这个操作,在ClickHouse 表里新增一个叫 EventType(String) 的字段, 在配置同步的时候, EventType 字段 在input 框中 填写 {$EventType} 标签
这个操作是将 数据源里的操作记录,全打到 ClickHouse 里进行存储
标签
{$Timestamp} : 同步的时间戳,并不是 Binlog 发生的时间
{$EventType} : 事件类型,insert delete update 三个字符串
{$BinlogTimestamp} : Binlog记录的时间戳
{$BinlogFileNum} : Binlog文件编号,并不是 整个Binlog文件名,比如 binlog 文件是 mysql-bin.000001 那这个 BinlogFileNum 的值 是1
{$BinlogPosition} : Binlog position 位点
备注: 标准模式下同步,只支持 {$Timestamp} 标签,其他标签暂不支持
自动过滤规则(标准同步方式)
假如同一个主键的数据,在同一批次刷数据,会自动过滤多余操作
1. 假如 id = 1 这条数据,连接有 insert ,delete ,update 操作
则只会执行最后的 update 操作,不会执行前面insert 及 delete操作
2. 假如 id = 1 这条数据,连接有 insert ,delete ,insert ,delete 顺序操作
则只会执行最后的 delete 操作一次,不会执行 insert
update 操作是转换成 delete 再 insert 两次操作
备注
必须只能选择一个字段为主键
不支持批量设置表
ClickHouse 18+ 版本
假如源端是 decimal或者 varchar 等字符串类型, 目标端ClickHouse 是 Float32,Float64 或者 Decimal 类型,数据类型转换,可能存在精度精失的,如果要确保精度不丢失,ClickHouse 端使用 String 类型
不支持 NULL 值字段,假如数据源为 Null ,将强制转换成 0, 0.00 或者 空字符串
假如数据源是String类型,Ck表结构是 Int 或者 Float 类型,数据类型转换失败,并不报错,将强制转换成 0 或者 0.00
BatchSize参数代表累积多少条数据刷一次数据到ClickHouse,假如一直没有数据从 MySQL 过来,则默认5秒超时,也会进行刷一次