同步数据表的一件小事

最近碰到了个小问题,再次记录一下 :

场景:

  • 目标: 将 sss库的A视图和B视图 同步到 aaa库同构的AB两表中。
  • A : 黑名单表
  • B:解除黑名单表
  • A和B的关系: A表有增有减, A中减少的就是B表中增加的。
  • 执行计划: 定时任务执行, 第一次全量拉取,以后增量拉取。
  • 增量拉去具体: 按时间戳拉取B表最新的数据,然后将这些数据再A表中删除,最后在按时间戳拉取A表。

问题:

  • B表少三条记录。

问题解决过程:

  • 突然有天增量拉取B表时,少3条记录。然后我以为是增量拉取过程中可能出问题了,然后将B表删干净了,重新全量拉取(通常全量拉取是没有问题的),结果仍然少了三条。
    然后用kettle拉取了一次,同样少了三条,我想这应该不是我的代码问题了。
  1. 我第一想到的是: “ 是不是有某个字段有了空数据或有脏数据? ”
    然后我就执行以下语句发现并没有少
    同步数据表的一件小事
    执行上述并没有发现问题。

  2. 然后尝试着去看看有没有id 重复的问题。(这个是一时没有想到的)
    同步数据表的一件小事
    如上述, 发现了问题, 原来是数据源的视图有 4个重复的id 。 还真是这个问题。刚好解释了我这少了三条数据的问题, 因为我这是表 id 为主键, 重复了当然插不进了。又因为对方是视图可以存在重复的数据,碰巧了这个问题。

count(distinct(id) ) 查询数据源 和我这边的目标也刚好对上。(当然这是后话。)

总结

以后碰到类似问题首先思路得放开,多方面想想问题的可能原因。详细了解问题。只有看清楚问题的真面目才可以解决它。
总之要有耐心。认真分析。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-04-22
  • 2022-12-23
  • 2021-08-19
  • 2022-12-23
  • 2021-05-24
  • 2022-12-23
猜你喜欢
  • 2021-04-06
  • 2022-01-18
  • 2021-10-15
  • 2022-12-23
  • 2021-06-25
  • 2022-02-17
  • 2021-06-29
相关资源
相似解决方案