网站首页 > 教程文章 正文
最近赶上项目上线,需要部署预发布环境,把生产环境数据同步到预发布环境。生产环境数据有将近百万级,需要去写代码同步的话压力也不小,然后群里小伙伴给我推荐了Canal,他们已经在业务系统里面使用了,性能杠杠的。废话不多少,分享一下我的使用经过。
介绍
Canal是java实现的开源项目,主要用于Mysql数据库增量日志分析以及数据订阅和消费。对原有的业务逻辑是无侵入的。Canal通过模拟slave模式,监听binlog日志获取数据,binglog需要设置成row,能够监听新增,修改,删除数据。
支持的MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x。
mysql主从复制原理:1、master将操作日志下入binlog 2、slave将binlog日志写入自己的relay_log 3、slave把relay_log中的日志写入自己的数据。
Canal分为client和server端。服务端负责解析MySQL的binlog日志,传递增量数据给客户端或者消息中间件。客户端负责解析服务端传过来的数据,然后定制自己的业务处理。
Docker安装
Dockerfile文件:https://github.com/alibaba/canal/blob/master/docker/Dockerfile
docker 安装预计占用900M左右空间。
#拉取最新镜像
docker pull canal/canal-server:latest
# 下载脚本
wget https://raw.githubusercontent.com/alibaba/canal/master/docker/run.sh
# 构建一个destination name为test的队列
sh run.sh -e canal.auto.scan=false \
-e canal.destinations=test \
-e canal.instance.master.address=127.0.0.1:3306 \
-e canal.instance.dbUsername=canal \
-e canal.instance.dbPassword=canal \
-e canal.instance.connectionCharset=UTF-8 \
-e canal.instance.tsdb.enable=true \
-e canal.instance.gtidon=false \
出现successful就是server启动成功,然后可以启动client进行binlog订阅了。
多语言
Canal 的server 模式使用protobuf 3.的交互协议,所以 client 端可采用不同语言实现不同的消费订阅。
比如java、c#、python、go、php、rust、nodejs
其他
Canal还提供了Canal Admin Guide,能够进行整体配置管理、节点运维等功能,方便小伙伴们操作。
以上都是对Canal的一些简单尝试,Canal还有更多的功能这里就不多做介绍了,感兴趣的小伙伴们可以去github上查看文档操作。
github地址:https://github.com/alibaba/canal
今天就介绍到这里了,小伙伴们有任何问题欢迎随时留言讨论![作揖]
猜你喜欢
- 2024-12-06 开源装机工具Ventoy 1.0.90发布:现支持超过1100种ISO镜像
- 2024-12-06 k8s 之镜像仓库
- 2024-12-06 魔哈:Grok国内镜像
- 2024-12-06 35K star!生产环境的Java诊断工具,阿里开源神器
- 2024-12-06 4月8日收集更新:可用谷歌(google)镜像站点代理网站
- 2024-12-06 Ollama大型语言模型开源框架,搭建开源模型阿里通义千问Qwen2
- 2024-12-06 OpenWrt官方软件源太慢?更换源并测试国内镜像哪家好
- 2024-12-06 开源磁盘镜像和恢复工具Rescuezilla 2.5.1发布!
- 2024-12-06 2个良心的“Windows资源站”,镜像开源纯净!真是相见恨晚
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- md5 sha1 (32)
- mybatis plus page (35)
- semaphore 使用详解 (32)
- update from 语句 (32)
- vue @scroll (38)
- 堆栈区别 (33)
- 在线子域名爆破 (32)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)