springboot整合canal

news2024/11/25 2:21:01

该篇博客是基于前两篇的基础上来实现的,如果没有看过可以看一下前面的步骤

使用docker搭建 MYSQL主从_极速小乌龟的博客-CSDN博客docker 上面搭建mysql主从服务器https://blog.csdn.net/qq_35771266/article/details/128101019?spm=1001.2014.3001.5501

ShardingSphere-JDBC读写分离_极速小乌龟的博客-CSDN博客mysql主从 + redis哨兵集群 + canal + 本地缓存的实现。https://blog.csdn.net/qq_35771266/article/details/128101972?spm=1001.2014.3001.5501

一、cannal用户创建

在原来搭建的主库3306上面新创建一个用户,给canal使用。

create user canal@'%';

ALTER USER 'canal'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT,SUPER ON *.* TO 'canal'@'%';

FLUSH PRIVILEGES;

重启mysql容器即可

docker restart  atguigu-mysql-master

二、安装Canal

这里没有设置密码,如果需要设置密码自己加上就行了。

docker run -p 11111:11111 --name canal \
-e canal.destinations=myCannal \
-e canal.instance.master.address=192.168.2.203:3306  \
-e canal.instance.dbUsername=canal  \
-e canal.instance.dbPassword=123456  \
-e canal.instance.connectionCharset=UTF-8 \
-e canal.instance.tsdb.enable=true \
-e canal.instance.gtidon=false  \
-e canal.instance.filter.regex=.*\\..* \
-d canal/canal-server:v1.1.5

注意:IP需要替换为自己的IP

说明:

  • -p 11111:11111:这是canal的默认监听端口
  • -e canal.instance.master.address=ip:3306:数据库地址和端口,如果不知道mysql容器地址,可以通过docker inspect 容器id来查看
  • -e canal.instance.dbUsername=canal:数据库用户名
  • -e canal.instance.dbPassword=123456 :数据库密码
  • -e canal.instance.filter.regex=:要监听的表名称
mysql 数据解析关注的表,Perl正则表达式.
多个正则之间以逗号(,)分隔,转义符需要双斜杠(\\) 
常见例子:
1.  所有表:.*   or  .*\\..*
2.  canal schema下所有表: canal\\..*
3.  canal下的以canal打头的表:canal\\.canal.*
4.  canal schema下的一张表:canal.test1
5.  多个规则组合使用然后以逗号隔开:canal\\..*,mysql.test1,mysql.test2 

 三、springboot整合canal

1.引入pom

<dependency>
    <groupId>top.javatool</groupId>
    <artifactId>canal-spring-boot-starter</artifactId>
    <version>1.2.1-RELEASE</version>
</dependency>

2.修改配置文件

#canal配置
canal.destination=myCannal
canal.server=192.168.2.203:11111

3.修改实体类

加上了主键@Id 和对应的   @Column(name = "uname") 其实如果此处的命名与数据库一致的haul是可以不用写的。

package com.atguigu.shargingjdbcdemo.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

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


@TableName("t_user")//逻辑表
@Data
public class User {

    @TableId(type = IdType.AUTO)
    @Id
    private Long id;
    @Column(name = "uname")
    private String uname;
}

4.实现监听处理器

package com.atguigu.shargingjdbcdemo.handler;

import com.atguigu.shargingjdbcdemo.entity.User;
import org.springframework.stereotype.Component;
import top.javatool.canal.client.annotation.CanalTable;
import top.javatool.canal.client.handler.EntryHandler;

/**
 * @author Administrator
 */
@CanalTable("t_user")
@Component
public class UserHandler implements EntryHandler<User> {

    @Override
    public void insert(User user) {
        System.out.println("新增用户");
        System.out.println("user = " + user);
    }

    @Override
    public void update(User before, User after) {
        System.out.println("修改用户");
        System.out.println("修改用户before:" + before);
        System.out.println("修改用户after:" + after);
    }

    @Override
    public void delete(User user) {
        System.out.println("删除用户user = " + user);
    }

}

四、整合测试

 启动以后控制台会打印一下语句,说明客户端在监听服务端了,等待服务端发送的消息。如果此时mysql数据发生了改变,那么canal服务端就能通过binlog进行监控感知,而后会给我们的客户端发送监听到的变化消息。

测试修改

 我在主库修改了用户数据,这里就监听到了变化之前和变化之后的数据。这样我们后面就能够通过canal来保证缓存数据的一致行了。

OK,到这一步,我们的canal就算整合进来了。下一步就是redis哨兵集群搭建以及本地缓存开启来实现多级缓存,以及通过canal来保证数据的一致性了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/45730.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matlab optimtool优化阵列天线的幅相激励

摘要&#xff1a; 阵列天线的激励幅度和相位控制着其方向图形状。例如锥削分布的幅度可实现低副瓣、递变相位激励可改变波束指向&#xff0c;采用幅相综合控制则可实现平顶波束、余割平方等波束赋形。下面介绍利用Matlab optimtool优化阵列天线的幅相激励实现上述需求。 推文…

超市结算系统|Springboot+Vue通用超市结算收银系统

作者主页&#xff1a;编程千纸鹤 作者简介&#xff1a;Java、前端、Pythone开发多年&#xff0c;做过高程&#xff0c;项目经理&#xff0c;架构师 主要内容&#xff1a;Java项目开发、毕业设计开发、面试技术整理、最新技术分享 收藏点赞不迷路 关注作者有好处 项目编号&…

JavaScript基础语法(变量)

JavaScript基础语法&#xff08;变量&#xff09; 学习路线&#xff1a;JavaScript基础语法&#xff08;输出语句&#xff09;->JavaScript基础语法&#xff08;变量&#xff09;->JavaScript基础语法&#xff08;数据类型&#xff09;->JavaScript基础语法&#xff…

(一)DepthAI-python相关接口:OAK Device

消息快播&#xff1a;OpenCV众筹了一款ROS2机器人rae&#xff0c;开源、功能强、上手简单。来瞅瞅~ 编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查…

SuperMap iPortal 与独立代理服务的 session 共享通过redis配置实现

作者&#xff1a;yx 文章目录前言一、支持的Tomcat系列二、使用步骤1.将 /lib 中所有的 jar 拷贝到 tomcat/lib 目录2.给 tomcat 添加一个系统环境变量 "catalina.base"&#xff0c;变量取值为 tomcat 的根目录3、修改 redis 的相关配置4、在 【SuperMap iPortal / i…

Dreamweaver简单网页——HTML+CSS小米官网首页的设计与实现

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

数字化时代,中小企业如何落地数字化转型

大数据时代&#xff0c;各行各业的行业龙头和大型集团都已经开始了数据管理&#xff0c;让数据成为数据资产。但是在我国&#xff0c;中小企业的数量巨大&#xff0c;很多管理者忽视了这一点&#xff0c;今天我们就来聊一聊中小企业的数字化转型。 中小企业需要数字化转型 首…

博客系统【前后端分离版本】

笔记【博客系统】 测试网站&#xff1a;小孙的博客系统 测试&#xff1a;admin 测试&#xff1a;123456 实现一个网站&#xff0c;有两种典型的风格&#xff1a; 服务器渲染客户端渲染&#xff08;前后端分离&#xff09; 所谓渲染&#xff0c;就是把一个动态页面给构造出来 页…

性能测试fangan

XX 5.0系统 性能测试方案 修订历史记录 1 项目概述 1.1 背景说明 1.2 测试目的 为保证在日常运行及大型活动期间&#xff0c;稳定运行、应用快速&#xff0c;对进行性能测试&#xff0c;验证系统是否能够达到业务所需的性能指标&#xff0c;同时发现系统中存在的性能瓶颈&a…

对辊柱塞式成型机总体设计

目 录 摘 要 I Abstract II 第一章 绪论 1 1.1选题背景及意义 1 1.2国内外型秸秆谷物发展概况 2 1.2.1国外发展现状 2 1.2.2国内发展现状 2 1.3对辊柱塞式成型机的发展概况 6 1.3.1对辊柱塞式成型机的发展展状况 6 1.3.2对辊柱塞式成型机的成型机理 7 1.3研究主要内容 9 第二章…

UGUI性能优化学习笔记(一)网格重建

一、基本概念 在正式学习UGUI性能优化之前&#xff0c;需要先了解一些基本的概念 网格 无论是3D物体还是2D物体&#xff0c;都是由网格绘制而成。需要绘制的网格越多&#xff0c;性能消耗越大。 将Unity编译器调整到Wireframe模式&#xff0c;可以查看当前场景元素的网格组成…

冯诺依曼体系结构及操作系统的认识

目录1.前言2.冯诺依曼体系结构2.1.结构构成2.2.硬件分析2.2.1存储器的作用2.2.2CPU2.3.实际分析3.操作系统3.1.是什么3.2.为什么3.3.操作系统怎么进行管理3.3.1管理的本质3.3.2管理的方法3.4.系统调用3.5.最终体系1.前言 为什么现代计算机都被称为冯诺依曼结构计算机&#xff1…

C#运算符执行顺序对照表

C#运算符执行顺序对照表&#xff1a;在线查看C#运算符执行优先级别 窍门&#xff1a; CtrlF 快速查找 C#运算符优先级&#xff0c;是描述在计算机计算表达式时执行运算的先后顺序。 先执行具有较高优先级的运算&#xff0c;然后执行较低优先级的运算。 例如&#xff0c;我们常说…

k8s整合kong

k8s整合kong Kong网关的发展历程 ​ Kong网关起源于2007年&#xff0c;由Augusto、Marco、Michele三人在意大利的一个小车库中开发&#xff0c;当时命名为Mashup平台。在随后7年的时间里&#xff0c;Mashup平台逐渐占据API网关市场的主导地位。2017年10月&#xff0c;Mashup平台…

引擎入门 | Unity UI简介–第2部分(2)

本期我们继续为大家进行Unity UI简介&#xff08;第二部分&#xff09;的后续教程 本篇内容 3.动画按钮滑入 文章末尾可免费获取教程源代码 本篇本篇Unity UI简介&#xff08;第二部分&#xff09;篇幅较长&#xff0c;分为八篇&#xff0c;本篇为第二篇。 3.动画按钮滑入…

如何安装Torch7在Ubuntu20.04 ( CUDA10.1 和 CUDNN7.6.5)

先展示安装成果&#xff0c;东西没啥&#xff0c;就是很麻烦&#xff0c;特别是安装torch7库&#xff0c;下载不下来&#xff0c;断断续续的。 1. 首先&#xff0c;安装CUDA 10.1CUDNN7.6.5。切记&#xff1a;cudnn不要装cudnn8.X&#xff0c;好像跟torch不是很匹配。另外就是g…

省市县:数十万数据集PM2.5面板数据柵格数据(1998-2019)

1、数据来源&#xff1a; https://sites.wustl.edu/acag/datasets/surface-pm2-5/ 2、时间跨度&#xff1a;1998-2019 3、区域范围&#xff1a;中国各省、各城市、各区县 4、指标说明&#xff1a; 根据Global/Regional Estimates (V5.GL.02)&#xff0c;计算出国内PM2.5数…

车载电子专用DC-DC方案PL5501

PL5501是一个同步4开关Buck-Boost能够调节输出电压的控制器高于或低于输入电压。PL5501运作输入电压范围从3.6 V到32 V (36 V Maximum)以支持各种应用程序。PL5501 buck采用恒ON时间控制&#xff0c;上位机采用升压和升压两种操作方式负荷和线路调节。开关频率可以设置为150kHz…

在字符串两侧填充指定字符ljust()与rjust()方法

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 在字符串两侧填充指定字符 ljust()与rjust()方法 选择题 以下python代码输出正确的一项是? str"abc" print("【显示】str原始数据&#xff1a;") print("【执行】…

Spark框架

Spark计算速度 Hadoop的多个job之间的数据通信是基于磁盘的 Hadoop偏存储&#xff0c;其MR框架&#xff0c;是基于磁盘的计算&#xff0c;多个MR作业之间的数据交互&#xff0c;依赖于磁盘的IO&#xff0c;这会影响计算性能。 job1&#xff1a;读取磁盘文件&#xff0c;MR计算…