黄昏之鸟 2023-04-07 18:31 采纳率: 66.7%
浏览 47
已结题

canal同步es数据到数据库失败

使用canal增量同步es数据到mysql,配置出现问题
elasticsearch8.7和kibana8.7启动成功了,现在我想用canal同步es数据到数据库,求解决。
mysql 8.0 , canal 1.1.7,es8.7,kiban8.7
canal.adapter启动的时候报错
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'es-mapping' to com.alibaba.otter.canal.client.adapter.es.core.config.ESSyncConfig$ESMapping。

下面是canal.adapter \conf\application.yml的配置

server:
  port: 8081
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
    default-property-inclusion: non_null

canal.conf:
  mode: tcp #tcp kafka rocketMQ rabbitMQ
  flatMessage: true
  zookeeperHosts:
  syncBatchSize: 1000
  retries: -1
  timeout:
  accessKey:
  secretKey:
  consumerProperties:
    # canal tcp consumer
    canal.tcp.server.host: 127.0.0.1:11111
    canal.tcp.zookeeper.hosts:
    canal.tcp.batch.size: 500
    canal.tcp.username:
    canal.tcp.password:
    # kafka consumer
    kafka.bootstrap.servers: 127.0.0.1:9092
    kafka.enable.auto.commit: false
    kafka.auto.commit.interval.ms: 1000
    kafka.auto.offset.reset: latest
    kafka.request.timeout.ms: 40000
    kafka.session.timeout.ms: 30000
    kafka.isolation.level: read_committed
    kafka.max.poll.records: 1000
    # rocketMQ consumer
    rocketmq.namespace:
    rocketmq.namesrv.addr: 127.0.0.1:9876
    rocketmq.batch.size: 1000
    rocketmq.enable.message.trace: false
    rocketmq.customized.trace.topic:
    rocketmq.access.channel:
    rocketmq.subscribe.filter:
    # rabbitMQ consumer
    rabbitmq.host:
    rabbitmq.virtual.host:
    rabbitmq.username:
    rabbitmq.password:
    rabbitmq.resource.ownerId:

  srcDataSources:
    defaultDS:
      url: jdbc:mysql://127.0.0.1:3306/canal?useUnicode=true
      username: root
      password: root
      properties:
          jdbc.driverClassName: com.mysql.jdbc.Driver
  canalAdapters:
  - instance: example # canal instance Name or mq topic name
    groups:
    - groupId: g1
      outerAdapters:
      - name: logger
      - name: es7
        key: exampleKey
        hosts: 127.0.0.1:9200 # 127.0.0.1:9200 for rest mode
        properties:
          mode: transport # or rest
#          # security.auth: test:123456 #  only used for rest mode
          cluster.name: my-es

canal.adapter \conf\es7\mytest_user.yml的配置

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/213192368086151.png "#left")


dataSourceKey: defaultDS
outerAdapterKey: exampleKey     # 对应application.yml中es配置的key
destination: example
groupId: g1
esMapping:
  _index: rabbit-statis
  _id: _id
  sql: "select id as _id,project_name,class_name,show_num,refactor_path from statis"
  commitBatch: 3000

下面是配置好的,但是es的数据同步不到数据库

img

img

  • 写回答

6条回答 默认 最新

  • 关注

    基于最新版ChatGPT4的回答,望采纳!!!有其他问题也可以询问我哦、”(最新版更智能,功能更加强大)

    从错误日志来看,问题出在绑定 es-mappingESSyncConfig$ESMapping 类的过程中。这可能是因为配置文件中的配置格式有误。以下是一些建议:

    1. 确保 canal.adapter \conf\application.ymlcanal.adapter \conf\es7\mytest_user.yml 之间没有无关的空格或换行符。您的当前配置中似乎有一些换行符。

    2. 请确保 canal.adapter \conf\es7\mytest_user.yml 中的内容格式正确。根据您提供的配置,您可以试试以下更正后的配置:

      dataSourceKey: defaultDS
      outerAdapterKey: exampleKey
      destination: example
      groupId: g1
      esMapping:
        _index: rabbit-statis
        _id:
          _id: "id"
        sql: "select id as _id, project_name, class_name, show_num, refactor_path from statis"
        commitBatch: 3000
      

      这里,将 _id 下的配置改为了 _id: "id"。这是一个猜测,因为我没有您的完整代码。您可能需要根据实际情况对其进行调整。

    3. 检查您的 MySQL 配置是否正确。在 canal.adapter \conf\application.yml 文件中,您使用了 com.mysql.jdbc.Driver 作为驱动程序类名。然而,从 MySQL 8.0 开始,推荐使用 com.mysql.cj.jdbc.Driver。您可以尝试更改配置文件中的驱动程序类名:

      properties:
        jdbc.driverClassName: com.mysql.cj.jdbc.Driver
      
    4. 确保您的 MySQL 用户具有正确的权限。检查 canal 用户是否有读取和写入所需数据表的权限。

    5. 检查 Canal 服务和 Elasticsearch 服务是否在同一网络中并且可以相互访问。

    6. 查看 Canal Adapter 的日志以获取更多详细信息。可以尝试增加日志级别以查看更多的调试信息。

    7. 根据需求调整 canal.tcp.server.host 的地址,确保它指向正确的 Canal Server 地址。

    尝试以上建议后,如果问题仍然存在,请提供更多详细的日志信息以便我们进一步分析。

    评论

报告相同问题?

问题事件

  • 系统已结题 4月15日
  • 修改了问题 4月7日
  • 创建了问题 4月7日

悬赏问题

  • ¥15 lvgl v8.2定时器提前到来
  • ¥15 qtcp 发送数据时偶尔会遇到发送数据失败?用的MSVC编译器(标签-qt|关键词-tcp)
  • ¥15 cam_lidar_calibration报错
  • ¥15 拓扑学,凸集,紧集。。
  • ¥15 如何扩大AIS数据容量
  • ¥15 单纯型python实现编译报错
  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助