mysql_to_clickhouse同步方案调研

调研时间: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记录

mysql_to_clickhouse同步方案调研_第1张图片

特性:

全量复制与实时增量复制。
支持 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、缺少其他公司案例支撑,若使用过程中出现问题,需要较长的修复时间

你可能感兴趣的:(mysql,mysql,clickhouse,数据库)