mac m1 docker本地部署canal 监听mysql的binglog日志

mac m1 docker本地部署canal监听mysql的binglog日志(虚拟机同理)

根据黑马视频部署

1.docker 部署mysql

1.docker拉取mysql 镜像

因为m1是arm架构.需要多加一条信息

正常拉取
docker pull mysql:tagm1拉取 5.7的版本. tag需要自己指定版本
docker pull --platform linux/x86_64 mysql:tag(5.7)

2.数据挂载宿主机

为什么要挂载到宿主机.

​ 1.容器被删除.那么容器内的数据.就全部被删除了.

​ 2.修改数据. 可以直接在宿主机上直接修改.不需要直接进入到容器内部去修改.

1.先再宿主机上建立需要挂载的路径

配置文件
mkdir /Users/lin/dev/docker/vol/mysqlvol/conf数据
mkdir /Users/lin/dev/docker/vol/mysqlvol/data

在这里插入图片描述

2.把修改配置文件放到/Users/lin/dev/docker/vol/mysqlvol/conf

my.cnf

实在不行就自己创建文件.把内容贴进去

[mysqld]
skip-name-resolve
character_set_server=utf8
datadir=/var/lib/mysql
server-id=1000
log-bin=/var/lib/mysql/mysql-bin
binlog-do-db=heima
binlog_format = ROW

编辑配置文件

vi /Users/lin/dev/docker/vol/mysqlvol/conf/my.cnf

新增两条命令

log-bin=/var/lib/mysql/mysql-bin
binlog-do-db=heima

在这里插入图片描述

配置解读:

  • log-bin=/var/lib/mysql/mysql-bin:设置binary log文件的存放地址和文件名,叫做mysql-bin
  • binlog-do-db=heima:指定对哪个database记录binary log events,这里记录heima这个库(监听heima这个库)

3.启动容器

创建一个docker 网络.

#创建一个叫 heima 的网络
docker network create heima

让你创建的mysql容器 ,加入到这个网络

docker network connect heima mysql
docker run -d --name mysql-1 --network heima -p 3309:3306 \
-v /Users/lin/dev/docker/vol/mysqlvol/conf/my.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /Users/lin/dev/docker/vol/mysqlvol/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root mysql:5.7

解读:

启动用

  • docker run -d 后台启动
  • –name mysql-1 取名叫mysql-1 (这个根据自己随意启动.不和其他容器同名就好)
  • –network heima指定用 heima 这个网络 .可以不加
  • -p 3309:3306 端口映射. 宿主机 3309映射到容器内部的3306
  • -v /Users/lin/dev/docker/vol/mysqlvol/conf/my.cnf:/etc/mysql/conf.d/hmy.cnf 配置文件映射,宿主机/Users/lin/dev/docker/vol/mysqlvol/conf/my.cnf 映射容器的/etc/mysql/conf.d/hmy.cnf ,宿主机的根据自己具体路径更变.容器路径不变
  • -v /Users/lin/dev/docker/vol/mysqlvol/data:/var/lib/mysql 和上面不同. data 是存储数据的
  • -e MYSQL_ROOT_PASSWORD=root 账号为root 密码也为root .可以自己设置
  • mysql:5.7 mysql的版本

4.配置cannal 账号

设置canna 账号密码,添加一个仅用于数据同步的账户,出于安全考虑,这里仅提供对heima这个库的操作权限。

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

接下来添加一个仅用于数据同步的账户,出于安全考虑,这里仅提供对heima这个库的操作权限。

docker restart mysql

测试设置是否成功:在mysql控制台,或者Navicat中,输入命令:

show master status;

在这里插入图片描述

2.安装cannal

可参考官方文档部署

1.docker拉取cannal 镜像

#自动拉取最新的版本
docker pull cannal 

2.启动cannal 容器

docker run -p 11111:11111 --name canal \
-e canal.destinations=heima \
-e canal.instance.master.address=mysql-1:3306  \
-e canal.instance.dbUsername=canal  \
-e canal.instance.dbPassword=canal  \
-e canal.instance.connectionCharset=UTF-8 \
-e canal.instance.tsdb.enable=true \
-e canal.instance.gtidon=false  \
-e canal.instance.filter.regex=heima\\..* \
--network heima \
-d canal/canal-server

解读

-e canal.destinations=heima \ 集群名叫heima

-e canal.instance.master.address=mysql-1:3306 \ 因为加入了同一个网桥. 所以ip直接就是加入网桥的容器名.docker network connect heima mysql-1 ->容器的端口3306(不是宿主机的,踩过坑)

-e canal.instance.dbUsername=canal
-e canal.instance.dbPassword=canal \ 之前mysql创建了一个canal的账号密码

-e canal.instance.filter.regex=heima\…* \ 监听heima这个库下面的所有表
–network heima \ 用heima 这个网络.之前创建过1.3

-d canal/canal-server后台启动canal

mysql 数据解析关注的表,Perl正则表达式.
多个正则之间以逗号(,)分隔,转义符需要双斜杠(\)
常见例子:

  1. 所有表:.* or .\…
  2. canal schema下所有表: canal\…*
  3. canal下的以canal打头的表:canal\.canal.*
  4. canal schema下的一张表:canal.test1
  5. 多个规则组合使用然后以逗号隔开:canal\…*,mysql.test1,mysql.test2

3.查看cannal是否正常启动和是否监听mysql正常

1.查看canal是否正常启动

2.查看canal是否正常启动

  1. docker exec -it canal bash
    
  2. 查看canal服务是否启动

    1. cat /home/admin/canal-server/logs/canal/canal.log
      在这里插入图片描述

3.查看canal是否监听mysql

cat /home/admin/canal-server/logs/heima/heima.log 在这里插入图片描述

3.集成到项目中

依赖

        <!--集成canal 起步依赖--><dependency><groupId>top.javatool</groupId><artifactId>canal-spring-boot-starter</artifactId><version>1.2.1-RELEASE</version></dependency>

导入对应建表语句

create table tb_item
(id          bigint auto_increment comment '商品id'primary key,title       varchar(264)            not null comment '商品标题',name        varchar(128) default '' not null comment '商品名称',price       bigint                  not null comment '价格(分)',image       varchar(200)            null comment '商品图片',category    varchar(200)            null comment '类目名称',brand       varchar(100)            null comment '品牌名称',spec        varchar(200)            null comment '规格',status      int(1)       default 1  null comment '商品状态 1-正常,2-下架,3-删除',create_time datetime                null comment '创建时间',update_time datetime                null comment '更新时间'
)comment '商品表' row_format = COMPACT;create index statuson tb_item (status);create index updatedon tb_item (update_time);INSERT INTO heima.tb_item (id, title, name, price, image, category, brand, spec, status, create_time, update_time) VALUES (10001, 'RIMOWA 21寸托运箱拉杆箱 SALSA AIR系列果绿色 820.70.36.4', 'SALSA AIR', 16900, 'https://m.360buyimg.com/mobilecms/s720x720_jfs/t6934/364/1195375010/84676/e9f2c55f/597ece38N0ddcbc77.jpg!q70.jpg.webp', '拉杆箱', 'RIMOWA', '{"颜色": "红色", "尺码": "26寸"}', 1, '2019-05-01 00:00:00', '2019-05-01 00:00:00');
INSERT INTO heima.tb_item (id, title, name, price, image, category, brand, spec, status, create_time, update_time) VALUES (10002, '安佳脱脂牛奶 新西兰进口轻欣脱脂250ml*24整箱装*2', '脱脂牛奶', 68600, 'https://m.360buyimg.com/mobilecms/s720x720_jfs/t25552/261/1180671662/383855/33da8faa/5b8cf792Neda8550c.jpg!q70.jpg.webp', '牛奶', '安佳', '{"数量": 24}', 1, '2019-05-01 00:00:00', '2019-05-01 00:00:00');
INSERT INTO heima.tb_item (id, title, name, price, image, category, brand, spec, status, create_time, update_time) VALUES (10003, '唐狮新品牛仔裤女学生韩版宽松裤子 A款/中牛仔蓝(无绒款) 26', '韩版牛仔裤', 84600, 'https://m.360buyimg.com/mobilecms/s720x720_jfs/t26989/116/124520860/644643/173643ea/5b860864N6bfd95db.jpg!q70.jpg.webp', '牛仔裤', '唐狮', '{"颜色": "蓝色", "尺码": "26"}', 1, '2019-05-01 00:00:00', '2019-05-01 00:00:00');
INSERT INTO heima.tb_item (id, title, name, price, image, category, brand, spec, status, create_time, update_time) VALUES (10004, '森马(senma)休闲鞋女2019春季新款韩版系带板鞋学生百搭平底女鞋 黄色 36', '休闲板鞋', 10400, 'https://m.360buyimg.com/mobilecms/s720x720_jfs/t1/29976/8/2947/65074/5c22dad6Ef54f0505/0b5fe8c5d9bf6c47.jpg!q70.jpg.webp', '休闲鞋', '森马', '{"颜色": "白色", "尺码": "36"}', 1, '2019-05-01 00:00:00', '2019-05-01 00:00:00');

实体类

package com.lin.user.entry;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Transient;
import java.util.Date;@Data
@TableName("tb_item")
public class Item {@TableId(type = IdType.AUTO)@Idprivate Long id;//商品id@Column(name = "name")private String name;//商品名称private String title;//商品标题private Long price;//价格(分)private String image;//商品图片private String category;//分类名称private String brand;//品牌名称private String spec;//规格private Integer status;//商品状态 1-正常,2-下架private Date createTime;//创建时间private Date updateTime;//更新时间@TableField(exist = false)@Transientprivate Integer stock;@TableField(exist = false)@Transientprivate Integer sold;
}

监听类

package com.lin.user.config;import com.alibaba.fastjson.JSON;
import com.lin.user.entry.Item;
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("tb_item")
@Component
public class ItemHandler implements EntryHandler<Item> {@Overridepublic void insert(Item item) {log.info("检查到数据有插入:{}", JSON.toJSONString(item));}@Overridepublic void update(Item before, Item after) {log.info("检查到数据有修改->前:{}", JSON.toJSONString(before));log.info("检查到数据有修改->后:{}", JSON.toJSONString(after));}@Overridepublic void delete(Item item) {log.info("检查到数据有删除:{}", JSON.toJSONString(item));}
}

验证

在数据库中增删改,控制要可以看到记录.

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[linux]docker基础

常见命令 Docker最常见的命令就是操作镜像、容器的命令&#xff0c;详见官方文档: Docker Docs 案例: 查看DockerHub&#xff0c;拉取Nginx镜像&#xff0c;创建并运行Nginx容器 在DockerHub中搜索Nginx镜像 拉取Nginx镜像 查看本地镜像列表 把镜像保持到本地 查看保持命令的…

C++builder中的人工智能(10)神经网络中的Sigmoid函数

在这篇文章中&#xff0c;我们将探讨最受欢迎的激活函数之一——Sigmoid函数。我们将解释什么是Logistic函数&#xff0c;以及它与Sigmoid函数的区别&#xff0c;并展示如何在C应用中使用这些函数。 目录 人工神经网络&#xff08;ANN&#xff09;中的激活函数是什么&#xff…

cursor:如何注销帐号和使用流量

点击右上角的设定图标 点击管理 在弹出的网页点登入 点”continue" 点SETING 了解最新信息请扫码关注&#xff1a;

如何选择适合小团队的项目管理工具?免费与开源软件推荐

目录 一、小团队项目管理工具的重要性 二、热门项目管理工具介绍 &#xff08;一&#xff09;禅道 &#xff08;二&#xff09;Trello &#xff08;三&#xff09;Asana &#xff08;四&#xff09;JIRA 三、免费项目管理软件推荐 &#xff08;一&#xff09;ES 管理器 …

Scaffold-ETH 2:颠覆传统开发的区块链神器,快速构建你的去中心化应用!

目录 引言一、Scaffold-eth框架二、前期准备三、搭建Scaffold-ETH 2&#xff08;一&#xff09;使用npx create-ethlatest进行设置&#xff08;二&#xff09;使用git clone进行设置1、克隆仓库&#xff1a;2、进入到此目录3、安装依赖项 四、配置Scaffold ETH-2的开发环境&…

kafka+zookeeper的搭建

kafka从2.8版本开始&#xff0c;就可以不用配置zookeeper了&#xff0c;但是也可以继续配置。我目前使用的kafka版本是kafka_2.12-3.0.0.tgz&#xff0c;其中前面的2.12表示是使用该版本的scala语言进行编写的&#xff0c;而后面的3.00才是kafka当前的版本。 通过百度网盘分享…

恢复rm -rf删除的数据

注&#xff1a;本文演示的是ext4文件系统格式数据恢复 系统版本&#xff1a;ubuntu16.04 恢复数据目录&#xff1a;数据盘&#xff08;非根&#xff09;目录 恢复工具&#xff1a;extundelete 0.2.4 恢复所有被删除数据 ext4magic 恢复指定目录数据 一、注意事项&#xff1a; …

Elasticsearch(三):Elasticvue使用及DSL执行新增、查询操作

Elasticvue使用及DSL执行CURD 1 概述2 什么是Elasticsearch DSL3 基本结构4 客户端工具介绍4.1 索引介绍4.2 创建简单索引4.3 创建相对完整的索引4.4 插入数据4.4.1 基本插入操作4.4.2 批量插入操作 5 常用的DSL查询类型5.1 match查询5.1.1 match工作原理5.1.2 operator 参数5.…

静态库、动态库、framework、xcframework、use_frameworks!的作用、关联核心SDK工程和测试(主)工程、设备CPU架构

1.1库的概念 库&#xff1a;程序代码的集合&#xff0c;编译好的二进制文件加上头文件供使用&#xff0c;共享程序代码的一种方式。 1.2库的分类 根据开源情况分为&#xff1a;开源库&#xff08;能看到具体实现&#xff09;、闭源库&#xff08;只公开调用的的接口&#xf…

C++【string类,模拟实现string类】

&#x1f31f;个人主页&#xff1a;落叶 &#x1f31f;当前专栏: C专栏 目录 为什么学习string类 C语言中的字符串 标准库中的string类 auto和范围for auto关键字 迭代器 范围for string类的常用接口说明和使用 1. string类对象的常见构造 2.string类对象的容量操作 3…

Me-LLaMA——用于医疗领域的新型开源大规模语言模型

摘要 大规模语言模型的出现是提高病人护理质量和临床操作效率的一个重大突破。大规模语言模型拥有数百亿个参数&#xff0c;通过海量文本数据训练而成&#xff0c;能够生成类似人类的反应并执行复杂的任务。这在改进临床文档、提高诊断准确性和管理病人护理方面显示出巨大的潜…

关于在VS中使用Qt不同版本报错的问题

最开始需要配置的地方 首先看一下我的Qt有关的环境变量&#xff1a; Path环境变量里&#xff1a; 这里就是把对应Qt编译器环境下的bin目录放进来&#xff1a;比如你使用的是msvc2017_64或者MinGW QMAKESPEC环境变量&#xff1a; 这个就选择Qt对应的编译器目录下的\mkspecs\w…

Windows Server 怎么关闭IE增强安全配置(关闭IE弹窗)

首先第一步打开IE浏览器&#xff0c;根据下图所示&#xff0c;访问网页时会弹出警告窗口。 打开【控制面板】图标。查看方式改为小图标&#xff0c;打开【管理工具】 第五步进入【管理工具】页面后&#xff0c;找到并双击【服务器管理器】选项。 第六步在弹出的窗口中&#…

中肿团队提出的“免疫三明治”(放疗+化疗+免疫治疗),成功登上柳叶刀肿瘤|顶刊精析·24-11-08

小罗碎碎念 该研究首次发现在同期放化疗基础上增加特瑞普利单抗&#xff08;PD-1抗体&#xff09;新辅助和辅助治疗显著提高了高危局部晚期鼻咽癌患者生存率。 如果大家看完这篇推送以后&#xff0c;有什么好的医工交叉点子&#xff0c;欢迎和我一起探讨&#xff01;&#xff0…

Golang--协程和管道

1、概念 程序&#xff1a; 是为完成特定任务、用某种语言编写的一组指令的集合,是一段静态的代码。(程序是静态) 进程&#xff1a; 是程序的一次执行过程。正在运行的一个程序&#xff0c;进程作为资源分配的单位&#xff0c;在内存中会为每个进程分配不同的内存区域&#xff0…

动力商城-02 环境搭建

1.父工程必须满足&#xff1a;1.1删除src目录 1.2pom 2.依赖继承 //里面的依赖&#xff0c;后代无条件继承<dependencies></dependencies>//里面的依赖&#xff0c;后代想要继承&#xff0c;得自己声明需要使用&#xff0c;可以不写版本号&#xff0c;自动继承&l…

JavaWeb开发9

ResponseBody 类型&#xff1a;方法注解、类注解 位置&#xff1a;Controller方法上/类上 作用&#xff1a;将方法返回值直接响应&#xff0c;如果返回值类型是实体对象/集合&#xff0c;将会转换为JSON格式响应 说明&#xff1a;RestControllerControllerResponseBody; 统…

夜天之书 #103 开源嘉年华纪实

上周在北京参与了开源社主办的 2024 中国开源年会。其实相比于有点明显班味的“年会”&#xff0c;我的参会体验更像是经历了一场中国开源的年度嘉年华。这也是在会场和其他参会朋友交流时共同的体验&#xff1a;在开源社的 COSCon 活动上&#xff0c;能够最大限度地一次性见到…

06 Oracle性能优化秘籍:AWR、ASH、SQL trace与实时监控的实战指南

文章目录 Oracle性能优化秘籍&#xff1a;AWR、ASH、SQL trace与实时监控的实战指南一、AWR&#xff08;Automatic Workload Repository&#xff09;1.1 理论部分1.2 实践部分1.2.1 使用方式1.2.2 分析方式 二、ASH&#xff08;Active Session History&#xff09;2.1 理论部分…

JS实现,防抖节流 + 闭包

防抖&#xff08;Debounce&#xff09; 防抖是指短时间内大量触发同一事件&#xff0c;只会在最后一次事件完成后延迟执行一次函数。 防抖的典型应用场景是输入框的搜索建议功能&#xff0c;用户输入时不需要每次输入都去查询&#xff0c;而是在用户停止输入一段时间后才进行…