当前位置: 首页 > news >正文

canal数据同步工具介绍与应用

canal服务

    • canal介绍
    • canal版本与环境
    • canal 服务集
    • canal应用
      • 场景:
    • canal常见问题
      • xml配置问题
      • 连接认证问题
      • jar版本问题
      • 连接问题

canal介绍

‌1、Canal是‌阿里巴巴开源的‌MySQL增量数据订阅和消费工具,通过模拟MySQL的‌slave与‌master交互,捕获‌binary log事件。
2、Canal的实现基于MySQL的主从复制原理,通过模拟slave的交互协议,向master发送dump请求,master收到请求后开始推送binary log给slave(实际上是Canal),Canal解析这些日志事件并将其转换为JSON格式的数据,然后发送到指定的存储目的地,如MySQL、Kafka、Elastic Search等。‌
3、Canal支持‌HA(高可用),其实现机制依赖‌Zookeeper来实现。
4、Canal可以适应不同的网络环境,包括云环境和本地环境,支持多种网络模型如虚拟局域网(VLAN)、‌VXLAN、Overlay等,并且可以与各种网络设备和云服务提供商进行集成。

canal版本与环境

单机版:适用于开发测试环境或小型生产环境。
配置简单,易于部署和管理。

HA版本
适合生产环境,特别是对数据一致性和系统稳定性有高要求的场景。
可以配置多个 Canal 实例,实现故障转移和负载均衡。
需要更复杂的配置和管理,以确保高可用性

Canal 版本与 JDK 版本的兼容性
canal安装包
canalv1.1.5版本以上就不支持jdk1.8,需要升级到jdk11

canal 服务集

canal.adapter

Canal Adapter 是 Canal 项目的一个重要组成部分,它负责将 Canal Server 采集的 MySQL binlog 数据转换成特定格式,并发送到不同的目标系统。
canal.admin
Canal Admin 是 Canal 项目的一个管理工具,它提供了一个 Web 界面,用于监控和管理 Canal 的各个组件。

canal.deployer

Canal Deployer 是 Canal 项目中的一个模块,它主要用于部署和管理 Canal Server。通过 Canal Deployer,用户可以方便地启动、停止 Canal Server,并配置相关的参数。

canal.example

Canal Example 是 Canal 项目中的一个示例目录,它包含了 Canal 的基本使用案例和配置示例。

canal应用

场景:

1、增量同步
默认是增量方式
直接查看deployer服务下的instance.properties文件

2、全量同步
修改deployer服务下的instance.properties文件
binlog文件:
canal.instance.master.journal.name=binlog文件全名称
canal.instance.master.position=0
canal.instance.master.timestamp=10位时间戳
删除服务端的meta.dat文件:这个文件记录 canal 已经消费的位置等信息

3、中间件集成同步
修改instance.properties文件
kafka
部署 Zookeeper 和 Kafka
canal.properties配置文件:
####tcp, kafka, rocketMQ, rabbitMQ
canal.serverMode = kafka
##################################################
######### Kafka #############
##################################################
kafka.bootstrap.servers = 127.0.0.1:9092 多个逗号隔开
kafka.acks = all
kafka.compression.type = none
kafka.batch.size = 16384
kafka.linger.ms = 1
kafka.max.request.size = 1048576
kafka.buffer.memory = 33554432
kafka.max.in.flight.requests.per.connection = 1
kafka.retries = 0
kafka.kerberos.enable = false
kafka.kerberos.krb5.file = “…/conf/kerberos/krb5.conf”
kafka.kerberos.jaas.file = “…/conf/kerberos/jaas.conf”
rocketmq
安装 RocketMQ
canal.properties配置文件:
tcp, kafka, rocketMQ, rabbitMQ
canal.serverMode = rocketMQ
##################################################
######### RocketMQ #############
##################################################
rocketmq.producer.group = test
rocketmq.enable.message.trace = false
rocketmq.customized.trace.topic =
rocketmq.namespace =
rocketmq.namesrv.addr = 127.0.0.1:9876
rocketmq.retry.times.when.send.failed = 0
rocketmq.vip.channel.enabled = false
rocketmq.tag =
修改instance.properties文件
#mq config
canal.mq.topic=canal_topic

canal常见问题

xml配置问题

Error creating bean with name ‘metaHistoryDAO’ defined in class path
resource [spring/tsdb/h2-tsdb.xml] 去掉:canal.properties配置文件中的h2配置
在这里插入图片描述

连接认证问题

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not allowed
修改 MySQL 数据库连接字符串 URL,在末尾追加 “?allowPublicKeyRetrieval=true” 参数

jar版本问题

Mysql连接jar版本 mysql-connector-java-5.1.48.jar
切换成mysql-connector-java-8.0.28.jar

连接问题

Communications link failure。The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
解决:
数据库连接地址?allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf8&useSSL=false&tinyInt1isBit=true&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true

http://www.lryc.cn/news/427099.html

相关文章:

  • ubuntu18.04 设置静态地址
  • jira敏捷开发管理工具视频教程Confluence工作流协同开发(2024)
  • 【网络】TCP回显服务器和客户端的构造,以及相关bug解决方法
  • Python知识点:如何使用Boto3进行AWS服务管理
  • Java - 正则表达式
  • Vue一款流行的JavaScript前端框架
  • GPT-SoVITS
  • linux高级编程——文件IO(常用函数大全)
  • matplotlib画图
  • Jetpack 各种框架简介
  • 海康VisionMaster使用学习笔记5-开机自启动
  • 驾驭数据之序:SQL序列的奥秘与实现
  • 【LeetCode】148. 排序链表
  • 阿里云-java调用短信服务,第三方接口的开启(傻瓜式教程)
  • 以node / link文件表征的道路网络-----基于南京公路公开数据做路径规划(下)------dijkstra算法的一些简单花样
  • 计算机操作员中级理论知识试题
  • Redis主从同步配置
  • 输出重定向
  • ubuntu20.04挂载机械硬盘
  • Python轻量级 NoSQL 数据库之tinydb使用详解
  • 【数据结构】二叉树(二)遍历
  • NGINX 常用内置变量
  • Windows采用VS2019实现Open3D的C++应用
  • 冒泡排序、选择排序、插入排序,三种简单排序算法的区别?
  • Docker 日志管理
  • JavaScript初级——基础知识
  • 0817(持久层框架:JDBC,MyBatis)
  • 在亚马逊云科技上安全、合规地创建AI大模型训练基础设施并开发AI应用服务
  • 无人机模拟训练室技术详解
  • 【Spring框架】