开发者社区 > 数据库 > 正文

canal server在同步binlog日志的时候表结构发生变化改怎么处理?

一直都在报这个错误:image.png
我只是想同步行级变化的数据内容,根据每一条变化的数据做业务处理。但是表结构发生变化这种应该怎么跳过?

展开
收起
hf3cmqntz5s4q 2024-09-01 10:07:56 104 0
3 条回答
写回答
取消 提交回答
  • 你这是改了表结构,元数据改了,只能更新Canal配置,清理Canal缓存后重跑
    image.png
    回答不易请采纳

    2024-09-01 20:49:56
    赞同 79 展开评论 打赏
  • canal的坑:CanalParseException: column size is not match for table
    解析线程阻塞问题
    这个基本是每个使用Canal的开发者的必踩之坑。$CANAL_HOME/conf/canal.properties配置文件中存在一行注释掉的配置:canal.instance.parser.parallelThreadSize = 16。该配置用于指定解析器实例并发线程数,如果注释了会导致解析线程阻塞,得到的结果就是什么都不会发生。
    注释解除即可,建议使用默认值16。
    image.png
    参考文档https://blog.csdn.net/BBinChina/article/details/115481605

    2024-09-01 16:37:24
    赞同 61 展开评论 打赏
  • 问题解决:
    1、在canal.properties里面配置tsdb的mysql数据库,具体配置如下:
    canal.instance.tsdb.enable = true
    canal.instance.tsdb.dir = ${canal.file.data.dir:../conf}/${canal.instance.destination:}

    canal.instance.tsdb.url = jdbc:h2:${canal.instance.tsdb.dir}/h2;CACHE_SIZE=1000;MODE=MYSQL;

    canal.instance.tsdb.url=jdbc:mysql://hadoop:3306/canal_tsdb
    canal.instance.tsdb.dbUsername = root
    canal.instance.tsdb.dbPassword = root

    canal.instance.tsdb.spring.xml = classpath:spring/tsdb/h2-tsdb.xml

    canal.instance.tsdb.spring.xml = classpath:spring/tsdb/mysql-tsdb.xml

    2、在数据库里面创建canal_tsdb数据库,数据库的用户需要有创建表的权限。
    create database canal_tsdb;

    image.png
    参考文档https://blog.csdn.net/weixin_40126236/article/details/103928950

    2024-09-01 14:11:58
    赞同 63 展开评论 打赏

数据库领域前沿技术分享与交流

相关电子书

更多
大规模日志数据平台架构面临的问题与挑战 立即下载
PostgresChina2018_赖思超_PostgreSQL10_hash索引的WAL日志修改版final 立即下载
Kubernetes下日志实时采集、存储与计算实践 立即下载