- 源端数据库有写入,但是目标端没有出现相应变更数据。
可能的原因
- 任务报错,同步任务未有效运行
- 数据库、表未配置到同步任务中
- 数据约束冲突,比如对端主键、唯一键、外键等约束冲突
- 对端有数据写入
- 使用了自定义代码进行了数据处理或存在数据过滤
- 特殊场景、负载下触发的 bug
- 特殊数据、结构触发的 bug
排除任务运行异常
排除结构约束不对等
- 对比数据所在数据库源端和目标端表结构,确认是否可能为约束冲突(如对端有唯一键或外键,源端没有)
排除自定义代码或过滤条件影响
- 任务详情,查看库表映射或自定代码管理,确认是否存在自定义代码或过滤条件
排除源端无写入
- 找到 1~5 条确认不一致的数据
- 查找数据在源端审计日志(可选)、变更日志(如 binlog )中是否存在
排除 CloudCanal 无写入
- 找到 1~5 条确认不一致的数据
- 查找数据在 CloudCanal 任务 apply_commit.log 中是否存在
排除对端有写入
- 找到 1~5 条确认不一致的数据
- 根据数据变更时间查找数据在目标端审计日志(可选)、变更日志(如binlog)中是否存在
Tips
- apply_commit.log 保存在 sidecar 容器中的 /home/clougence/logs/cloudcanal/tasks/${taskName}/ 目录下
- apply_commit.log 日志格式为: 事件类型$dbName$schemaName$tableName$主键值$对端数据源响应时间(单位ms)