开发者社区 > 数据库 > 关系型数据库 > 正文

canal监听的消息,业务系统接受到以后查数据库查不到

链路:

1.canal监听master

2.通过kafak投递变更消息

3.业务系统接收消息

4.根据变更主键id查询master数据 问题:

业务系统查询数据库,查询数据的视图非变更的视图 频次:

偶发非必现 排查: 业务系统触发变更update语句日志: xx:xx:07.280 业务系统日志,监听到变更为 ×x:xx;07.375 数据库落库的变更时间为 xx:xx:08 问题: 1.这种问题可能产生的原因是什么

2.是否通过canal的配置可以规避

展开
收起
pqg6ercivesci 2023-10-29 15:53:02 127 2
1 条回答
写回答
取消 提交回答
  • 问题1:
    从你描述的情况来看,这个问题可能是由于以下几个原因导致的:

    1. 数据延迟:Canal监听到的数据变更,可能在发送到Kafka并最终被业务系统接收到时,存在一定的延迟。这可能是由于网络传输、Kafka消费等原因导致的。

    2. 数据不一致:业务系统接收到的数据,可能与数据库中的实际数据不一致。这可能是由于数据在传输过程中发生丢失、重复或者乱序等原因导致的。

    3. 数据查询问题:业务系统查询的数据,可能不是Canal监听到的数据。这可能是由于业务系统的查询语句不正确,或者查询的数据库表不正确等原因导致的。

    问题2:
    是的,可以通过Canal的配置来规避这个问题。以下是一些可能的解决方案:

    1. 增加数据缓冲区大小:Canal的数据缓冲区用于存储接收到的数据变更。可以通过增加缓冲区的大小,以减少数据在缓冲区中的等待时间,从而减少数据的延迟。

    2. 优化数据传输:可以通过优化Canal的数据传输方式,例如使用更高效的协议、增加数据压缩等方式,以减少数据的传输延迟。

    3. 优化数据查询:可以通过优化业务系统的查询语句,或者修改查询的数据库表,以确保查询的数据与Canal监听到的数据一致。

    以上只是一些基本的解决方案,具体的配置可能需要根据实际情况进行调整。

    2023-10-30 15:36:31
    赞同 展开评论 打赏

阿里云关系型数据库主要有以下几种:RDS MySQL版、RDS PostgreSQL 版、RDS SQL Server 版、PolarDB MySQL版、PolarDB PostgreSQL 版、PolarDB分布式版 。

相关电子书

更多
阿里云数据库运维实战手册 立即下载
传统数据库上云最佳实践-友邦保险 立即下载
数据库游戏行业最佳实践 立即下载