Canal数据同步

最近在对项目进行重构的过程中,需要做一些数据同步的工作。首先想到的同步方案是定时任务,但是定时任务的弊端在于时效性不够高,对于时效性要求稍高的场景定时任务就明显不合适了。

网上查找相关资料,找到了 Canal,该项目正好可以满足我这边的场景。接下来看看 Canal 的强大功能吧!!

Canal概述

Canal 译意为水道/管道/沟渠,主要用途是基于 Mysql 数据库增量日志解析,提供增量数据订阅和消费。当前的 Canal 支持源端 Mysql 版本包括5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x。

Canal数据同步

项目安装

  1. 需要开启 Mysql 的 binlog 写入功能,配置 binlog-format 为 Row 模式

  2. 下载 Canal

     wget https://github.com/alibaba/canal/releases/download/canal-1.0.17/canal.deployer-1.0.17.tar.gz
    
  3. 安装 & 配置

    #解压下载的文件
    mkdir /tmp/canal
    tar zxvf canal.deployer-$version.tar.gz  -C /tmp/canal
    
    #配置
    vi conf/example/instance.properties
    ## mysql serverId
    canal.instance.mysql.slaveId = 1234
    #position info,需要改成自己的数据库信息
    canal.instance.master.address = 127.0.0.1:3306 
    #username/password,需要改成自己的数据库信息
    canal.instance.dbUsername = canal  
    canal.instance.dbPassword = canal
    canal.instance.connectionCharset = UTF-8
    #table regex
    canal.instance.filter.regex = .\*\\\\..\*
    
  4. 启动

    sh bin/startup.sh
    #查看启动日志
    vi logs/canal/canal.log</pre>
    
  5. 关闭

    sh bin/stop.sh
    

项目安装部署之后通过命令行管理集群和实例不是特别方便。Canal 已经考虑到这个问题,所以提供了管理页面,也就是下面介绍的 Admin。

安装部署 Canal Admin

Canal Admin 设计上是为 Canal 提供整体配置管理、节点运维等面向运维的功能,提供相对友好的 WebUI 操作界面,方便更多用户快速和安全的操作。

  1. 下载安装

    wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.admin-1.1.4.tar.gz
    
  2. 解压配置 & 初始化 sql

    mkdir /tmp/canal-admin
    tar zxvf canal.admin-$version.tar.gz  -C /tmp/canal-admin
    #修改配置
    vi conf/application.yml 
    #sql文件默认会在conf目录下
  3. 启动 & 关闭

    #启动
    sh bin/startup.sh
    #关闭
    sh bin/stop.sh

启动之后访问 http://127.0.0.1:8089/,默认账号密码: admin/123456

简单操作

集群管理里面配置相应的集群信息,以及 zookeeper 地址。

Canal数据同步

CanalServer 管理主要管理 CanalServer 端的配置。

Canal数据同步

Instance 管理就是管理使用 Canal 的客户端,例如:要同步的商品库、会员库, 可以分别配置实例。

Canal数据同步

Canal数据同步

如果小伙伴们工作中遇到相关的场景可以考虑使用 Canal 来实现。

总结

上面大概介绍了 Canal 的简单使用,安装配置好之后基本上所有的操作都是可以在控制台进行操作的,使用起来非常方便。

上一篇:Daemonset方式部署ingress-nginx结合keepalived实现高可用


下一篇:再谈值类型和引用类型