因工作需要,调研了很多 OLAP 系统,像 Druid、Presto、Kylin、ClickHouse 等,最终选定了 ClickHouse,其优点:快、安装简单、依赖少。
于是开启了踩坑之旅。
网上搜了很多从 MySQL 同步数据到 ClickHouse 的工具,好吧,确实很少,推荐最多的是https://github.com/Altinity/clickhouse-mysql-data-reader,无奈其不支持更新和删除,遂弃之;
找到了阿里开源的 canal,搭建了半天,先用 docker 死活搭建不成功,貌似里面启动了一个 MySQL 服务器,我本机也搭了个,冲突了,服!于是下载安装,可算装上了,一番配置过后,参考http://www.wuzhq.com/2019/12/16/mysql2clickhouse/这篇文章,结果同步报错,貌似语法解析错误什么的,弃之;
然后找到了https://github.com/yymysql/mysql-clickhouse-replication,原理是解析 MySQL binlog 同步,clone 下来一番修补总算是可以用上了。无奈其只支持 python2,代码也比较冗长,介于实在是无工具可用,于是打算对此重新改造。
基于 mysql-clickhouse-replication 修改优化,增加命令行操作,打包上传至 pypi,增加 python3&pypy3 支持。
只需要一行命令:mysql2ch --log-pos-to=file,你就可以享受从 MySQL 到 ClickHouse 的同步快感。
顺便推荐一个 BI 工具,metabase,配合 ClickHouse,你就可以对你的数据,想怎么玩儿,就怎么玩~