最近项目中用到了Clickhouse,使用了MaterializedMySQL对Mysql表做映射,虽然使用的是阿里云的集群且阿里云已经为你准备好了一切。但是我还是觉得有必要自己实践一下,是如何操作的。
因为物理设备的限制,所以选择在Docker环境进行开发。
ClickHouse在20.8.2版本之后增加了MaterializeMySQL物化引擎,该引擎可以将MySQL中某个库下的所有表数据全量及增量实时同步到ClickHouse中,可以高效地对数据进行分析。
MaterializeMySQL物化引擎实时同步MySQL中数据原理是将ClickHouse作为MySQL副本,读取MySQL binlog日志实时物化MySQL数据,在ClickHouse中会针对MySQL映射库下的每一张表都会创建一张ReplacingMergeTree表引擎。
1.持全量和增量同步,首次创建数据库引擎时进行一次全量复制,之后通过监控binlog变化进行增量数据同步。
2.兼容支持MySQL中Insert、update、delete、alter、create、drop、truncate等大部分常用的DDL操作,不支持修改表名、修改列操作。支持添加列、删除列。
3.使用的是MySQL的GTID复制模式。
安装Clickhouse以及Mysql
安装Clickhouse并配置
|
|
修改配置文件
–ulimit nofile=262144:262144,修改Linux单个进程最大打开文件句柄数。
安装Mysql并配置
|
|
–default-authentication-plugin=mysql_native_password,ClickHouse物化Mysql支持该验证类型
–gtid-mode=on,Mysql开启主从复制功能
–enforce-gtid-consistency=on,保证主从复制一致性
这些是必要参数,不然无法开启物化
执行物化
|
|
至此物化MySQL就完成了。