java 数据同步框架_阿里Canal框架(数据同步中间件)初步实践-Java知音

阿里Canal是一款用于数据库增量数据同步的中间件,通过模拟MySQL slave与master交互,捕获并解析binary log,将增量数据发送到目标存储。本文介绍了Canal的基本概念、应用场景、搭建步骤以及Java客户端的使用,展示了数据同步的实时性和无侵入性。
摘要由CSDN通过智能技术生成

思维导图

67c6cabb779f2734788f921abfe403a7.png

本文章已收录到个人博客网站(我爱B站):me.lovebilibili.com

前言

我们都知道一个系统最重要的是数据,数据是保存在数据库里。但是很多时候不单止要保存在数据库中,还要同步保存到Elastic Search、HBase、Redis等等。

这时我注意到阿里开源的框架Canal,他可以很方便地同步数据库的增量数据到其他的存储应用。所以在这里总结一下,分享给各位读者参考~

一、什么是canal

我们先看官网的介绍

canal,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。

这句介绍有几个关键字:增量日志,增量数据订阅和消费。

这里我们可以简单地把canal理解为一个用来同步增量数据的一个工具。

接下来我们看一张官网提供的示意图:

99dc505980693fab03a0bd5d7acad156.png

canal的工作原理就是把自己伪装成MySQL slave,模拟MySQL slave的交互协议向MySQL Mater发送 dump协议,MySQL mater收到canal发送过来的dump请求,开始推送binary log给canal,然后canal解析binary log,再发送到存储目的地,比如MySQL,Kafka,Elastic Search等等。

二、canal能做什么

与其问canal能做什么,不如说数据同步有什么作用。

但是canal的数据同步不是全量的,而是增量。基于binary log增量订阅和消费,canal可以做:

数据库镜像

数据库实时备份

索引构建和实时维护

业务cache(缓存)刷新

带业务逻辑的增量数据处理

三、如何搭建canal

3.1 首先有一个MySQL服务器

当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x

我的Linux服务器安装的MySQL服务器是5.7版本。

MySQL的安装这里就不演示了,比较简单,网上也有很多教程。

然后在MySQL中需要创建一个用户,并授权:

-- 使用命令登录:mysql -u root -p

-- 创建用户 用户名:canal 密码:Canal@123456

create user 'canal'@'%' identified by 'Canal@123456';

-- 授权 *.*表示所有库

grant SELECT, REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'canal'@'%' identified by 'Canal@123456';

下一步在MySQL配置文件my.cnf设置如下信息:

[mysqld]

# 打开binlog

log-bin=mysql-bin

# 选择ROW(行)模式

binlog-format=ROW

# 配置MySQL replaction需要定义,不要和canal的slaveId重复

server_id=1

改了配置文件之后,重启MySQL,使用命令查看是否打开binlog模式:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值