使用Canal-1.1.5实现ClickHouse实时同步MySQL数据(rabbitmq版)

ClickHouse作为OLAP分析引擎已经被广泛使用,数据的导入导出是用户面临的第一个问题。由于ClickHouse本身无法很好地支持单条大批量的写入,因此在实时同步数据方面需要借助其他服务协助。本文给出一种结合Canal+rabbit的方案,并且给出在多个MySQL实例分库分表的场景下,如何将多张MySQL数据表写入同一张ClickHouse表的方法,欢迎大家批评指正

之前讲述过使用Canal实现ClickHouse实时同步MySQL数据,但是发现有点小问题,只同步了一张表的数据,这次除修复这个bug后,有集成了rabbitmq来作为消息队列

我的需求就是将mysql多张表的数据实时同步到clickhouse中,参考了很多网上的资料,写的都不是很好,有的配置完成后,就会报错,今天终于实现了该功能,分享给大家。

我主要利用canal来实现ClickHouse实时同步MySQL数据,并且使用了rabbitmq来做消息队列(canal-1.1.5支持了rabbitmq)

  • mysql配置不再赘述,看我的上一篇文章即可
  • rabbitmq配置 (rabbitmq自行安装)
  • canal安装配置
  • canal-client安装配置
  • 创建clickhouse的数据库和表
  • 结果展示

1. mysql配置不再赘述,看我的上一篇文章即可

上一篇 使用Canal实现ClickHouse实时同步MySQL数据

2. rabbitmq配置

新建交换机

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pMV99Iw0-1660097859524)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/684434d9ddc54e999af7dc2ff3fcca2a~tplv-k3u1fbpfcp-watermark.image)]

新建队列

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GZxe9VQ4-1660097859525)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/67778ea3e826402995b9466debbb5174~tplv-k3u1fbpfcp-watermark.image)]

交换机和队列绑定

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lxC7agbO-1660097859527)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8ec85ccc58304109974f440d9460cd20~tplv-k3u1fbpfcp-watermark.image)]

3. canal安装配置

下载 canal, 访问 release页面 , 选择需要的包下载, 如以 1.1.5 版本为例
#下载canalan安装包
wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.deployer-1.1.5.tar.gz

#解压到指定目录
mkdir -p /usr/tool/canal
tar zxvf  canal.deployer-1.1.5.tar.gz  -C  /usr/tool/canal

#解压后进入目录,结构如下
drwxr-xr-x   7 awwzc  staff   238 12 14 23:34 bin
drwxr-xr-x   9 awwzc  staff   306 12 14 23:32 conf
drwxr-xr-x  83 awwzc  staff  2822 12 14 23:30 lib
drwxr-xr-x   4 awwzc  staff   136 12 14 23:34 logs

#修改canal.properties(一定要修改)
canal.serverMode = rabbitmq
canal.mq.servers = xxx #mq的ip地址
canal.mq.vhost=/
canal.mq.exchange=ck-ex # 交换机
canal.mq.username=xxx
canal.mq.password=xxx
canal.mq.aliyunuid=


#修改example文件夹下面的instance.properties文件下面几项为你自己的数据库配置即可
vi conf/maxwell/instance.properties

# position info
canal.instance.master.address=192.168.0.102:3306
canal.instance.filter.regex=aqi_china\\.tb_aqi_.* #筛选mysq
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值