浅谈:canal配置方式?canal什么意思
本文目录
- 浅谈:canal配置方式
- canal什么意思
- canal除了运河还有什么意思
- canal怎么翻译
- canal+Kafka实现mysql与redis数据同步
- canal什么意思
- canal是什么意思
- canal和river的区别
- canal同步MQ配置
浅谈:canal配置方式
canal配置方式有两种:
spring配置的原理是将整个配置抽象为两部分:
通过spring的PropertyPlaceholderConfigurer通过机制将两部分融合,生成一个instance实例对象,每个instance对应的组件都是相互独立的,互不影响。
properties配置文件分为两部分:
a.在canal.properties定义了canal.destinations后,需要在canal.conf.dir对应的目录下建立同名的文件
比如: canal.destinations = example1,example2 ,这时需要创建example1和example2两个目录,每个目录里各自有一份instance.properties.
ps. canal自带了一份instance.properties demo,可直接复制conf/example目录进行配置修改。
b. 如果canal.properties未定义instance列表,但开启了canal.auto.scan时
目前默认支持的xxx-instance.xml有四种:
spring/memory-instance.xml介绍:
spring/file-instance.xml介绍:
spring/default-instance.xml介绍:
spring/group-instance.xml介绍:
https://github.com/alibaba/canal/wiki/AdminGuide
canal什么意思
canaln.运河,沟渠; 管道; 气管; 食道; vt.建运河; 疏导;
canal除了运河还有什么意思
canal英 n.运河,沟渠; 管道; 气管; 食道; vt.建运河; 疏导; He would attach a cable around the chassis of the car and winch it up on to the canal bank. 他会把钢丝绳拴在汽车底盘上,用卷扬机把汽车吊到运河岸上。 复数:canals
canal怎么翻译
canal n. 运河,水道 vt. 开凿水道 有不明白的地方欢迎追问,如果满意,请采纳~ 谢谢!
canal+Kafka实现mysql与redis数据同步
前言
上篇文章简单介绍canal概念,本文结合常见的缓存业务去讲解canal使用。在实际开发过程中,通常都会把数据往redis缓存中保存一份,做下简单的查询优化。如果这时候数据库数据发生变更操作,就不得不在业务代码中写一段同步更新redis的代码,但是这种 数据同步的代码和业务代码糅合在一起 看起来不是很优雅,而且还会出现数据不一致问题。那能不能把这部分同步代码从中抽离出来,形成独立模块呢?答案是肯定的,下面通过canal结合Kafka来实现mysql与redis之间的数据同步。
架构设计
通过上述结构设计图可以很清晰的知道用到的组件:MySQL、Canal、Kafka、ZooKeeper、Redis。
Kafka&Zookeeper搭建
首先在 官网 下载Kafka:
下载后解压文件夹,可以看到以下几个文件:
Kafka内部自带了zookeeper,所以暂不需要去下载搭建zookeeper集群,本文就使用Kafka自带zookeeper来实现。
通过上述zookeeper启动命令以及Kafka启动命令把服务启动,可以通过以下简单实现下是否成功:
Canal搭建
canal搭建具体可以参考上文,这里只讲解具体的参数配置:
找到/conf目录下的canal.properties配置文件:
然后配置instance,找到/conf/example/instance.properties配置文件:
经过上述配置后,就可以启动canal了。
测试
环境搭建完成后,就可以编写代码进行测试。
1、引入pom依赖
2、封装Redis工具类
在application.yml文件增加以下配置:
封装一个操作Redis的工具类:
3、创建MQ消费者进行同步
创建一个CanalBean对象进行接收:
最后就可以创建一个消费者CanalConsumer进行消费:
测试Mysql与Redis同步
mysql对应的表结构如下:
启动项目后,新增一条数据:
可以在控制台看到以下输出:
如果更新呢?试一下Update语句:
同样可以在控制台看到以下输出:
经过测试完全么有问题。
总结
既然canal这么强大,难道就没缺点嘛?答案当然是存在的啦,比如:canal只能同步增量数据、不是实时同步而是准实时同步、MQ顺序问题等; 尽管有一些缺点,毕竟没有一样技术或者产品是完美的,最重要是合适。比如公司目前有个视图服务提供宽表搜索查询功能就是通过 同步Mysql数据到Es采用Canal+Kafka的方式来实现的。
canal什么意思
canal的意思:运河。
读音:英。
释义:
n. 运河; 管道;灌溉水渠
vt. 在…开凿运河
n. (Canal)人名;(英、法、西、意、葡)卡纳尔;(土)贾纳尔
变形:复数 canals。
同近义词:
pipeline/klong
n. 管道;灌溉水渠
canal造句如下:
1、The construction of the canal is a huge project.
修建运河是一项浩大的工程。
2、The patient has a lesion in his alimentary canal.
这个病人的消化道出现了病变。
3、I saw the Martian canal through an astronomical telescope.
我通过天文望远镜看到了火星运河。
4、The Beijing-Hangzhou Grand Canal has played a major role throughout Chinese history.
京杭大运河在整个中国历史上发挥了重要的作用。
5、Container ship wedged in Suez Canal.
货轮“卡死”苏伊士运河。
canal是什么意思
canal英 美 n.运河,沟渠; 管道; 气管; 食道vt.建运河; 疏导1. The rough rock walls were like the sides of a deep canal.凸凹不平的石墙就像一条很深的运河的河岸。来自柯林斯例句2. Long-mothballed projects like widening the Suez Canal are being dusted off.诸如拓宽苏伊士运河等长期束之高阁的计划正被重新采用。来自柯林斯例句3. Hearing can be affected by ear wax blocking the ear canal.耳垢堵塞耳道可能会影响听力。来自柯林斯例句
canal和river的区别
形成、储水量不同。1、形成上。canal是运河的意思,是人工开凿形成的,而river是江、河的意思,是天然形成的。2、储水量上。canal运河人工开凿的储水量有一定的限度,而river江、河的储水量是没有限度的。
canal同步MQ配置
第一步: canal原理是把自己伪装成一个mysql的从节点来读取mysql主库的binlog日志。 所以需要mysql主库先开启binlog日志功能。可以参考其他帖子打开binlog功能。 ps!!!!! 这里有一个非常值得注意的问题就是canal采集到MQ数据中使用的是binlog的的row模式 一定要是row模式。并且canal中配置canal.instance.filter.regex 如果配制指定采集某几个表一定要在mysql中配置binlog_rows_query_log_events是OFF模式的。否则canal中的canal.instance.filter.regex过滤器不生效。 第二步: canal服务解压之后 其中canal_local.properties是canal控制台配置文件 canal.properties 是canal基础服务配置文件 ht_order_sync文件夹 是canal的服务实例 ht_product_sync文件夹 是canal的服务实例 上面这些是比较关键的文件 其中ht_order_sync 和 ht_product_sync 是我自己创建的文件名字可以随便叫什么都可以 如果是全新的canal解压之后 有一个example文件那个就是样例文件。 我创建了 ht_order_sync 和 ht_product_sync 是因为我有两个业务需求是 同步订单业务 和 商品业务 所以创建了两个实例,canal启动之后会加载自己创建的文件夹。 cd 进入 ht_order_sync文件夹后 如下图 我们一般需要改的只有 instance.properties 这个文件。其他文件是记录binlog的同步位置的文件。删除之后就重置binlog的采集位置,所以不要轻易删除。 下面打开instance.properties 如下图 图中 1 是要采集的mysql的账号和密码 2 是要采集的哪张表可以配置全部也可以配置部分我是配置了部分表可以直接写库和表名,我库名用了变量后面讲怎么传进来的 3 是黑明单结合上面那个白名单用的 我固定了采集某几张表所以不要配置 4 是采集的每一行的变动会发送到配置的mq的topic中作为mysql的一条改动数据(增删改) mq数据如下图会包含改动前和改动后的数据表名库名等等。 上图是我做的一个insert的样例数据,type类型就是insert,还有update和delete 有字段类型描述 old 是改动前的数据 因为insert 操作所以是null 如果是update操作此处会有值 可以做变更监听逻辑 data是当前改动后的数据。 上面说的都是具体实例配置 下面贴出canal的实例上层配置文件也就是canal服务配置文件 canal.properties 如下图. 一张图截图放不下放了三张图 图上编号 1 是代表canal采集到信息推送到哪里。tcp是代表可以推送到程序采集模式 如果是mq配置成对应的mq比如 kafka活着rocketmq等等 2 是canal.destinations 扫描上面说的自己创建的实例 配置几个文件夹扫描几个 canal.auto.scan = true 的意思是自动扫描自己创建的实例。 所以应该可以把canal.auto.scan 配置成false然后配置canal.destinations自己创建的文件夹 即可 3 canal.mq.flatMessage = true 关注一下 采集的消息的消息方式之前好像不设置成true没采集到,已经忘了 也需要配置 mq读取 也使用这个方式。 可以参考一下官网等等。 4 配置成了rocketMQ那么就配置 相关的主题等等 结束
更多文章:
富士见寒冷前线指挥官ova(富士见二丁目交响乐团OVA 寒冷前线的指挥官好看吗)
2024年7月24日 02:05
4核cpu怎么显示只有2核(我的电脑设备管理器显示处理器有4个,但鲁大师却显示CPU只有2核这是怎么回事)
2024年9月16日 20:20
房东说有网络买个路由器就行(有网线但插上没用,房东说要买路由器才能上)
2023年9月3日 12:10
华为d20082是什么型号(我想问一下华为dub一al20是什么型号)
2023年11月14日 04:40
兄弟mfc7360加粉清零方法(brotherMFC7360打印机加墨粉后机器如何复位)
2024年5月24日 03:40
realme新机曝光(三月四号realme再出新机,如果是你们会选择吗)
2024年3月20日 20:45
鼠标明明是单击却变成双击(为什么鼠标会经常性的单击变成了双击)
2023年9月4日 09:20
yunos下载app(YunOS操作系统怎样下载应用程序刚入手的,感觉还不错,就是不知道怎么下载应用)
2023年12月6日 00:25
2022年rx580还值得买吗(1660/ti和RX580/590哪个更值得买)
2024年1月5日 12:50
迷你小型洗衣机哪个品牌好(小洗衣机什么牌子好 四款小洗衣机品牌型号推荐)
2024年6月6日 02:20
松下电压力锅值得买吗(电压力锅选哪个牌子好啊,看了个美的还有个松下,谁知道)
2024年6月9日 00:58