zoukankan      html  css  js  c++  java
  • canal中间件

    简介:

    基于数据库增量(模拟MySQL slave的交互协议)日志解析,提供增量数据订阅和消费(客户端与canal建立关系)

    安装版本:1.1.0
    git

    环境需求:

    • jdk1.7以上
    • mysql开启binlog_format=row,并配置mysql slave相关权限。

    目录结构:

    [root@wap canal]# tree -L 2 /usr/local/canal
    /usr/local/canal
    ├── bin              #启动、关闭、重启命令
    │   ├── restart.sh
    │   ├── startup.bat
    │   ├── startup.sh
    │   └── stop.sh
    ├── conf                  #配置文件目录
    │   ├── canal.properties  #canal程序配置文件
    │   ├── example           #数据库实例配置目录,一个实例一个目录
    │   	│	├── instance.properties  #每个实例单独的配置文件
    │   │	└── meta.dat      #记录binlog相关信息,防止重启相关信息丢失
    │   ├── logback.xml
    │   ├── metrics
    │   └── spring
    ├── lib
    │   ├── aopalliance-1.0.jar
    │   ├── aviator-2.2.1.jar ....
    └── logs
        ├── canal        #canal程序本身日志目录
        └── example      #连接数据库实例的日志目录
    

    配置说明:

    conf/canal.properties 主配置文件:

    • canal.id: 每个canal server实例的唯一标识
    • canal.ip: 服务地址
    • canal.port: 服务端端口,客户端连接
    • canal.zkServers: 集群时,连接zookeeper
    • canal.instance.detecting.enable: 是否开启心跳检查
    • canal.instance.detecting.sql: 心跳检查sql,配置select查询语句,适用于高可用场景
    • canal.destinations: canal上部署的instance列表,多实例用逗号分隔
    • canal.conf.dir: 配置文件目录
    • canal.auto.scan: 开启instance自动扫描,扫描canal.conf.dir目录下的instance
    • canal.file.data.dir: 持久化数据到file目录
    • canal.instance.global.spring.xml: 全局的spring配置方式的组件文件,默认选择基于file持久化模式,用于非HA场景

    canal.instance.global.spring.xml配置选项介绍

    memory-instance.xml介绍:

    所有的组件(parser , sink , store)都选择了内存版模式,记录位点的都选择了memory模式,重启后又会回到初始位点进行解析
    特点:速度最快,依赖最少(不需要zookeeper)
    场景:一般应用在quickstart,或者是出现问题后,进行数据分析的场景,不应该将其应用于生产环境

    default-instance.xml介绍:

    store选择了内存模式,其余的parser/sink依赖的位点管理选择了持久化模式,目前持久化的方式主要是写入zookeeper,保证数据集群共享.
    特点:支持HA
    场景:生产环境,集群化部署.

    group-instance.xml介绍:

    主要针对需要进行多库合并时,可以将多个物理instance合并为一个逻辑instance,提供客户端访问。
    场景:分库业务。 比如产品数据拆分了4个库,每个库会有一个instance,如果不用group,业务上要消费数据时,需要启动4个客户端,分别链接4个instance实例。使用group后,可以在canal server上合并为一个逻辑instance,只需要启动1个客户端,链接这个逻辑instance即可.

    conf/example/instance.properties 实例配置

    • canal.instance.mysql.slaveId: slaveid唯一,与mysql serverid不同即可。
    • canal.instance.gtidon=false : 是否开启gtid
    • canal.instance.master.address: 数据库链接地址
    • canal.instance.master.journal.name: 链接起始的binlog文件
    • canal.instance.master.position: 链接起始的binlog偏移量
    • canal.instance.master.timestamp: 链接时起始的binlog时间戳
    • canal.instance.dbUsername: 数据库帐号
    • canal.instance.dbPassword: 数据库密码
    • canal.instance.connectionCharset: 与数据库编码格式一致
    • canal.instance.filter.regex=... :正则匹配库和表,默认所有库和表
    • canal.instance.filter.black.regex=mysql..* :过滤掉哪些库和表,这里过滤mysql库的所有表。正则匹配

    官网详细配置说明

    配置式例:

    1. 多实例配置

    1. 打开canal.auto.scan参数,会根据canal.auto.scan.interval定义的频率,进行扫描
    • 发现目录有新增,启动新的instance
    • 发现目录有删除,关闭老的instance
    • 发现对应目录的instance.properties有变化,重启instance
    cp -a conf/example conf/example_1
    
    
    1. 关闭canal.auto.scan,在canal.destinations后以逗号分隔配置多实例名称。
    canal.destinations= example,example_1
    
    $ cp -a conf/example conf/example_1
    $ ./bin/restart.sh
    

    高可用,集群相关配置wiki中介绍,请参阅官网
    源码分析

  • 相关阅读:
    瑞士军刀DLib的VS2015编译
    win10编译libpng
    win10编译zlib
    win10编译jpeglib
    Hough Transform直线检测
    html+css简单的实现360搜索引擎首页面
    HTML和css简单日常总结
    MySQL中的分区(六)KEY分区
    CentOS 8 安装vsftpd 服务器
    linux负载过高 排查方法及说明 附:Centos安装iostat
  • 原文地址:https://www.cnblogs.com/dance-walter/p/11344851.html
Copyright © 2011-2022 走看看