开发者社区> 问答> 正文

单机模式切换成HA canal-adapter报Outer adapter sync failed!

环境信息

canal version 1.1.3-alpha2 mysql version 5.7

问题描述

之前一直用单机模式跑过一段时间,从canal同步数据到es中,切换成HA后,仅在配置文件中加上了zk的集群的地址,启动后canal-adapter报Outer adapter sync failed! Error sync but ACK!

2019-02-18 10:01:18.859 ERROR 17709 --- [pool-1-thread-1] c.a.o.c.a.l.loader.CanalAdapterWorker : null

java.lang.NullPointerException: null at com.alibaba.otter.canal.adapter.launcher.loader.AbstractCanalAdapterWorker.batchSync(AbstractCanalAdapterWorker.java:203) ~[client-adapter.launcher-1.1.3-SNAPSHOT.jar:na] at com.alibaba.otter.canal.adapter.launcher.loader.AbstractCanalAdapterWorker.lambda$null$1(AbstractCanalAdapterWorker.java:61) ~[client-adapter.launcher-1.1.3-SNAPSHOT.jar:na] at java.util.ArrayList.forEach(ArrayList.java:1257) ~[na:1.8.0_181] at com.alibaba.otter.canal.adapter.launcher.loader.AbstractCanalAdapterWorker.lambda$null$2(AbstractCanalAdapterWorker.java:57) ~[client-adapter.launcher-1.1.3-SNAPSHOT.jar:na] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_181] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_181] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_181] at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_181]

2019-02-18 10:01:18.859 ERROR 17709 --- [ Thread-4] c.a.o.c.a.l.loader.CanalAdapterWorker : Outer adapter sync failed! Error sync but ACK! 2019-02-18 10:01:19.365 ERROR 17709 --- [pool-1-thread-1] c.a.o.c.a.l.loader.CanalAdapterWorker : null

java.lang.NullPointerException: null at com.alibaba.otter.canal.adapter.launcher.loader.AbstractCanalAdapterWorker.batchSync(AbstractCanalAdapterWorker.java:203) ~[client-adapter.launcher-1.1.3-SNAPSHOT.jar:na] at com.alibaba.otter.canal.adapter.launcher.loader.AbstractCanalAdapterWorker.lambda$null$1(AbstractCanalAdapterWorker.java:61) ~[client-adapter.launcher-1.1.3-SNAPSHOT.jar:na] at java.util.ArrayList.forEach(ArrayList.java:1257) ~[na:1.8.0_181] at com.alibaba.otter.canal.adapter.launcher.loader.AbstractCanalAdapterWorker.lambda$null$2(AbstractCanalAdapterWorker.java:57) ~[client-adapter.launcher-1.1.3-SNAPSHOT.jar:na] at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_181] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_181] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_181] at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_181]

2019-02-18 10:01:19.366 ERROR 17709 --- [ Thread-4] c.a.o.c.a.l.loader.CanalAdapterWorker : Outer adapter sync failed! Error sync but ACK!

删除canal service端conf目录下的h2.mv.db和meta.dat 则能正常启动

原提问者GitHub用户JunRzz

展开
收起
古拉古拉 2023-05-08 14:18:51 230 0
2 条回答
写回答
取消 提交回答
  • 升级最新代码,已经解决mq模式下ha无法切换的问题

    原回答者GitHub用户rewerma

    2023-05-09 17:56:00
    赞同 展开评论 打赏
  • 问题可能是 Canal Adapter for Elasticsearch 在 HA 模式下连接到 ZooKeeper 时发生了错误,导致启动失败。

    具体而言,错误信息中提到了 Outer adapter sync failed! Error sync but ACK! 以及 java.lang.NullPointerException,这意味着 Canal Adapter for Elasticsearch 在执行同步操作时遇到了错误,并且没有正确处理该错误。这个错误可能来自于配置文件中未正确设置的参数或者其他错误原因。

    针对这个问题,您可以尝试以下解决方法:

    确认 Canal Adapter for Elasticsearch 的版本是否与您使用的 Canal Server 版本兼容,并确认已经将 Canal Adapter for Elasticsearch 配置为 HA 模式。在 HA 模式下,Canal Adapter for Elasticsearch 需要正确配置相关参数,并正确连接到 ZooKeeper 才能正常运行。建议您查阅官方文档,了解如何正确配置 HA 模式的 Canal Adapter for Elasticsearch。

    确认您的 ZooKeeper 集群是否正常运行,并且 Canal Adapter for Elasticsearch 可以正确连接到 ZooKeeper。您可以通过检查 ZooKeeper 日志和 Canal Adapter for Elasticsearch 日志,查看是否有相关的错误或者警告信息。

    如果以上两种方法都无法解决问题,您可以尝试排除 Canal Adapter for Elasticsearch 的其他错误。根据错误信息,可以看出 Canal Adapter for Elasticsearch 在执行同步操作时发生了 NullPointerException,这可能是由于缺少必要的参数或者其他错误原因导致的。您可以通过仔细分析错误信息和日志文件,逐步排除错误,找到问题所在。

    2023-05-08 15:40:31
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

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