调研时间:2021年08月,之后是否出现优化方案未知
方式1:网上开源python脚本-----mysql-clickhouse-replication
安装参考:https://www.cnblogs.com/gomysql/p/11199856.html
软件路径:https://github.com/yymysql/mysql-clickhouse-replication
全量同步 + ddl同步:依赖clickhouse的外部mysql引擎
增量同步: 使用python脚本
python环境: 2.7版本
pip install MySQL-python
pip install mysql-replication
## clickhouse-driver的版本需要特别注意,其他版本不行
pip install clickhouse-driver==0.0.20
pip install redis
方式2: clickhouse官方还处于开发中的物化mysql引擎
参考链接: https://blog.csdn.net/weixin_36524613/article/details/118734532
https://blog.csdn.net/weixin_36226933/article/details/112274864
同步用户需要的权限:
GRANT SELECT, RELOAD, REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘repl’@‘%’
优点:
1、官方
2、基本实时同步
3、支持大多数ddl
问题:
1、不支持create table tb2 like tb1语句
2、一旦同步出现报错,无法跳过gtid,重新启动
3、还处于试验阶段。
方式3: 网上开源python工具------synch
软件地址:
https://github.com/long2ice/synch
python3.7.0以上版本时报错ModuleNotFoundError: No module named ‘_ctypes‘的解决办法
https://blog.csdn.net/qq_36416904/article/details/79316972
yum install libffi-devel -y
linux安装程序时出现找不到ibpq-fe.h头文件的解决方案
yum install postgresql-devel
redis 必须5.0以上,需要使用stream类型
##### 消息中间件暂时使用redis,减小架构复杂度
抽取binlog
synch --alias mysql_db produce
消费binlog
synch --alias mysql_db consume --schema wjf_test
全量同步
synch --alias mysql_db etl --schema wjf_test --table tb1
redis记录
特性:
全量复制与实时增量复制。
支持 DML 同步与 DDL 同步, 支持增加字段、删除字段、更改字段,并且支持所有的 DML。
错误邮件通知。
支持 redis 与 kafka 作为消息队列。
支持多源数据库同时同步到 ClickHouse。
支持 ClickHouse MergeTree、CollapsingMergeTree、VersionedCollapsingMergeTree、ReplacingMergeTree引擎。
支持 ClickHouse 集群。
方式对比
主要功能满足情况对比:
方案 | 表结构同步 | 全量数据 | 增量数据 | DDL支持 | 断点续传 | 是否支持分片表汇聚 | 存在问题 | 其他说明 |
---|---|---|---|---|---|---|---|---|
mysql-clickhouse-replication | 支持 | 支持 | 支持 | 不支持 | 不支持 | 不支持 | 1、功能比较简陋,无有效案例和技术支持。 | |
物化mysql引擎 | 支持 | 支持 | 支持 | 支持 | 不支持 | 不支持 | 1、处于官方试验阶段,不稳定、2、遇到报错无法手工跳过续传 | 不支持mysql create table like语句 |
synch | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 1、缺少其他公司案例支撑,若使用过程中出现问题,需要较长的修复时间 |