网站首页 > 博客文章 正文
最近赶上项目上线,需要部署预发布环境,把生产环境数据同步到预发布环境。生产环境数据有将近百万级,需要去写代码同步的话压力也不小,然后群里小伙伴给我推荐了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
今天就介绍到这里了,小伙伴们有任何问题欢迎随时留言讨论!
- 上一篇: 淘宝电商该如何进行数据分析
- 下一篇: LINUX 国内源以及镜像源更换方法
猜你喜欢
- 2025-03-06 Github 2025-03-02 php开源项目日报 Top10
- 2025-03-06 阿里开源MySQL中间件Canal快速入门
- 2025-03-06 Go 模块镜像三年多来一直向开发者提供带后门程序
- 2025-03-06 Kali不限速镜像下载地址
- 2025-03-06 安装通义万相2.1体验AI生成高质量视频
- 2025-03-06 2个良心的“Windows资源站”,镜像开源纯净!真是相见恨晚
- 2025-03-06 魔哈:Grok国内镜像
- 2025-03-06 开源磁盘镜像和恢复工具Rescuezilla 2.5.1发布!
- 2025-03-06 阿里开源组件Nacos实战操作之安装部署完整版
- 2025-03-06 不用安装docker也能构建docker镜像
你 发表评论:
欢迎- 05-21上传图片到cloudflare r2
- 05-21wordpress通过代码实现百度主动推送和实时推送
- 05-21百度实时推送代码解决方案
- 05-21Elasticsearch的路由routing的应用技巧
- 05-21技巧:PHP版本怎样隐藏在Linux服务器
- 05-21Python 进阶-day24: API 开发
- 05-21kubectl常用删除命令
- 05-21HTTP 的常见头字段有哪些?说说它们的作用
- 376℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 371℃用AI Agent治理微服务的复杂性问题|QCon
- 364℃初次使用IntelliJ IDEA新建Maven项目
- 356℃Maven技术方案最全手册(mavena)
- 353℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 351℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 350℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 346℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)