Canal for OB 部署流程 - oceanbase/canal GitHub Wiki

安装包下载:https://github.com/oceanbase/canal/releases

简介

参考:https://github.com/alibaba/canal/wiki/%E7%AE%80%E4%BB%8B

canal中主要提供了4个组件:

  • canal deployer:canal的server端,进行binlog到CanalEntry的转换。
  • canal admin:canal的配置管理服务,提供web页面管理canal的server端服务。
  • canal adapter:canal的客户端适配器,解析CanalEntry并将增量变动同步到目的端。
  • canal example:canal的client端示例,用户可以基于该部分代码实现自己的消费逻辑。

我们的部署主要涉及前3个组件。

Canal Deployer

Canal Deployer的服务中有Server和Instance的概念,一个server代表一个deployer服务,一个instance代表一个实际的数据同步通路,在Canal Server中,一个Server可以有多个Instance。

Canal Instance由Spring在运行时创建,其配置信息canal deployer的conf/canal.properties中指定。Canal本身提供了几种可以直接使用的配置,存放在conf/spring目录下。

Canal Instance在解析完日志信息后,得到的CanalEntry数据会放入内存等待消费。Canal提供了两种消费方式供用户选择:

  1. TCP模式,直接使用客户端连接Canal消费数据
  2. MQ模式,先将Canal内存中的数据写入MQ,用户可以使用客户端连接MQ进行数据消费

Canal中有两种位点信息,一个是解析位点,即日志转化Entry的过程记录的位点,由LogPositionManager管理,另一个是客户端消费的位点,由MetaManager管理。两者同样是在instance的spring xml文件进行配置。

Canal Adapter

Canal Adapter用于消费CanalEntry,并写入对应的目的容器。adapter与deployer一样有instance的概念,实际运行时,adapter本身由adapter launcher服务启动,并根据用户配置生成adapter instance,由instance执行具体的CanalEntry读取和目的端写入的工作。

Canal Admin

Canal Admin就是为了简化部署操作而引入的一个管理平台服务。Canal Deployer和Canal Instance都分别支持单机部署和高可用集群部署两种模式,通过Canal Admin,用户可以通过web页面来方便地管理Canal Deployer和Canal Instance的部署,同样也是支持单机部署和高可用集群化部署。

项目目录

项目主要包含如下几部分:

  • bin:存放启动、关闭、重启脚本
  • conf:配置文件目录
  • lib:项目用到的jar包
  • logs:用bin目录的脚本启动时,日志会打到这个目录下
  • plugin:一些可选择的插件的jar包

部署流程

准备

  • JDK 8
  • 如果集群部署,需要安装Zookeeper

Canal Deployer

conf目录内容:

  • canal.properties:canal server的配置文件
  • canal_local.properties:使用canal admin部署时需要用到的配置文件
  • spring:spring配置文件,用于生成instance
  • example:canal instance的配置文件。此处的example对应canal.properties中的destination值

部署流程:

Canal Adapter

conf目录内容:

  • application.yml:adapter的配置文件
  • rdb:用于存放rdb的映射配置,adapter会读取该目录下所有配置

部署流程:部署canal.adapter(rdb)