兜底
当然前边三步做的所有工作,都是为了最后一步查询服务,但是如果前边的数据准备工作没处理好,那么就会出现ES数据和DB数据不一致问题,如果仅仅是为了引入ES、为了提高检索能力和性能而牺牲数据的准确性...对于第4点,一般业务上会使用开关主动降级和业务自动降级结合使用,主动降级是在配置平台手动操作开关闭合状态,从而实时控制业务中数据检索的数据来源,业务自动降级是基于主动降级的基础上,对ES检索进行兜底处理...),源数据源不停写,然后历史数据迁移结束后,停写源数据源,通过脚本或者增量日志进行数据最平,当然停机时间相对较短(停机时间取决于历史数据迁移时间内业务增量),对于核心业务数据迁移,在低峰期操作停写追平数据也是可以接受的...1.业务脚本
a.业务脚本迁移历史数据
通过程序批量从源数据源拉去数据,然后利用多线程或者批量同步数据到目标数据源中,并记录开始和结束位点和时间,需要注意的是对于目标数据源是单表的情况下建议使用持久层的批量插入...2.canal+业务脚本
a.业务脚本迁移历史数据
同样使用1中的历史数据迁移方式。