canal多库合并监控

本文档介绍了如何使用Canal实现多数据库实例合并监控,通过配置group-instance.xml,将多个物理instance整合为一个逻辑instance,便于在业务中仅用一个客户端连接就能消费多个库的bin-log信息,简化了在分库场景下的数据同步操作。
摘要由CSDN通过智能技术生成

官方文档:https://github.com/alibaba/canal/wiki/AdminGuide

主要针对需要进行多库合并时,可以将多个物理instance合并为一个逻辑instance,提供客户端访问。

    场景:分库业务。 比如产品数据拆分了4个库,每个库会有一个instance,如果不用group,业务上要消费数据时,需要启动4个客户端,分别链接4个instance实例。使用group后,可以在canal server上合并为一个逻辑instance,只需要启动1个客户端,链接这个逻辑instance即可。

基础的配置这里就不说了,可以看我上一篇文章。

修改conf下的配置文件

vim conf/example/instance.properties

 

 修改conf下的canal.properties

vim canal.properties

我们看一下group-instance.xml 的配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:lang="http://www.springframework.org/schema/lang"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"
        default-autowire="byName">

        <import resource="classpath:spring/base-instance.xml" />

        <bean id="instance" class="com.alibaba.otter.canal.instance.spring.CanalInstanceWithSpring">
                <property name="destination" value="${canal.instance.destination}" />
                <property name="eventParser">
                        <ref local="eventParser" />
                </property>
                <property name="eventSink">
                        <ref local="eventSink" />
                </property>
                <property name="eventStore">
                        <ref local="eventStore" />
                </property>
                <property name="metaManager">
                        <ref local="metaManager" />
                </property>
                <property name="alarmHandler">
                        <ref local="alarmHandler" />
                </property>
                <property name="mqConfig">
                        <ref local="mqConfig" />
                </property>
        </bean>

        <!-- 报警处理类 -->
        <bean id="alarmHandler" class="com.alibaba.otter.canal.common.alarm.LogAlarmHandler" />

        <bean id="metaManager" class="com.alibaba.otter.canal.meta.MemoryMetaManager" />

        <bean id="eventStore" class="com.alibaba.otter.canal.store.memory.MemoryEventStoreWithBuffer">
                <property name="bufferSize" value="${canal.instance.memory.buffer.size:16384}" />
                <property name="bufferMemUnit" value="${canal.instance.memory.buffer.memunit:1024}" />
                <property name="batchMode" value="${canal.instance.memory.batch.mode:MEMSIZE}" />
                <property name="ddlIsolation" value="${canal.instance.get.ddl.isolation:false}" />
                <property name="raw" value="${canal.instance.memory.rawEntry:true}" />
        </bean>

        <bean id="eventSink" class="com.alibaba.otter.canal.sink.entry.EntryEventSink">
                <property name="eventStore" ref="eventStore" />
                <property name="filterTransactionEntry" value="${canal.instance.filter.transaction.entry:false}"/>
        </bean>

        <bean id="eventParser" class="com.alibaba.otter.canal.parse.inbound.group.GroupEventParser">
                <property name="eventParsers">
                        <list>
                                <ref bean="eventParser1" />
                                <ref bean="eventParser2" />
                        </list>
                </property>
        </bean>

        <bean id="eventParser1" parent="baseEventParser">
                <property name="destination" value="${canal.instance.destination}" />
                <property name="slaveId" value="${canal.instance.mysql.slaveId:0}" />
                <!-- 心跳配置 -->
                <property name="detectingEnable" value="${canal.instance.detecting.enable:false}" />
                <property name="detectingSQL" value=
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值