Canal使用和安装总结

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: Canal使用和安装总结

载请注明出处:

1.定义

  Canal 组件是一个基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费,支持将增量数据投递到下游消费者(如 Kafka、RocketMQ 等)或者存储(如 Elasticsearch、HBase 等)的组件。

   Canal 感知到MySQL数据变动,然后解析变动数据,将变动数据发送到MQ或者同步到其他数据库,等待进一步业务逻辑处理。

2.工作原理

2.1 mysql 主从复制原理

                       

  • MySQL master 将数据变更写入二进制日志binary log,简称Binlog。
  • MySQL slave 将 master 的 binary log 拷贝到它的中继日志(relay log)
  • MySQL slave 重放 relay log 操作,将变更数据同步到最新。

2.2 mysql binlog日志

  使用场景:

    MySQL 的Binlog可以说 MySQL 最重要的日志,它记录了所有的 DDL 和 DML语句,以事件形式记录。

    MySQL默认情况下是不开启Binlog,因为记录Binlog日志需要消耗时间,官方给出的数据是有1%的性能损耗。

    具体开不开启,开发中需要根据实际情况做取舍。

    一般来说,在下面两场景下会开启Binlog日志:


  • MySQL 主从集群部署时,需要将在 Master 端开启 Binlog,方便将数据同步到Slaves中。
  • 数据恢复了,通过使用 MySQL Binlog 工具来使恢复数据。

  binlog分类:

    MySQL Binlog 的格式有三种,分别是 STATEMENT,MIXED,ROW。在配置文件中可以选择配置 binlog_format= statement|mixed|row

分类 介绍 优点 缺点
STATEMENT 语句级别,记录每一次执行写操作的语句,相对于ROW模式节省了空间,但是可能产生数据不一致如update tt set create_date=now(),由于执行时间不同产生饿得数据就不同 节省空间 可能造成数据不一致
ROW 行级,记录每次操作后每行记录的变化。假如一个update的sql执行结果是1万行statement只存一条,如果是row的话会把这个1万行的结果存这。 持数据的绝对一致性。因为不管sql是什么,引用了什么函数,他只记录执行后的效果 占用较大空间
MIXED 是对statement的升级,如当函数中包含 UUID() 时,包含 AUTO_INCREMENT 字段的表被更新时,执行 INSERT DELAYED 语句时,用 UDF 时,会按照 ROW的方式进行处理 节省空间,同时兼顾了一定的一致性 还有些极个别情况依旧会造成不一致,另外statement和mixed对于需要对binlog的监控的情况都不方便

  综合上面对比,Canal 想做监控分析,选择 row 格式比较合适。

3.Canal工作原理

  • Canal 将自己伪装为 MySQL slave(从库) ,向 MySQL master (主库)发送dump 协议
  • MySQL master(主库) 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
  • Canal 接收并解析 Binlog 日志,得到变更的数据,执行后续逻辑

                                 

4.应用场景:

  1.数据同步:Canal 可以帮助用户进行多种数据同步操作,如实时同步 MySQL 数据到 Elasticsearch、Redis 等数据存储介质中。

    2.数据库实时监控:Canal 可以实时监控 MySQL 的更新操作,对于敏感数据的修改可以及时通知相关人员。

  3.数据分析和挖掘:Canal 可以将 MySQL 增量数据投递到 Kafka 等消息队列中,为数据分析和挖掘提供数据来源。

  4.数据库备份:Canal 可以将 MySQL 主库上的数据增量日志复制到备库上,实现数据库备份。

  5.数据集成:Canal 可以将多个 MySQL 数据库中的数据进行集成,为数据处理提供更加高效可靠的解决方案。

  6.数据库迁移:Canal 可以协助完成 MySQL 数据库的版本升级及数据迁移任务。

5.Canal安装

5.1.下载

  下载地址https://github.com/alibaba/canal/releases

               

  下载 解压安装即可。

5.2配置

  1.修改canal.properties的配置

canal.port = 11111
# tcp, kafka, rocketMQ, rabbitMQ, pulsarMQ
canal.serverMode = tcp
canal.destinations = example

    canal.port:默认端口 11111

    canal.serverMode:服务模式,tcp 表示输入客户端,xxMQ输出到各类消息中间件

    canal.destinations:canal能可以收集多个MySQL数据库数据,每个MySQL数据库都有独立的配置文件控制。具体配置规则: conf/目录下,使用文件夹放置,文件夹名代表一个MySQL实例。canal.destinations用于配置需要监控数据的数据库。如果是多个,使用,隔开

  2.修改MySQL实例配置文件instance.properties

canal.instance.mysql.slaveId=20
# position info
canal.instance.master.address=127.0.0.1:3306
# username/password
canal.instance.dbUsername=root
canal.instance.dbPassword=admin

    canal.instance.mysql.slaveId:使用canal 从阶段id

    canal.instance.master.address:数据库ip端口

    canal.instance.dbUsername:连接mysql账号

    canal.instance.dbPassword:连接mysql密码

  3.启动

                     

 

 

标签: mysql , 监控

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
canal SQL 关系型数据库
Canal报错总结(三)
Canal报错总结(三)
|
canal SQL 关系型数据库
|
canal 关系型数据库 MySQL
Canal服务搭建
Canal服务搭建
1145 1
Canal服务搭建
|
canal 关系型数据库 MySQL
canal 组件介绍(1)
前言     首先,这个文章系列主要是讲canal的,毫无疑问,对吧。那么在开始阅读这个系列之前,我希望真正有兴趣的同学一定要先去阅读canal的官方文档,没有什么比这个更权威了。
2383 0
|
6月前
|
canal SQL 关系型数据库
Canal入门
Canal入门
198 1
|
canal 搜索推荐 关系型数据库
docker环境安装mysql、canal、elasticsearch,基于binlog利用canal实现mysql的数据同步到elasticsearch中(三)
docker环境安装mysql、canal、elasticsearch,基于binlog利用canal实现mysql的数据同步到elasticsearch中
257 0
|
消息中间件 canal NoSQL
Canal+Kafka实现MySQL与Redis数据同步(一)
Canal+Kafka实现MySQL与Redis数据同步
579 0
|
canal druid 关系型数据库
Canal报错总结(二)
Canal报错总结(二)
|
canal SQL Ubuntu
docker环境安装mysql、canal、elasticsearch,基于binlog利用canal实现mysql的数据同步到elasticsearch中(一)
docker环境安装mysql、canal、elasticsearch,基于binlog利用canal实现mysql的数据同步到elasticsearch中
421 1
|
canal SQL 缓存
Canal1.1.6安装部署
Canal1.1.6安装部署
350 0