基于canal实现MySQL作为主库的ES与MySQL数据同步

1.对mysql的配置

需要一个mysql作为主库,它需要开启binlog,开启binlog需要修改配置文件my.cnf

mysql安装就不多说了,我的mysql是5.7 ,装在docker中

我的mysql配置文件在容器中/etc/my.cnf

开启binlog需要修改my.cnf

即添加

log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=111 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复

查看binlog是否开启成功 

        show variables like '%log_bin%';

ON是成功,OFF是没成功

创建了个mysql的canal用户比用root安全点,也可直接用root

CREATE USER canal IDENTIFIED BY 'canal';  
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;

2. canal的配置

        canal-server 是提供服务的

      // docker pull canal/canal-server:v1.1.5

# 下载脚本
wget https://raw.githubusercontent.com/alibaba/canal/master/docker/run.sh 

# 构建一个destination name为test的队列
sh run.sh -e canal.auto.scan=false \
          -e canal.destinations=test \
          -e canal.instance.master.address=127.0.0.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  \

        canal-admin是为canal-server提供管理web界面的

        //docker pull canal/canal-admin:v1.1.5

# 下载脚本
wget https://raw.githubusercontent.com/alibaba/canal/master/docker/run_admin.sh 

# 以8089端口启动canal-admin
//sh  run_admin.sh -e server.port=8089 \
 //        -e canal.adminUser=admin \
  //       -e canal.adminPasswd=admin

# 指定外部的mysql作为admin的库 我是用这个命令启动的需要在将sql导入自己的数据库

sql位置:canal/admin/admin-web/src/main/resources/canal_manager.sql at master · alibaba/canal · GitHub
sh  run_admin.sh -e server.port=8089 \
         -e spring.datasource.address=xxx \
         -e spring.datasource.database=xx \
         -e spring.datasource.username=xx 
         -e spring.datasource.password=xx

3.sprintboot的配置

        pom.xml主要添加了

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

之后就缺啥自动导入了

application.yml的配置

canal:server: 192.168.96.63:11111destination: testuser-name: canalpassword: canal

创建一个 Handler 实现 EntryHandler  当然实体类得建,mysql中建表

import cn.powertime.ps.entity.Document;
import cn.powertime.ps.service.IDocumentService;
import org.springframework.stereotype.Component;
import top.javatool.canal.client.annotation.CanalTable;
import top.javatool.canal.client.handler.EntryHandler;import javax.annotation.Resource;@CanalTable("document")
@Component
public class DocumentHandler implements EntryHandler<Document> {@Resourceprivate IDocumentService documentService;/*** mysql中数据有新增时自动执行* @param document 新增的数据*/public void insert(Document document) {try {documentService.addData(document);} catch (Exception e) {e.printStackTrace();}}/*** mysql中数据有修改时自动执行* @param before 修改前的数据* @param after 修改后的数据*/public void update(Document before, Document after) {documentService.updateData(after);}/*** mysql中数据有删除时自动执行* @param document 要删除的数据*/public void delete(Document document) {documentService.deleteData(document);}
}

在以上方法中可以监听到mysql的增删改,同时操作一下ES,就玩事了。

做完了,简单记录下,写的有点糙。。。

可以参照

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

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

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

相关文章

「38」LUT在直播间调色的高级应用……

「38」LUT滤镜 对人或物进行精进调色 OBS软件中的LUT&#xff08;Look Up Table&#xff09;滤镜&#xff0c;可用于调整视频、图像的色彩和对比度等效果&#xff0c;以实现专业级的颜色调整需求。 左图为原图 右图为LUT 先对比上面的两张图&#xff0c;用了滤镜效果的变化…

内容创作策略:打造影响力强大的技术博客

CSDN的朋友你们好&#xff0c;我是未来&#xff0c;今天给大家带来专栏【程序员博主教程&#xff08;完全指南&#xff09;】的第6篇文章——“博客内容创作策略”。本文为技术博主提供了一个精简的内容创作策略指南&#xff0c;涵盖了设定目标、分析竞争、关键词研究、内容规划…

Embedding:跨越离散与连续边界——离散数据的连续向量表示及其在深度学习与自然语言处理中的关键角色

Embedding嵌入技术是一种在深度学习、自然语言处理&#xff08;NLP&#xff09;、计算机视觉等领域广泛应用的技术&#xff0c;它主要用于将高维、复杂且离散的原始数据&#xff08;如文本中的词汇、图像中的像素等&#xff09;映射到一个低维、连续且稠密的向量空间中。这些低…

pdf、docx、markdown、txt提取文档内容,可以应用于rag文档解析

返回的是文档解析分段内容组成的列表&#xff0c;分段内容默认chunk_size: int 250, chunk_overlap: int 50&#xff0c;250字分段&#xff0c;50分段处保留后面一段的前50字拼接即窗口包含下下一段前面50个字划分 from typing import Union, Listimport jieba import recla…

ES学习笔记01

1.ES安装 下载地址&#xff1a; es官网下载 这里使用的是7.8.0的版本信息 下载完成后解压即可完成安装 2.启动运行 点击bin目录下的elasticsearch.bat文件即可启动 在浏览器中输入localhost:9200显示如下&#xff1a; 在路径中加入对应访问后缀即可访问对应信息 如&#…

四大引用类型——强引用、软引用、弱引用、虚引用

强引用 垃圾回收器绝对不会回收它&#xff0c;即使内存不足也会报错OOM也不会回收它。 软引用 只有当内存不足时垃圾回收器才会回收它。 弱引用 当垃圾回收期扫描到弱引用&#xff0c;不管内存空间不足与否&#xff0c;只要一旦发现就会回收。 虚引用 相当于没有引用。虚…

微自传系列---AppleSteve Jobs

1 三个苹果的故事 在求学的过程中&#xff0c;笔者听到过关于 “三个苹果” 的故事。三个苹果&#xff0c;分别指的是亚当和夏娃的苹果、牛顿的苹果以及乔布斯的苹果&#xff0c;这三个苹果在各自的故事中都有着深远的寓意和影响。 这三个苹果&#xff0c;分别代表了人类历史的…

中药提取物备案数据库<5000+中药提取物>

NMPA中药提取物备案数据库的建立是确保中药提取物质量安全、规范生产行为、加强监管、保障公众用药安全、促进产业发展和国际化的重要措施。 通过查询中药提取物备案信息我们能了解到中药提取物的实用备案号、药品通用名称、药品生产企业、批准文号、备案日期、备案状态、中药…

Mybatis学习笔记:多表关联,懒加载,缓存

人生呐…… 文章目录 一、多表关联查询1.1 定制类1.2 成员属性&#xff08;利用association标签和collection标签 二、懒加载2.1 配置2.2 实现 三、缓存3.1 一级缓存&#xff08;session中的缓存3.2 二级缓存&#xff08;Mapper中的缓存 一、多表关联查询 确定主表确定关联表确…

算法设计与分析(实验5)-----图论—桥问题

一&#xff0e;实验目的 掌握图的连通性。掌握并查集的基本原理和应用。 二&#xff0e;实验步骤与结果 1.定义 &#xff08;1&#xff09;图的相关定义 图&#xff1a;由顶点的有穷非空集合和顶点之间的边的集合组成。 连通图&#xff1a;在无向图G中&#xff0c;若对于…

Springboot 集成Rabbitmq之延时队列

1.首先确保已经引入了Spring AMQP和RabbitMQ的相关依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> 2. 创建一个普通队列并设置TTL&#x…

TPCH工具下载及用法

目录 1. 什么是TPCH&#xff1f; 2. 下载TPCH基准工具 3. 编译TPCH基准工具 3.1. 修改头文件 3.2. 修改编译文件 3.3. 执行编译 4. qgen 的用法 4.1. 异常处理 4.2 常见用法 5. dbgen 的用法 5.1. 语法说明 5.2. 常见用法 6. 总结 1. 什么是TPCH&#xff1f; TPC-…

【rabbitmq】rabbitmq与erlang的版本对应关系

rabbitmq与erlang的版本对应关系 https://www.rabbitmq.com/docs/which-erlang

蓝桥杯练习系统(算法训练)ALGO-957 P0703反置数

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 一个整数的反置数指的是把该整数的每一位数字的顺序颠倒过来所得到的另一个整数。如果一个整数的末尾是以0结尾&#xff0c;那么在它的…

网络基础知识入门

目录 一、局域网与广域网 1、局域网 2、广域网 二、协议 1、概念 2、协议的理解 3、协议的分层 1、分层 2、OSI七层模型 三、网络传输基本流程 1、报头 2、局域网通信原理 3、跨网络传输流程 四、IP地址和MAC地址 1、IP地址 2、MAC地址 3、两者的区别 一、局域…

三种算法实例(二分查找算法、插入排序算法、贪心算法)

当我们听到“算法”这个词时&#xff0c;很自然地会想到数学。然而实际上&#xff0c;许多算法并不涉及复杂数学&#xff0c;而是更多地依赖基本逻辑&#xff0c;这些逻辑在我们的日常生活中处处可见。 在正式探讨算法之前&#xff0c;有一个有趣的事实值得分享&#xff1a;你…

面试题:React的真实DOM和虚拟DOM的区别

真实DOM&#xff0c;就是文档对象类型&#xff0c;在页面上渲染的每一个节点都是一个真实DOM结构。 虚拟DOM&#xff0c;就是一个描述描述DOM结构的对象。 在创建虚拟DOM的目的就是为了更好将虚拟节点渲染到页面上&#xff0c;虚拟DOM对象的节点与真实DOM的属性是一一对应的。…

【云开发笔记NO.22】运用云原生产品打造技术中台

一、云原生产品与技术中台的结合点 云原生产品以其容器化、微服务化、自动化等特性&#xff0c;为技术中台的建设提供了强大的技术支持。容器化技术使得应用可以更容易地进行部署和管理&#xff0c;提高了应用的可移植性和弹性。微服务架构则让应用更加模块化&#xff0c;便于…

石器时代_单机版_1.0到9.0全部版本集_内附教程

一. 版本介绍图 二. 运行环境 pc单机&#xff0c;可在所有windows系统畅玩&#xff0c;内附安装教程。 三. 源码获取 https://githubs.xyz/y27.html