Canal使用小结

摘要:
在Canal使用摘要之前,该公司需要MySQL数据同步mongo,它可以通过多种方式实现,例如硬编码、发送消息等。该公司选择了Canal中间件。最近,我们有时间研究它的用法。它可以用于需要MySQL数据更改监控的所有应用场景```CanalConnectorconnector=CanalConnectors.newSingleConnector;设置canalserver的ip和端口以及目标参数。目标对应于canalserver的实例,默认情况下为示例。它表示一个完整的侦听实例。如果有多个客户端连接到示例实例,那么只有一个客户端可以获得mysql的数据更改通知。
Canal使用小结

之前公司存在mysql数据同步mongo的需求,可以有多种实现方式,比如硬编码,发送消息等。公司选择的是Canal中间件,最近有空来研究下他的使用方式,对于mysql数据变更监听有需求的应用场景都可以使用它。

参考:https://yq.aliyun.com/articles/14570

  1. Canal介绍

    基于mysql数据库binlog的增量订阅&消费

    canal源码地址:https://github.com/alibaba/canal

  2. 下载安装server

    先去https://github.com/alibaba/canal/releases下载最新版本的canal.deployer,解压后配置conf/example/instance.properties文件为自己的配置主要为数据库的ip端口和连接的用户和密码。这里创建一个repication权限的用户。

    CREATE USER canal IDENTIFIED BY 'canal';    
    

GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON . TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON . TO 'canal'@'%' ;
FLUSH PRIVILEGES;


3. 	启动canal server

 执行bin/startup.sh,查看日志logs/canal/canal.log是否成功。

4. 启动canal client

 这里使用上面源码里的SimpleCanalClientTest测试类(直连方式)。
 
 ```
 CanalConnector connector = CanalConnectors.newSingleConnector(new InetSocketAddress(ip, 11111),
         destination,
         "",
         "");
设置canal server的ip和port,还有一个destination参数。
destination对应的是canal server的instance,默认是example,它代表一个完整的监听实例,这里如果有多个连接example实例的client,则只有一个client能获取mysql的数据变更通知。所以要想不同的应用都获取变更通知,则需要连接不同的instance,再此我们可以在canal server复制一个conf/example文件夹,并重命名为example1即可。
  1. 测试代码

    我自己这边fork了代码,地址:https://github.com/yaojf/canal,并且新增了同步redis的测试类,参考自http://blog.csdn.net/stubborn_cow/article/details/50371405,运行ClientSample测试类即可。

免责声明:文章转载自《Canal使用小结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux上安装ZooKeeper并设置开机启动(CentOS7+ZooKeeper3.4.10)“display:block-inline形式的Span或Div中添加文字后,导致Span或Div排版掉落、错位”的原因及解决方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

10 TCP限流技术

  TCP限流是因为让接收方充分接受完消息,保证数据安全,不会丢失 一、窗口机制介绍 发送端和接收端都拥有一个窗口,当发送端发送数据时,落进窗口的数据被发送,当接受端接受数据时,落进接收端窗口的数据将会被接受。由此可见可以通过窗口大小限制流量 二、滑动窗口技术(限流使用到的技术) 1 TCP滑动窗口技术通过动态改变窗口大小来调节两台主机间的数据传输。每个T...

软件测试_Fiddler抓包工具一

多数资料摘抄至https://www.cnblogs.com/miantest/p/7289694.html 一、在 macOS 下如何安装 (https://www.telerik.com/fiddler) 首先,Mac下需要使用.Net编译后的程序,需要用到跨平台的方案Mono(现阶段微软已推出跨平台的方案.Net Core,不过暂时只支持控制台程序)...

微信支付商户申请接入信息汇总【接入教程】

微信支付(商户功能)功能介绍 微信支付(商户功能),是公众平台向有出售物品需求的公众号提供推广销售、支付收款、经营分析的整套解决方案。 商户通过自定义菜单、关键字回复等方式向订阅用户推送商品消息,用户可在微信公众号中完成选购支付的流程。商户也可以把商品网页生成二维码,张贴在线下的场景,如车站和广告海报。用户扫描后可打开商品详情,在微信中直接购买。 场景及类...

.NetCore 入门篇:理解

(良心转载)原文地址:https://ken.io/note/dotnet-core-qucikstart-preface 一、.NET Core的诞生 聊 .NET Core,就不得不说他的爸爸 .NET。当年Java刚刚兴起,如火如荼,微软也非常推崇Java,当时Windows平台的Java虚拟机就是微软按照JVM标准实现的,据说也是当时性能最好的J...

基于kubernetes实现链路监控

介绍 官方文档:https://skywalking.apache.org/docs/main/latest/readme/ chart包地址:https://github.com/apache/skywalking-kubernetes 实践 Install released version using Helm repository 下载cha...

高并发的场景下,如何保证生产者投递到消息中间件的消息不丢失

  生产端如何保证消息不丢失的问题 在消息的生产端,如果投递的消息出去在网络传输过程中丢失,或者在RabbitMQ内存中,还没有写入磁盘的时候,发生宕机,都会导致生产端,投递到MQ的数据丢失。     保证消息不丢失的confirm机制 在生产端,首先要开启一个confirm机制, 接着投递到队列中的消息,如果MQ一旦将消息持久化到磁盘后,就必须要回传一个...