springboot集成canal实现同步双写

2023-09-18 15:24:16
一.canal服务端

canal 是阿里巴巴 MySQL 数据库 Binlog 的增量订阅 & 消费组件。基于数据库增量日志解析,提供增量数据订阅 & 消费。

二.基于docker搭建

在docker环境中

1.执行 docker search canal 获取到需要下载的canal镜像

2.执行docker pull 选择下载的canal镜像

3.执行run

docker run \
--name canal \
-p 11111:11111 \
-d canal/canal-server:latest

4.获取配置文件到宿主机

进入canal
docker exec -it canal /bin/bash
//查看对应的conf文件在那个目录
复制配置文件到宿主机指定目录
docker cp /home/admin/canal-server/conf /docker/canal/config

3.在自己的liunx系统创建需要挂载的文件夹 我这边创建了config和logs文件

docker run \
--name canal \
-p 11111:11111 \
-v /docker/canal/config:/home/admin/canal-server/conf \
-v /docker/canal/logs:/home/admin/canal-server/logs \
-d canal/canal-server:latest

4.修改canal.properties配置

重要配置:

# canal端口
canal.port = 11111
# 可以支持tcp, kafka, rocketMQ, rabbitMQ, pulsarMQ
canal.serverMode = tcp
#实例名称,可以配置多个,配置多个会生产多个文件夹
canal.destinations = example

5.修改对应实力instance.properties配置

重要配置:

# 配置你连接的数据库地址
canal.instance.master.address=127.0.0.1:3306
# 配置数据库的username/password
canal.instance.dbUsername=root
canal.instance.dbPassword=123456
# table regex 监听的数据库规则
#.your_database 表示你要同步的数据库名,\\.表示匹配一个点号(.)的转义字符,.在正则表达式中表示匹配任意字符,因此需要转义表示匹配点号。.*表示匹配所有以 your_database.开头的字符串。
canal.instance.filter.regex=your_database\\..*
三.开启binglog日志

 1.使用canal需要mysql开启binlog日志

[mysqld]
#设置服务器id(确保唯一)
server-id=666
#设置日志个数默认ROW 根据需求选择
binlog_format=ROW
#开启binlog日志(mysql-bin 日志名称)
log-bin=mysql-bin
#设置需要复制的数据库,默认复制全部
#binlog-do-db=mydb

2.重启mysql服务

systemctl restart mysqld

3.查看状态(如果不为空则配置成功)

SHOW MASTER STATUS;
四.集成canal

1.引入jar

 <!-- canal 同步双写-->
        <dependency>
            <groupId>top.javatool</groupId>
            <artifactId>canal-spring-boot-starter</artifactId>
            <version>1.2.1-RELEASE</version>
        </dependency>

2.yml配置

canal:
  server: 192.168.1.1:11111
  destination: example

3.代码

import lombok.Data;

import javax.persistence.Column;
import javax.persistence.Id;


@Data
public class UserBean {

    @Id
    public Integer id;
    @Column(name = "name")
    public String name;
    @Column(name = "age")
    public Integer age;

    @Override
    public String toString() {
        return "UserBean{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}';
    }
}
import com.pw.canal.bean.UserBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import top.javatool.canal.client.annotation.CanalTable;
import top.javatool.canal.client.handler.EntryHandler;
@Slf4j
@CanalTable("sc_user")
@Component
public class UserBeanHandler implements EntryHandler<UserBean> {

    @Override
    public void insert(UserBean userBean ) {
      log.info("对象{}",userBean );
       //添加本地缓存
        //添加redis缓存
    }

    @Override
    public void update(UserBean before, UserBean after) {
        log.info("对象{}",before);
        log.info("对象{}",after);
       //添加本地缓存
        //添加redis缓存
    }

    @Override
    public void delete(UserBean userBean ) {
        log.info("对象{}",userBean );
       //添加本地缓存
        //添加redis缓存
    }
}
五.注意

1.如果控制台又打印日志,但是没有进入hardler,注意对象的转换字段类型是否匹配.

2.mysql配置文件中,是否设置了 binlog_format=ROW 

更多推荐

网络安全(黑客)自学

前言作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。谈起黑客,可能各位都会想到:盗号,其实不尽然;黑客是一群喜爱研究技术的群体,在黑客圈中,一般分为三大圈:娱乐圈技术圈职业圈。娱乐圈:主要是初中生和高中生较多,玩网恋,人气,空间,建站收徒玩赚钱,技术高的也是有的,只是很少见。技术圈:这个圈子

【SpringBoot集成Redis + Session持久化存储到Redis】

目录SpringBoot集成Redis1.添加redis依赖2.配置redis3.手动操作redisSession持久化存储到Redis1.添加依赖2.修改redis配置3.存储和读取String类型的代码4.存储和读取对象类型的代码5.序列化细节SpringBoot集成Redis1.添加redis依赖或将以下配置添加

Docker--未完结

一.Docker是干什么的在没亲自使用过之前,再多的术语也仅仅是抽象,只有写的人或者使用过的人能看懂。所以,作为新手来说,只要知道Docker是用于部署项目就够了,下面展示如何用Docker部署项目及Docker常用命令。二、安装Docker#1、yum包更新到最新yumupdate#2、安装需要的软件包,yum-ut

展会动态 | 迪捷软件邀您参加2023世界智能网联汽车大会

*9月18日之前注册的观众免收门票费*由北京市人民政府、工业和信息化部、公安部、交通运输部和中国科学技术协会联合主办的2023世界智能网联汽车大会将于9月21日-24日在北京·中国国际展览中心(顺义馆)举行。论坛背景本届展会以“聚智成势协同向新——迈向商业化应用新征程”为主题,总面积预计5万平方米,参展商200余家。展

java 工程管理系统源码+项目说明+功能描述+前后端分离 + 二次开发

Java版工程项目管理系统SpringCloud+SpringBoot+Mybatis+Vue+ElementUI+前后端分离功能清单如下:首页工作台:待办工作、消息通知、预警信息,点击可进入相应的列表项目进度图表:选择(总体或单个)项目显示1、项目进度图表2、项目信息施工地图:1、展示当前角色权限下能看到的施工地图(

《机器学习实战》笔记

《机器学习实战》笔记一:K近邻KNNK近邻算法概述:工作原理,一般流程;KNN示例:加载数据,分析数据,数据归一化,定义KNN算法,划分数据集,训练测试,使用算法构建完整可用系统;《机器学习实战》笔记二:决策树决策树构造:伪代码,一般流程,信息增益,划分数据集,递归构造决策树;测试和存储决策树:使用决策树执行分类,决策

JDK8特性——Stream API

文章目录集合处理数据的弊端Steam流式思想概述Stream流的获取方式根据Collection获取通过Stream的of方法Stream常用方法介绍forEachcountfilterlimitskipmapsorteddistinctmatchfindmax和minreducemap和reduce的组合mapToI

VScode常用快捷键

添加多个光标alt+鼠标左键Ctrl+Shift+P,F1:显示命令面板Ctrl+P:快速打开Ctrl+Shift+N:新窗口/实例Ctrl+Shift+W:关闭窗口/实例Ctrl+X:剪切行Ctrl+C:复制行ALT+↑/↓:上下移动Shift+Alt+↓/↑:向上/向下复制行Ctrl+Shift+K:删除行Ctrl

【树形 DP】如何从“方向“角度理解树形 DP

题目描述这是LeetCode上的「834.树中距离之和」,难度为「困难」。Tag:「树形DP」、「DFS」、「动态规划」、「树」给定一个无向、连通的树。树中有n个标记为0...n-1的节点以及n-1条边。给定整数n和数组edges,表示树中的节点和之间有一条边。返回长度为n的数组answer,其中answer[i]是树

UML六大关系总结

UML六大关系有:继承、关系、聚合、组合、实现、依赖。分为通过图和代码总结这些关系。1、继承classBird:Animal{}说明:一段都是子类继承父类,在子类的后面用一个冒号表示,冒号后面跟着父类的名字。继承只能继承父类共有和保护的属性或方法,私有的变量或方法不能被子类继承。2、关联ClassPenguin{pri

基于Pandas+余弦相似度+大数据智能护肤品推荐系统——机器学习算法应用(含Python工程源码)+数据集

目录前言总体设计系统整体结构图系统流程图运行环境Python环境Pycharm环境模块实现1.文件读入2.推荐算法1)数据预处理2)计算相似度3)排序并提取产品4)组合推荐算法3.应用模块1)得到最终产品2)筛选过敏物质3)筛选相互禁忌的产品4)输出单品推荐与组合推荐4.测试调用函数系统测试工程源代码下载其它资料下载前

热文推荐