一.背景与需求

最近有个OLAP的需求,我们需要将MySQL的一些数据(这种数据有一种特性就是一旦产生记录,以后不会再进行修改、删除操作,例如登录日志、操作日志等诸如此类)。这种数据特性正好符合Clickhouse的用武之地,我们经过调研最终确定使用Clickhouse作为OLAP系统的数据库。

但是也随之迎来一个问题,运营人员对于这些数据的实时性还是有要求的,例如做一些实时报表分析。 我们大部分的业务系统采用的MySQL,所以自然而然想到通过订阅binlog的方式将MySQL的数据同步到Clickhouse中。

例如最简单和想到的一种方式是:

1.通过canal订阅mysql的binglog, 将binlog数据写入kafka, 自己写一个kafka消费者对MySQL数据进行处理写入对应Clickhouse的表中,完成数据同步。

优点:   逻辑简单,canal成熟。消费kafka的逻辑可以自由发挥

缺点:  每增加一张表要修改消费者代码,针对消费者的高可用、易拓展性、监控告警以及可维护性需要花费大量的时间。

最后,我们在网上也找了一些现成的数据同步工具,要么就是收费商业很昂贵,要么SASS(不支持私有化部署,需要安装Agent),要么开源star很少没几个人维护不敢用在生产环境。 最终发现Cloudcanal满足我们的需求:

1.支持私有化部署,整个同步过程采用Web可视化操作管理同步任务,同时还有异常监控、微信技术支持交流群(很重要,遇到问题有人解决,并且有很多技术的小伙伴相互交流)

2.Cloudcanal提供社区版许可证,可以免费使用3个月,到期后还可以继续续期。同时如果想获得更多的技术支持,Cloudcanal还支持商业版,花钱享受更多的技术支持

3.支持的数据源和目标源类型很多,常见的MySQL、Clickhouse、Starrocks、Doris、Redis等都可以支持同步

官网: https://www.clougence.com/

二.操作界面

使用门槛低,直接看官方文档一个脚本就能安装了。本质上Cloudcanal组件都是以Docker的方式进行运行,很方便,轻量级。 后面就是从界面上进行操作即可。

1.任务页面

2.添加数据源

三.MySQL同步到Clickhouse-优化

1.修改默认最大连接数

修改config.xml配置文件选项:

<!-- 默认值200 -->
<max_concurrent_queries>200</max_concurrent_queries><!-- 修改后800 -->
<max_concurrent_queries>800</max_concurrent_queries>

2.修改max_query_size

修改users.xml配置选项

<default><!-- 默认值本来是16K,这个我直接改为2G,否则任务有时候会有问题,导致同步延迟 --><max_query_size>2147483648</max_query_size>
</default>

四.许可证到期告警

1.自定义exporter对接到Prometheus

这个其实实现原理很简单,既然能在页面操作,肯定前端发送HTTP请求进行处理。那么我们通过抓包拿到登录的URL地址进行模拟登录,抓到获取证书过期API就知道许可证还有多久过期了。 最简单的就是写一个脚本,轮询,如果发现距离证书过期还有7天则发送告警信息到企业微信或者钉钉等等。

但是由于我们既然使用了Prometheus告警体系,不想自己再写所谓的告警脚本了。我写了一个exporter对接prometheus, 然后在Prometheus设置告警即可。直接下载release二进制文件使用即可。

项目地址: https://github.com/dream-mo/cloudcanal-exporter

创作不易,如有帮助给个Star⭐鼓励一下~️

Grafana截图如下:

Cloudcanal数据同步神器相关推荐

  1. 阿里开源数据同步神器DataX异构数据源间数据同步同步MySQL与HDFS相互实战

    Datax 实战使用 继上一篇 阿里开源数据同步神器DataX异构数据源间数据同步基础介绍与快速入门之后的实战篇 1.MySQL-To-HDFS 环境 & 准备说明: 描述: 为了快速搭建测试 ...

  2. 离线数据同步神器:DataX,支持几乎所有异构数据源的离线同步到MaxCompute

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 概述 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlSer ...

  3. mysql获取最好成绩对应数据的其他项_开源数据同步神器——canal

    前言 如今大型的IT系统中,都会使用分布式的方式,同时会有非常多的中间件,如redis.消息队列.大数据存储等,但是实际核心的数据存储依然是存储在数据库,作为使用最广泛的数据库,如何将mysql的数据 ...

  4. 开源数据同步神器——canal

    前言 如今大型的IT系统中,都会使用分布式的方式,同时会有非常多的中间件,如redis.消息队列.大数据存储等,但是实际核心的数据存储依然是存储在数据库,作为使用最广泛的数据库,如何将mysql的数据 ...

  5. datax 定时执行多个job_数据同步神器Datax源码重构

    每日一句永远不要认为我们可以逃避, 我们的每一步都决定着最后的结局, 我们的脚步正在走向我们自己选定的终点.Do not ever think about that we can escape , o ...

  6. 数据同步神器Canel-day01

    背景 关于数据同步的方式有很多种,现在有一个场景需要将mysql数据库的数据主动同步到我们的工程中,并且能再mysql数据库客户端更改某一行的数据也能将数据同步到另一个数据库或者工程中,对于这种场景的 ...

  7. 推荐一个开源数据同步神器,支持多种数据源和预警功能!

    DBSyncer是一款开源的数据同步中间件,提供MySQL.Oracle.SqlServer.PostgreSQL.Elasticsearch(ES).Kafka.File.SQL等同步场景. 支持上 ...

  8. 可视化数据同步迁移工具 CloudCanal

    CloudCanal 介绍 CloudCanal 是一款数据迁移同步工具,提供友好的可视化操作界面,支持多种数据源间的数据迁移.数据同步.结构迁移.数据校验. CloudCanal 核心团队成员来自阿 ...

  9. Oracle到MySQL实时数据同步CloudCanal实战

    简述 CloudCanal 2.1.0.x 版本开始支持 Oracle 作为源端的数据迁移同步能力,目前邀请测试中. 本文通过 Oracle 到 MySQL 的数据迁移同步案例简要介绍这个源端的能力. ...

最新文章

  1. 内行的AI盛会——北京智源大会带你洞见未来!(含日程及限量优惠)
  2. java ado_Java进击C#——语法之ADO.NET
  3. webpack 配置文件.conf.js 浅理解
  4. android崩溃日志收集
  5. c#中一个简单的深拷贝方法
  6. GridView如何设置View的初始样式
  7. 工厂方法 Factory Method
  8. 计算机断电后会丢失的是什么,计算机突然停电,什么数据会丢失?
  9. LINUX使用C调用LMDB的方法
  10. 《麦肯锡方法》第10章 演示汇报-思维导图
  11. L2-029 特立独行的幸福 (25分)GPLT团体程序设计天梯赛
  12. 爬虫:Instagram信息爬取
  13. 介绍下微信刷票被禁了怎么办及微信拉票怎么人工买票的方法
  14. 【论文笔记】Resolution Adaptive Networks for Efficient Inference (CVPR2020)
  15. 昨天的双十一你又剁手了吗?
  16. 使用scala将数据写入linux上的MongoDB数据库
  17. 284页beego官方中文文档,Go语言进阶必备
  18. 全面详解Android实现多线程的几种方式(史上最全,最详细)
  19. java 坦克世界源代码教程_Unity开发《坦克世界》项目实战视频教程
  20. Notifications (通知、通告)

热门文章

  1. 关于请求被挂起页面加载缓慢问题的追查(stalled 时间过长)
  2. iOS - Share 分享/第三方登录
  3. android设置静态i,关于Android4.0系统下如何设置wlan静态ip的设置(转)
  4. 解放双手:一键备份/还原 VSCODE配置
  5. L2-028 秀恩爱分得快 (25 分)
  6. 多玩YY语音的面试题 C++中如何在main 函数之前执行操作
  7. mysql事务的四大特性_浅谈数据库事务四大特性
  8. 如何在微博首页放置一个二维码?
  9. 电子取证初学者的一些建议,给临安师弟师妹的答疑贴。
  10. 揭秘信用卡套现三种方法 手续费为套现额的10%