(1)Canal在linux上搭建集群

本文介绍了Canal在Linux上的集群搭建过程,包括MySQL主备复制原理、Canal的工作原理,以及详细步骤如开启MySQL Binlog行记录模式、部署Zookeeper、Java环境和Canal.deployer集群。Canal主要用于数据库增量数据同步,常用于数据库镜像、实时备份、索引维护和业务缓存刷新等场景。
摘要由CSDN通过智能技术生成

1.简介

一般业务开发都是以关系型Mysql数据库为主,但是很多业务场景可能需要我们把Mysql数据库的数据同步到ES、Redis、Hbase、Mysql、Sqlserver等组件当中。而阿里开源的框架Canal就是做这方面的功能,它可以把数据库(暂时只支持MySQL和Oracle部分版本)日志解析获取增量变更同步到其他存储应用去。

2.什么是Canal?

官网https://github.com/alibaba/canal介绍,canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于MySQL数据库增量日志解析,提供增量数据订阅和消费。
从上述介绍我们可以简单认为Canal就是一个简单的增量数据同步工具。

2.1MySQL主备复制原理

根据官网介绍,mysql主备复制原理如下:

●mysql master(主库)将数据变更(增删改)写入二进制日志(binary log,其中记录叫做二进制日志事件binary log events,可以通过show binlog events进行查看)。
●mysql slave(从库)将master的binary log events 拷贝到它的中继日志(relay log)。
●mysql slave(从库)重放relay log中事件,将数据变更反映它自己的数据。

2.2Canal工作原理

根据官网介绍,canal工作原理如下图所示:

●canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议。
●mysql master收到dump请求,开始推送binary log给slave(即canal )。
●canal解析binary log对象(原始为byte流),再推送到mysql、kafka、elasticsearch等存储应用当中。

3.Canal能做什么?

早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务trigger(触发器)获取增量变更。从2010年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。所以Canal就是在这个场景中诞生的,它主要作用就是解决基于日志增量订阅和消费的业务,例如:
●数据库镜像。
●数据库实时备份。
●索引构建和实时维护(拆分异构索引、倒排索引等)。
●业务缓存刷新。
●带业务逻辑的增量数据处理(例如ElasticSearch、Redis数据同步)。
在我做过的项目中,cancal经常被用到如下场景:
●根据数据库的数据变更实时更新搜索引擎数据,比如我司电商场景下物料数据发生变更(例如后台上传更新物料信息、价格)࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值