开发者社区> 问答> 正文

canal adapter无法接收到ddl更新表结构数据

canal版本使用的master mysql5.6 canal adapter无法接收到ddl更新表结构数据,dml数据能接收到。

CanalConnector connector = CanalConnectors.newSingleConnector(new InetSocketAddress(AddressUtils.getHostIp(), 11111), "example", "canal", "canal"); ddl数据也无法获取

原提问者GitHub用户atjiucheng

展开
收起
古拉古拉 2023-05-08 14:22:47 139 0
2 条回答
写回答
取消 提交回答
  • adapter不会对ddl做处理,rdb配置为mirrorDB: true 可以同步库表,其它情况都需要手动修改映射配置

    原回答者GitHub用户rewerma

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

    如果Canal Adapter无法接收到DDL更新表结构数据,可能是因为以下原因:

    Canal Connector订阅表结构变化的权限不足。在Canal的配置文件中,需要设置Canal Connector订阅表结构变化的权限,例如:

    canal.instance.filter.regex = ... canal.instance.filter.table.regex = .*.test_table 其中,canal.instance.filter.regex指定了需要监控的数据库,canal.instance.filter.table.regex指定了需要监控的表,.*代表匹配所有表。如果没有正确地设置Canal Connector的订阅权限,就无法接收到DDL更新表结构数据。

    Canal Server没有正确地解析DDL更新表结构数据。需要确保Canal Server的版本与MySQL数据库的版本兼容,并且Canal Server的配置文件中设置了正确的解析规则。

    Canal Adapter没有正确地处理DDL更新表结构数据。需要确保Canal Adapter的版本与Canal Server的版本兼容,并且在Canal Adapter的配置文件中设置了正确的处理规则。

    在排除以上原因后,您可以尝试使用Canal命令行工具直接订阅Canal Server,并手动执行DDL更新表结构语句,观察是否能够正确地接收到DDL更新表结构数据。例如,可以使用以下命令:

    ./bin/canal.sh subscribe -h localhost -p 11111 -u canal -P canal -c example -f ".*.test_table" 其中,-h指定Canal Server的地址,-p指定Canal Server的端口,-u指定Canal Server的用户名,-P指定Canal Server的密码,-c指定Canal Server的实例名,-f指定需要监控的表。执行该命令后,手动执行一条DDL更新表结构的语句,观察是否能够正确地接收到DDL更新表结构数据。如果能够接收到,就说明问题出在Canal Adapter中;如果无法接收到,就需要进一步排查Canal Server和Canal Connector的配置。

    2023-05-08 14:50:57
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

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