admin管理员组

文章数量:1652353

一.背景与需求

    最近有个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/

二.操作界面

        使用门槛低,直接看官方文档一个脚本就能安装了。本质上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/dream-mo/cloudcanal-exporter

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

      Grafana截图如下:

 

        

 

本文标签: 神器数据同步Cloudcanal