开发者社区> 问答> 正文

求教canal-adapter配置srcDataSources的作用是什么

在配置文件里已经配置了canal-server,为什么还要配置源数据库?如果是分库场景该怎么配置?求教。

我看了一下源码,好像是做数据回查用的,在es模块里不支持配置多个dataSourceKey是吗,求指教

原提问者GitHub用户standinhell

展开
收起
古拉古拉 2023-05-08 13:36:43 164 0
2 条回答
写回答
取消 提交回答
  • 一些场景无法直接从binlog dml的信息中直接提取到信息需要反查sql, srcDataSources是个map可以配置多个

    原回答者GitHub用户rewerma

    2023-05-09 17:42:22
    赞同 展开评论 打赏
  • 随心分享,欢迎友善交流讨论:)

    根据您的描述,在使用Canal-adapter时,您想知道srcDataSources的作用是什么,以及在分库场景下如何配置。

    srcDataSources是Canal-adapter配置文件中的一个参数,用于指定源数据库的连接信息。默认情况下,Canal-adapter会从Canal-server中获取binlog数据,然后将数据转换为目标系统可以处理的格式。然而,在某些情况下,Canal-server可能无法提供足够的信息来进行数据回查或其他操作。在这种情况下,您可以使用srcDataSources参数指定源数据库的连接信息,从而获得更多的数据。

    在分库场景下,您可以为每个分库配置不同的srcDataSources。例如,您可以按照以下方式配置Canal-adapter:

    canal.conf.dir = /path/to/canal/conf canal.destinations = mytest canal.instance.master.address = mysql_host:3306 canal.instance.dbUsername = canal canal.instance.dbPassword = canal canal.instance.defaultDatabaseName = mytest canal.instance.connectionCharset = UTF-8

    canal.instance.filter.regex = ...

    指定源数据库的连接信息

    数据源1

    canal.adapter.dbType = mysql canal.adapter.dbDriver = com.mysql.jdbc.Driver canal.adapter.dbUrl = jdbc:mysql://mysql_host:3306/db1 canal.adapter.dbUser = user1 canal.adapter.dbPassword = password1 canal.adapter.srcDataSources = ds1

    数据源2

    canal.adapter.dbType = mysql canal.adapter.dbDriver = com.mysql.jdbc.Driver canal.adapter.dbUrl = jdbc:mysql://mysql_host:3306/db2 canal.adapter.dbUser = user2 canal.adapter.dbPassword = password2 canal.adapter.srcDataSources = ds2

    指定目标系统的连接信息

    canal.adapter.es.cluster.name = my-es-cluster canal.adapter.es.cluster.addresses = 192.168.1.1:9300,192.168.1.2:9300 canal.adapter.es.username = elastic canal.adapter.es.password = changeme canal.adapter.es.index = mytest_user canal.adapter.es.type = user canal.adapter.es.id = id 在这个示例中,我们为两个分库配置了不同的srcDataSources。数据源1使用了ds1,数据源2使用了ds2。在Canal-adapter中,您可以使用这些数据源来获取更多的数据,然后将其同步到目标系统中。

    在ES adapter中,不支持配置多个dataSourceKey。因此,在分库场景中,如果需要使用多个数据源,您需要手动实现数据同步逻辑。例如,您可以在Canal-adapter中使用事件过滤器或其他方式来过滤或修改数据,然后将其发送到目标系统中,以实现数据同步。

    2023-05-08 13:55:37
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载