栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

canal搭建+案例教程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 模拟 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:地址

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1039187.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号