• canal安装以及介绍


    canal同步缓存数据

    1.canal可以用来监控数据库数据的变化,从而获得新增数据,或者修改的数据。

    2.canal是应阿里巴巴存在杭州和美国的双机房部署,存在跨机房同步的业务需求而提出的。
    3.阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务。

    Canal工作原理

    在这里插入图片描述
    原理相对比较简单:

    1. canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议
    2. mysql master收到dump请求,开始推送binary log给slave(也就是canal)
    3. canal解析binary log对象(原始为byte流)

    canal需要使用到mysql,我们需要先安装mysql,点击去查看,但canal
    是基于mysql的主从模式实现的,所以必须先开启binlog

    开启binlog模式

    先使用docker 创建mysql容器,此处不再演示.

    (1) 连接到mysql中,并修改/etc/mysql/mysql.conf.d/mysqld.cnf 需要开启主 从模式,开启binlog模式。

    执行如下命令,编辑mysql配置文件
    在这里插入图片描述
    命令行如下:

    docker exec -it mysql /bin/bash
    vi /etc/mysql/mysql.cnf
    
    • 1
    • 2

    修改/etc/mysql/mysql.cnf配置文件,添加如下配置:
    在这里插入图片描述
    上图配置如下:

    log-bin=/var/lib/mysql/mysql-bin
    server-id=12345
    
    • 1
    • 2

    (2) 创建账号 用于测试使用,
    使用root账号创建用户并授予权限

    create user canal@'%' IDENTIFIED by 'canal';
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT,SUPER ON *.* TO 'canal'@'%';
    FLUSH PRIVILEGES;
    
    • 1
    • 2
    • 3

    (3)重启mysql容器

    docker restart mysql
    
    • 1

    canal容器安装

    下载镜像:

    docker pull docker.io/canal/canal-server
    
    • 1

    容器安装

    docker run -p 11111:11111 --name canal -d docker.io/canal/canal-server
    
    • 1

    进入容器,修改核心配置canal.properties 和instance.properties,canal.properties 是canal自身的配
    置,instance.properties是需要同步数据的数据库连接配置。
    执行代码如下:

    docker exec -it canal /bin/bash
    cd canal-server/conf/
    vi canal.properties
    cd example/
    vi instance.properties
    
    • 1
    • 2
    • 3
    • 4
    • 5

    修改canal.properties的id,不能和mysql的server-id重复,如下图:
    在这里插入图片描述修改instance.properties,配置数据库连接地址:
    在这里插入图片描述

    这里的 canal.instance.filter.regex 有多种配置,如下:
    可以参考地址如下:

    https://github.com/alibaba/canal/wiki/AdminGuide

    mysql 数据解析关注的表,Perl正则表达式.
    多个正则之间以逗号(,)分隔,转义符需要双斜杠(\\)
    常见例子:
    1. 所有表:.* or .*\\..*
    2. canal schema下所有表: canal\\..*
    3. canal下的以canal打头的表:canal\\.canal.*
    4. canal schema下的一张表:canal.test1
    5. 多个规则组合使用:canal\\..*,mysql.test1,mysql.test2 (逗号分隔)
    注意:此过滤条件只针对row模式的数据有效(ps. mixed/statement因为不解析sql,所以无法准确提取
    tableName进行过滤)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    配置完成后,设置开机启动,并记得重启canal。

    docker update --restart=always canal
    docker restart canal
    
    • 1
    • 2
  • 相关阅读:
    新款 锐科达 SV-2702VP SIP广播音频模块 RTP流音频广播
    Centos中清除因程序异常终止,导致的残留的Cache/buff_drop_caches命令---linux工作笔记063
    业务安全相关安全产品的反思
    Mybatis-Plus条件构造器学习and方法
    OpenFunction v0.8.0 发布:通过 Dapr Proxy 加速函数启动
    Device Partner 平台合作伙伴认证和数据安全保护
    网络-fetch
    别走,这里有一份摸鱼小妙招,别人我不告诉他!
    复现PNAS图表:数据整理+聚类离散热图
    arthas修改日志级别
  • 原文地址:https://blog.csdn.net/daai5201314/article/details/126457903