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) :

源insert,update,delete, 目标库也对应insert,update,delete , 建议 ClickHouse 表中新增一个名为 bifrost_data_version 的字段,使用{$BifrostDataVersion} 标签,用于异步删除数据安全

日志模式-追加(InsertAll) :

将DELETE ,UPDATE 转成 INSERT 语句往 ClickHouse 新增一条记录

这个操作,在ClickHouse 表里新增一个叫 EventType(String) 的字段, 在配置同步的时候, EventType 字段 在input 框中 填写 {$EventType} 标签

这个操作是将 数据源里的操作记录,全打到 ClickHouse 里进行存储

日志模式-UPDATE(LogUpdate) :

将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 位点

{$BifrostDataVersion} : 数据版本号,字段类型必须 为 Int64 或者 UInt64 ,异步删除的时候会用到,保证数据安全

自动过滤规则(普通同步方式)

假如同一个主键的数据,在同一批次刷数据,会自动过滤多余操作

 

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秒超时,也会进行刷一次

{$BifrostDataVersion} 标签的字段 必须为 Int64 或者 UInt64 数据类型