canal搭建+案例教程

canal搭建+案例教程

标签(空格分隔): canal


  1. canal产生的背景
  2. 什么是canal?
  3. canal-server是什么,有什么作用?
  4. mysql数据库开启binlog功能
  5. docker搭建canal-server 服务端
  6. canal-instance 实列开发

1: canal产生的背景

早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求。不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅&消费的业务,从此开启了一段新纪元。ps.目前内部使用的同步,已经支持mysql5.x和oracle部分版本的日志解析.

基于日志增量订阅&消费支持的业务:

  1. 数据库镜像
  2. 数据库实时备份
  3. 多级索引 (卖家和买家各自分库索引)
  4. search build
  5. 业务cache刷新
  6. 价格变化等重要业务消息

2:什么是canal?

canal译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。
从这句话理解到了什么?
基于MySQL,并且通过MySQL日志进行的增量解析,这也就意味着对原有的业务代码完全是无侵入性的。
工作原理:解析MySQL的binlog日志,提供增量数据。
基于日志增量订阅和消费的业务包括

canal数据同步原理图
工作原理

  • canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送 dump
  • 协议 MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal ) canal
  • 解析 binary log 对象(原始为 byte 流)

3:canal-server是什么,有什么作用?

负责解析MySQL的binlog日志,传递增量数据给客户端或者消息中间件

4. mysql数据库开启binlog功能

  1. 对于自建 MySQL , 需要先开启 Binlog 写入功能,配置 binlog-format 为 ROW 模式,my.cnf
    中配置如下

log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复
注意:针对阿里云 RDS for MySQL , 默认打开了 binlog , 并且账号默认具有 binlog dump 权限 , 不需要任何权限或者 binlog 设置,可以直接跳过这一步

  1. 授权 canal 链接 MySQL 账号具有作为 MySQL slave 的权限, 如果已有账户可直接 grant

CREATE USER canal IDENTIFIED BY ‘canal’;
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘canal’@‘%’;
– GRANT ALL PRIVILEGES ON . TO ‘canal’@‘%’ ;
FLUSH PRIVILEGES;

5. docker搭建canal-server 服务端

1:获取最新版本镜像

docker pull canal/canal-server:latest

2:启用零时容器

docker run --name canal-server -d canal/canal-server

3:进入到外面需要挂载的目录/data/canal-1.1.5/canal/conf,拷贝配置文件到容器外挂载

docker cp canal-server:/home/admin/canal-server/conf/canal.properties./
docker cp canal-server:/home/admin/canal-server/conf/test/instance.properties ./

4:docker创建canal-server容器

docker run --name canal-server -p 11111:11111
-v /data/canal-1.1.5/canal/conf/instance.properties:/home/admin/canal-server/conf/example/instance.properties
-v /data/canal-1.1.5/canal/conf/canal.properties:/home/admin/canal-server/conf/canal.properties
-v /data/canal-1.1.5/canal/logs:/home/admin/canal-server/logs
-d canal/canal-server

5:进入容器内部查看启动日志

docker exec -it canal-server /bin/bash

5. canal-instance 实列开发

具体代码请下载源码链接查看
canal-instance gitee:地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值