canal 日志中经常会有日志信息
2019-08-14 15:02:24.843 [pool-2-thread-1] ERROR c.a.otter.canal.client.adapter.es.support.ESTemplate - [index_user_v4/j9SX_DfjTB6mcqmLCEH84g][[index_user_v4][0]] DocumentMissingException[[_doc][class757542]: document missing]
2019-08-14 15:02:24.843 [pool-2-thread-1] ERROR c.a.otter.canal.client.adapter.es.support.ESTemplate - [index_user_v4/j9SX_DfjTB6mcqmLCEH84g][[index_user_v4][0]] DocumentMissingException[[_doc][class757543]: document missing]
2019-08-14 15:02:24.843 [pool-2-thread-1] ERROR c.a.otter.canal.client.adapter.es.support.ESTemplate - [index_user_v4/j9SX_DfjTB6mcqmLCEH84g][[index_user_v4][0]] DocumentMissingException[[_doc][class757546]: document missing]
2019-08-14 15:02:24.843 [pool-2-thread-1] ERROR c.a.otter.canal.client.adapter.es.support.ESTemplate - [index_sch_dept_v4/05lvG7DGSdqF66rN81BxEA][[index_sch_dept_v4][0]] DocumentMissingException[[_doc][593887]: document missing]
分析一波可能产生的原因,目前我碰到的主要是这几点:
1.可能是当前写入数据库数据过多,有部分展示的数据未来得及传入 es,两边同步不一致,导致该信息的产生,等canal 将数据完全导入后,该信息可自动消失
2.可能是 canal 程序故障导致数据库数据没有导入到 es,可以查相应 index 中最近数据,对比数据库,找到相对应时间段重新导入,或者数据量不是很大的话可以直接全量导入(我是用 datax 完成从 mysql 导入 es 的,而且是测试环境,所以数据不一致的时候,写一个 shell 脚本执行命令,每次只需要一个 sh 命令就可以补全数据差了)
3.可能是关系表中的主表已经删除了该条数据,导致数据库和 es 中都没有该条记录,而其他表未删除相关的数据记录,所以其他表在对该数据相关联的数据有操作时,会关联到当前 index,两相查看都没有,所以也会显示这样的信息