• 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
  • 相关阅读:
    单目标应用:人工兔优化算法(Artificial Rabbits Optimization ,ARO)求解旅行商问题TSP(提供MATLAB代码)
    葡萄糖-聚乙二醇-牛血清白蛋白,BSA-PEG-Glucose,牛血清白蛋白-PEG-葡萄糖
    起底野蛮成长的腾讯共享wifi赚钱小程序,到底是机遇还是陷阱?
    cnpm安装步骤
    Pycharm----将Anaconda建立的环境导入
    Flink的简单学习(kafka)三
    API对接是什么意思,技术分享
    企业内网远程桌面控制软件及解决方案
    微信小程序--公共组件使用
    CMake教程系列-04-编译相关函数
  • 原文地址:https://blog.csdn.net/daai5201314/article/details/126457903